In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── │ # DibParser (Polyglot) ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ── [ 230.05ms - stdout ] ─────────────────────────────────────────────────────── │ 6.2.4 │ ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Lib #endif ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec open SpiralFileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── │ ## escapeCell (test) ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> SpiralSm.split "\n" |> Array.map (function | line when line |> SpiralSm.starts_with "\\#!" || line |> SpiralSm.starts_with "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assertEqual ( $"a{nl}#!magic{nl}b{nl}" ) ── [ 43.56ms - stdout ] ──────────────────────────────────────────────────────── │ "a │ #!magic │ b │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## magicMarker ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assertEqual ( Success ("#!", (), Position ("", 2, 1, 3)) ) ── [ 29.00ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "#!" │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ── [ 31.54ms - stdout ] ──────────────────────────────────────────────────────── │ Failure: │ Error in Ln: 1 Col: 1 │ ##!magic │ ^ │ Expecting: '#!' │ │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## magicCommand ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assertEqual ( Success ("magic", (), Position ("", 8, 2, 1)) ) ── [ 17.30ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "magic" │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ── [ 18.58ms - stdout ] ──────────────────────────────────────────────────────── │ Failure: │ Error in Ln: 1 Col: 1 │ #!magic │ ^ │ Expecting: '#!' │ │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## content ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assertEqual ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ── [ 16.14ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "#!magic │ │ │ a" │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## Output ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir ── markdown ──────────────────────────────────────────────────────────────────── │ ## Magic ── fsharp ────────────────────────────────────────────────────────────────────── type Magic = | Fsharp | Markdown | Spiral of Output | Magic of string ── markdown ──────────────────────────────────────────────────────────────────── │ ## kernelOutputs ── fsharp ────────────────────────────────────────────────────────────────────── let inline kernelOutputs magic = match magic with | Fsharp -> [[ Fs ]] | Markdown -> [[ Md ]] | Spiral output -> [[ output ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── │ ## Block ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : Magic content : string } ── markdown ──────────────────────────────────────────────────────────────────── │ ## block ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> let magic, content = match magic with | "fsharp" -> Fsharp, content | "markdown" -> Markdown, content | "spiral" -> let output = if content |> SpiralSm.contains "//// real\n" then Spir else Spi let content = if output = Spi then content else content |> SpiralSm.replace "//// real\n\n" "" |> SpiralSm.replace "//// real\n" "" Spiral output, content | magic -> magic |> Magic, content { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assertEqual ( Success ( { magic = Magic "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ── [ 42.62ms - stdout ] ──────────────────────────────────────────────────────── │ Success: { magic = Magic "magic" │ content = "a" } │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## blocks ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assertEqual ( Success ( [[ { magic = Magic "magic1"; content = "a" } { magic = Magic "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ── [ 28.05ms - stdout ] ──────────────────────────────────────────────────────── │ Success: [{ magic = Magic "magic1" │ content = "a" }; { magic = Magic "magic2" │ content = "b" }] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## formatBlock ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = Markdown; content = content } -> let markdownComment = match output with | Spi | Spir -> "/// " | Fs -> "/// " | _ -> "" content |> SpiralSm.split "\n" |> Array.map (SpiralSm.trim_end [[||]]) |> Array.filter (SpiralSm.ends_with " (test)" >> not) |> Array.map (function | "" -> markdownComment | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> SpiralSm.concat "\n" | Fs, { magic = Fsharp; content = content } -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content |> SpiralSm.split "\n" |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with "#r" >> not) |> SpiralSm.concat "\n" | (Spi | Spir), { magic = Spiral output'; content = content } when output' = output -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// /// c" ── [ 39.92ms - stdout ] ──────────────────────────────────────────────────────── │ "/// a │ /// │ /// b │ /// │ /// c" │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## formatBlocks ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (fun block -> block, formatBlock output block ) |> List.filter (snd >> (<>) "") |> fun list -> (list, (None, [[]])) ||> List.foldBack (fun (block, content) (lastMagic, acc) -> let lineBreak = if block.magic = Markdown && lastMagic <> Some Markdown && lastMagic <> None then "" else "\n" Some block.magic, $"{content}{lineBreak}" :: acc ) |> snd |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// c let a = 1 /// e let a = 3 " ── [ 46.76ms - stdout ] ──────────────────────────────────────────────────────── │ "/// a │ /// │ /// b │ │ /// c │ let a = 1 │ │ /// e │ let a = 3 │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## parse ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> let blocks = blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = Markdown ) match blocks with | { magic = Markdown; content = content } :: _ when output = Fs && content |> SpiralSm.starts_with "# " && content |> SpiralSm.ends_with ")" -> let inline indentBlock (block : Block) = { block with content = block.content |> SpiralSm.split "\n" |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> SpiralSm.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> SpiralSm.contains @"'""'" |> not && trimmedLine |> SpiralSm.ends_with "{" |> not && trimmedLine |> SpiralSm.ends_with "{|" |> not && trimmedLine |> SpiralSm.starts_with "}" |> not && trimmedLine |> SpiralSm.starts_with "|}" |> not match isMultiline, trimmedLine |> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> SpiralSm.starts_with "#" && block.magic = Fsharp -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> SpiralSm.starts_with " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> SpiralSm.concat "\n" } let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = Fsharp content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } blocks |> List.indexed |> List.fold (fun blocks (index, block) -> match index with | 0 -> blocks | 1 -> indentBlock block :: moduleBlock :: blocks | _ -> indentBlock block :: blocks ) [[]] |> List.rev | _ -> blocks |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral //// test inl x = 1i32 \#!spiral //// real inl x = 2i32 \#!spiral inl x = 3i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assertEqual $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ── [ 139.70ms - stdout ] ─────────────────────────────────────────────────────── │ "#if !INTERACTIVE │ namespace TestNamespace │ #endif │ │ module TestModule = │ │ /// ## ParserLibrary │ open System │ │ /// ### TextInput │ let str1 = "abc │ def" │ │ let str2 = │ "abc\ │ def" │ │ let str3 = │ $"1{ │ 1 │ }1" │ │ let str4 = │ $"1{({| │ a = 1 │ |}).a}1" │ │ let str5 = │ "abc \ │ def" │ │ let x = │ match '"' with │ | '"' -> true │ | _ -> false │ │ let long1 = """a""" │ │ let long2 = │ """ │ a │ """ │ │ type Position = │ { │ #if INTERACTIVE │ line : string │ #else │ line : int │ #endif │ column : int │ } │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assertEqual "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ── [ 119.16ms - stdout ] ─────────────────────────────────────────────────────── │ "# TestModule (TestNamespace) │ │ ## ParserLibrary │ │ ### TextInput │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 3i32 /// ### TextInput " ── [ 116.64ms - stdout ] ─────────────────────────────────────────────────────── │ "/// # TestModule (TestNamespace) │ │ /// ## ParserLibrary │ inl x = 3i32 │ │ /// ### TextInput │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spir |> Result.toOption |> Option.get |> (formatBlocks Spir) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 2i32 /// ### TextInput " ── [ 134.26ms - stdout ] ─────────────────────────────────────────────────────── │ "/// # TestModule (TestNamespace) │ │ /// ## ParserLibrary │ inl x = 2i32 │ │ /// ### TextInput │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## parseDibCode ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { trace Debug (fun () -> "parseDibCode") (fun () -> $"output: {output} / file: {file} / {_locals ()}") let! input = file |> SpiralFileSystem.read_all_text_async match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── │ ## writeDibCode ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { trace Debug (fun () -> "writeDibCode") (fun () -> $"output: {output} / path: {path} / {_locals ()}") let! result = parseDibCode output path let pathDir = path |> System.IO.Path.GetDirectoryName let fileNameWithoutExt = match output, path |> System.IO.Path.GetFileNameWithoutExtension with | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" | _, fileNameWithoutExt -> fileNameWithoutExt let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> SpiralSm.to_lower}" do! result |> SpiralFileSystem.write_all_text_async outputPath } ── markdown ──────────────────────────────────────────────────────────────────── │ ## Arguments ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ── [ 64.85ms - return value ] ────────────────────────────────────────────────── │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ FILE: │ │ <file> <fs|md|spi|spir> │ File │ │ OPTIONS: │ │ --help display this list of options. │ " │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## main ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> SpiralRuntime.split_args |> Result.toArray |> Array.collect id match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ── [ 125.71ms - return value ] ───────────────────────────────────────────────── │ <div class="dni-plaintext"><pre>0 │ </pre></div><style> │ .dni-code-hint { │ font-style: italic; │ overflow: hidden; │ white-space: nowrap; │ } │ .dni-treeview { │ white-space: nowrap; │ } │ .dni-treeview td { │ vertical-align: top; │ text-align: start; │ } │ details.dni-treeview { │ padding-left: 1em; │ } │ table td { │ text-align: start; │ } │ table tr { │ vertical-align: top; │ margin: 0em 0px; │ } │ table tr td pre │ { │ vertical-align: top !important; │ margin: 0em 0px !important; │ } │ table th { │ text-align: start; │ } │ </style> ── [ 126.49ms - stdout ] ─────────────────────────────────────────────────────── │ 00:00:03 d #1 writeDibCode / output: Fs / path: Builder.dib │ 00:00:03 d #2 parseDibCode / output: Fs / file: Builder.dib │ 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Builder (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildProject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildProject runtime outputDir path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let extension = fullPath |> System.IO.Path.GetExtension > > trace Debug > (fun () -> "buildProject") > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > > match extension with > | ".fsproj" -> () > | _ -> failwith "Invalid project file" > > let runtimes = > runtime > |> Option.map List.singleton > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > > let outputDir = outputDir |> Option.defaultValue "dist" > > return! > runtimes > |> List.map (fun runtime -> async { > let command = $@"dotnet publish ""{path}"" --configuration Release > --output ""{outputDir}"" --runtime {runtime}" > let! exitCode, _result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l6 = Some fileDir > } > ) > |> SpiralRuntime.execute_with_options_async > return exitCode > }) > |> Async.Sequential > |> Async.map Array.sum > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## persistCodeProject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCodeProject packages modules name hash code = async { > trace Debug > (fun () -> "persistCodeProject") > (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / > hash: {hash} / code.Length: {code |> String.length} / {_locals ()}") > > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > let targetDir = > let targetDir = workspaceRoot </> "target/Builder" </> name > match hash with > | Some hash -> targetDir </> "packages" </> hash > | None -> targetDir > targetDir |> System.IO.Directory.CreateDirectory |> ignore > > let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath > do! code |> SpiralFileSystem.write_all_text_exists filePath > > let modulesCode = > modules > |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}" > />""") > |> SpiralSm.concat "\n " > > let fsprojPath = targetDir </> $"{name}.fsproj" > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > <PropertyGroup> > <TargetFramework>net9.0</TargetFramework> > <LangVersion>preview</LangVersion> > <RollForward>Major</RollForward> > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > <PublishAot>false</PublishAot> > <PublishTrimmed>false</PublishTrimmed> > <PublishSingleFile>true</PublishSingleFile> > <SelfContained>true</SelfContained> > <Version>0.0.1-alpha.1</Version> > <OutputType>Exe</OutputType> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > <DefineConstants>_FREEBSD</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > <DefineConstants>_LINUX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > <DefineConstants>_OSX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > <DefineConstants>_WINDOWS</DefineConstants> > </PropertyGroup> > > <ItemGroup> > {modulesCode} > <Compile Include="{filePath}" /> > </ItemGroup> > > <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > </Project> > """ > do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath > > let paketReferencesPath = targetDir </> "paket.references" > let paketReferencesCode = > "FSharp.Core" :: packages > |> SpiralSm.concat "\n" > do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists > paketReferencesPath > > return fsprojPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildCode runtime packages modules outputDir name code = async { > let! fsprojPath = code |> persistCodeProject packages modules name None > let! exitCode = fsprojPath |> buildProject runtime outputDir > if exitCode <> 0 then > let! fsprojText = fsprojPath |> SpiralFileSystem.read_all_text_async > trace Critical > (fun () -> "buildCode") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / fsprojText: > {fsprojText} / {_locals ()}") > return exitCode > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + 1 |> ignore" > |> buildCode None [[]] [[]] None "test1" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 0) > > ── [ 8.95s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:01 d #1 persistCodeProject / packages: [] / > modules: [] / name: test1 / hash: / code.Length: 15 > │ 00:00:01 d #2 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj > │ 00:00:04 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64"; options = { > command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1" } } > │ 00:00:05 v #2 > Determining projects to restore... > │ 00:00:05 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:05 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:05 v #5 > Total time taken: 0 milliseconds > │ 00:00:05 v #6 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:06 v #7 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj > │ 00:00:06 v #8 > Starting restore process. > │ 00:00:06 v #9 > Total time taken: 0 milliseconds > │ 00:00:06 v #10 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 306 > ms). > │ 00:00:08 v #11 > > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning > FS0988: Main module of program is empty: nothing will happen when it is run > [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] > │ 00:00:09 v #12 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/linu > x-x64/test1.dll > │ 00:00:09 v #13 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/dist > │ 00:00:09 d #14 runtime.execute_with_options_async / { > exit_code = 0; output_length = 911 } > │ 00:00:09 d #15 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64"; options = { command > = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1" } } > │ 00:00:10 v #16 > Determining projects to restore... > │ 00:00:10 v #17 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:10 v #18 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:10 v #19 > Total time taken: 0 milliseconds > │ 00:00:10 v #20 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 263 > ms). > │ 00:00:12 v #21 > > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning > FS0988: Main module of program is empty: nothing will happen when it is run > [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] > │ 00:00:12 v #22 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/win- > x64/test1.dll > │ 00:00:13 v #23 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/dist > │ 00:00:13 d #24 runtime.execute_with_options_async / { > exit_code = 0; output_length = 701 } > │ Some 0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + a |> ignore" > |> buildCode None [[]] [[]] None "test2" > |> Async.runWithTimeout 180000 > |> _assertEqual (Some 2) > > ── [ 6.51s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:10 d #3 persistCodeProject / packages: [] / > modules: [] / name: test2 / hash: / code.Length: 15 > │ 00:00:10 d #4 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj > │ 00:00:13 d #25 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime linux-x64"; options = { > command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2" } } > │ 00:00:14 v #26 > Determining projects to restore... > │ 00:00:14 v #27 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:14 v #28 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:14 v #29 > Total time taken: 0 milliseconds > │ 00:00:14 v #30 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:14 v #31 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj > │ 00:00:14 v #32 > Starting restore process. > │ 00:00:14 v #33 > Total time taken: 0 milliseconds > │ 00:00:15 v #34 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 267 > ms). > │ 00:00:16 v #35 > > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error > FS0039: The value or constructor 'a' is not defined. > [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] > │ 00:00:17 d #36 runtime.execute_with_options_async / { > exit_code = 1; output_length = 704 } > │ 00:00:17 d #37 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64"; options = { command > = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2" } } > │ 00:00:17 v #38 > Determining projects to restore... > │ 00:00:17 v #39 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:17 v #40 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:17 v #41 > Total time taken: 0 milliseconds > │ 00:00:18 v #42 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 266 > ms). > │ 00:00:19 v #43 > > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error > FS0039: The value or constructor 'a' is not defined. > [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] > │ 00:00:19 d #44 runtime.execute_with_options_async / { > exit_code = 1; output_length = 496 } > │ 00:00:17 c #5 buildCode / code: 1 + a |> ignore / > fsprojText: <Project Sdk="Microsoft.NET.Sdk"> > │ <PropertyGroup> > │ <TargetFramework>net9.0</TargetFramework> > │ <LangVersion>preview</LangVersion> > │ <RollForward>Major</RollForward> > │ > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ <PublishAot>false</PublishAot> > │ <PublishTrimmed>false</PublishTrimmed> > │ <PublishSingleFile>true</PublishSingleFile> > │ <SelfContained>true</SelfContained> > │ <Version>0.0.1-alpha.1</Version> > │ <OutputType>Exe</OutputType> > │ </PropertyGroup> > │ > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> > │ <DefineConstants>_FREEBSD</DefineConstants> > │ </PropertyGroup> > │ > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Linux'))"> > │ <DefineConstants>_LINUX</DefineConstants> > │ </PropertyGroup> > │ > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('OSX'))"> > │ <DefineConstants>_OSX</DefineConstants> > │ </PropertyGroup> > │ > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Windows'))"> > │ <DefineConstants>_WINDOWS</DefineConstants> > │ </PropertyGroup> > │ > │ <ItemGroup> > │ > │ <Compile > Include="/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs" /> > │ </ItemGroup> > │ > │ <Import > Project="/home/runner/work/polyglot/polyglot/.paket/Paket.Restore.targets" /> > │ </Project> > │ > │ Some 2 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## readFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline readFile path = async { > let! code = path |> SpiralFileSystem.read_all_text_async > > let code = System.Text.RegularExpressions.Regex.Replace ( > code, > @"( *)(let\s+main\s+.*?\s*=)", > fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + > m.Groups.[[1]].Value + m.Groups.[[2]].Value > ) > > let codeTrim = code |> SpiralSm.trim_end [[||]] > return > if codeTrim |> SpiralSm.ends_with "\n()" > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3) > else code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile runtime packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let dir = fullPath |> System.IO.Path.GetDirectoryName > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) > name > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## persistFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistFile packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> persistCodeProject packages modules name None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] > Path of path : string > | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Path _ -> nameof Path > | Packages _ -> nameof Packages > | Modules _ -> nameof Modules > | Runtime _ -> nameof Runtime > | Persist_Only -> nameof Persist_Only > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 76.64ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]] > │ [--modules [<modules>...]] [--runtime > <runtime>] > │ [--persist-only] <path> > │ > │ PATH: > │ > │ <path> Path > │ > │ OPTIONS: > │ > │ --packages [<packages>...] > │ Packages > │ --modules [<modules>...] > │ Modules > │ --runtime <runtime> Runtime > │ --persist-only Persist_Only > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let path = > match argsMap.[[nameof Arguments.Path]] with > | [[ Arguments.Path path ]] -> Some path > | _ -> None > |> Option.get > > let packages = > match argsMap |> Map.tryFind (nameof Arguments.Packages) with > | Some [[ Arguments.Packages packages ]] -> packages > | _ -> [[]] > > let modules = > match argsMap |> Map.tryFind (nameof Arguments.Modules) with > | Some [[ Arguments.Modules modules ]] -> modules > | _ -> [[]] > > let runtime = > match argsMap |> Map.tryFind (nameof Arguments.Runtime) with > | Some [[ Arguments.Runtime runtime ]] -> Some runtime > | _ -> None > > let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only) > > if persistOnly > then path |> persistFile packages modules |> Async.map (fun _ -> 0) > else path |> buildFile runtime packages modules > |> Async.runWithTimeout (60000 * 60) > |> function > | Some exitCode -> exitCode > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 12.17s - return value ] ─────────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 12.17s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:17 d #6 persistCodeProject / packages: [Argu; > FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: > [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: > Builder / hash: / code.Length: 8210 > │ 00:00:17 d #7 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj > │ 00:00:20 d #45 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" > --configuration Release --output > "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64"; > options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" > --configuration Release --output > "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/Builder" } } > │ 00:00:20 v #46 > Determining projects to restore... > │ 00:00:21 v #47 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:21 v #48 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:21 v #49 > Total time taken: 0 milliseconds > │ 00:00:21 v #50 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:21 v #51 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj > │ 00:00:21 v #52 > Starting restore process. > │ 00:00:21 v #53 > Total time taken: 0 milliseconds > │ 00:00:22 v #54 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj (in > 291 ms). > │ 00:00:32 v #55 > Builder -> > /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9.0/li > nux-x64/Builder.dll > │ 00:00:32 v #56 > Builder -> > /home/runner/work/polyglot/polyglot/apps/builder/dist > │ 00:00:32 d #57 runtime.execute_with_options_async / { > exit_code = 0; output_length = 690 } > │ 00:00:42 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27115 } 00:00:42 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:42 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html 00:00:42 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:42 v #7 ! validate(nb) 00:00:43 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:43 v #9 ! return _pygments_highlight( 00:00:43 v #10 ! [NbConvertApp] Writing 335317 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html 00:00:43 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:00:43 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:00:43 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:43 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:43 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:43 d #16 spiral.run / dib / { exit_code = 0; result_length = 28076 }
In [ ]:
{ pwsh ../deps/spiral/apps/spiral/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral / hash: / code.Length: 1408659 targetDir: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/target/Builder/spiral Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @fbehrens Stand with Ukraine! https://standwithukraine.com.ua/ Parsing deps/spiral/deps/polyglot/target/Builder/spiral/spiral.fsproj... Project and references (14 source files) parsed in 3048ms Started Fable compilation... Fable compilation finished in 12702ms ./lib/spiral/common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(548,0): (548,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(2419,0): (2419,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(6923,0): (6923,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(16504,0): (16504,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral) Finished `release` profile [optimized] target(s) in 8.61s Running unittests spiral.rs (/home/runner/work/polyglot/spiral/workspace/target/release/deps/spiral-403ff7088a51856d) running 1 test test module_25e86a1a::Spiral::verify_app ... ok successes: successes: module_25e86a1a::Spiral::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral) Finished `release` profile [optimized] target(s) in 17.58s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DibParser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/argu > > ── [ 238.54ms - stdout ] ─────────────────────────────────────────────────────── > │ 6.2.4 > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open FParsec > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## escapeCell (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline escapeCell input = > input > |> SpiralSm.split "\n" > |> Array.map (function > | line when line |> SpiralSm.starts_with "\\#!" || line |> > SpiralSm.starts_with "\\#r" -> > System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") > | line -> line > ) > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > $"a{nl}\\#!magic{nl}b{nl}" > |> escapeCell > |> _assertEqual ( > $"a{nl}#!magic{nl}b{nl}" > ) > > ── [ 43.91ms - stdout ] ──────────────────────────────────────────────────────── > │ "a > │ #!magic > │ b > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## magicMarker > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicMarker : Parser<string, unit> = pstring "#!" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic" > |> run magicMarker > |> _assertEqual ( > Success ("#!", (), Position ("", 2, 1, 3)) > ) > > ── [ 28.06ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "#!" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "##!magic" > |> run magicMarker > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ── [ 30.55ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure: > │ Error in Ln: 1 Col: 1 > │ ##!magic > │ ^ > │ Expecting: '#!' > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## magicCommand > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicCommand = > magicMarker > >>. manyTill anyChar newline > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > a" > |> run magicCommand > |> _assertEqual ( > Success ("magic", (), Position ("", 8, 2, 1)) > ) > > ── [ 16.88ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "magic" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > " #!magic > > a" > |> run magicCommand > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ── [ 18.70ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure: > │ Error in Ln: 1 Col: 1 > │ #!magic > │ ^ > │ Expecting: '#!' > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## content > > ── fsharp ────────────────────────────────────────────────────────────────────── > let content = > (newline >>. magicMarker) <|> (eof >>. preturn "") > |> attempt > |> lookAhead > |> manyTill anyChar > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run content > |> _assertEqual ( > Success ("#!magic > > > a", (), Position ("", 14, 7, 1)) > ) > > ── [ 17.15ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "#!magic > │ > │ > │ a" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Output > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Output = > | Fs > | Md > | Spi > | Spir > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Magic > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Magic = > | Fsharp > | Markdown > | Spiral of Output > | Magic of string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## kernelOutputs > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline kernelOutputs magic = > match magic with > | Fsharp -> [[ Fs ]] > | Markdown -> [[ Md ]] > | Spiral output -> [[ output ]] > | _ -> [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Block > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block = > { > magic : Magic > content : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## block > > ── fsharp ────────────────────────────────────────────────────────────────────── > let block = > pipe2 > magicCommand > content > (fun magic content -> > let magic, content = > match magic with > | "fsharp" -> Fsharp, content > | "markdown" -> Markdown, content > | "spiral" -> > let output = if content |> SpiralSm.contains "//// real\n" > then Spir else Spi > let content = > if output = Spi > then content > else > content > |> SpiralSm.replace "//// real\n\n" "" > |> SpiralSm.replace "//// real\n" "" > Spiral output, content > | magic -> magic |> Magic, content > { > magic = magic > content = content > }) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run block > |> _assertEqual ( > Success ( > { magic = Magic "magic"; content = "a" }, > (), > Position ("", 14, 7, 1) > ) > ) > > ── [ 43.45ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: { magic = Magic "magic" > │ content = "a" } > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## blocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let blocks = > skipMany newline > >>. sepEndBy block (skipMany1 newline) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > > "#!magic1 > > a > > \#!magic2 > > b > > " > |> escapeCell > |> run blocks > |> _assertEqual ( > Success ( > [[ > { magic = Magic "magic1"; content = "a" } > { magic = Magic "magic2"; content = "b" } > ]], > (), > Position ("", 26, 9, 1) > ) > ) > > ── [ 28.05ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: [{ magic = Magic "magic1" > │ content = "a" }; { magic = Magic "magic2" > │ content = "b" }] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## formatBlock > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlock output (block : Block) = > match output, block with > | output, { magic = Markdown; content = content } -> > let markdownComment = > match output with > | Spi | Spir -> "/// " > | Fs -> "/// " > | _ -> "" > content > |> SpiralSm.split "\n" > |> Array.map (SpiralSm.trim_end [[||]]) > |> Array.filter (SpiralSm.ends_with " (test)" >> not) > |> Array.map (function > | "" -> markdownComment > | line -> System.Text.RegularExpressions.Regex.Replace (line, > "^\\s*", $"$&{markdownComment}") > ) > |> SpiralSm.concat "\n" > | Fs, { magic = Fsharp; content = content } -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else > content > |> SpiralSm.split "\n" > |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with > "#r" >> not) > |> SpiralSm.concat "\n" > | (Spi | Spir), { magic = Spiral output'; content = content } when output' = > output -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else content > | _ -> "" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > c > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1" > |> escapeCell > |> run block > |> function > | Success (block, _, _) -> formatBlock Fs block > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > /// > /// c" > > ── [ 38.26ms - stdout ] ──────────────────────────────────────────────────────── > │ "/// a > │ /// > │ /// b > │ /// > │ /// c" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## formatBlocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlocks output blocks = > blocks > |> List.map (fun block -> > block, formatBlock output block > ) > |> List.filter (snd >> (<>) "") > |> fun list -> > (list, (None, [[]])) > ||> List.foldBack (fun (block, content) (lastMagic, acc) -> > let lineBreak = > if block.magic = Markdown && lastMagic <> Some Markdown && > lastMagic <> None > then "" > else "\n" > Some block.magic, $"{content}{lineBreak}" :: acc > ) > |> snd > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1 > > \#!markdown > > d (test) > > \#!fsharp > > //// test > > let a = 2 > > \#!markdown > > e > > \#!fsharp > > let a = 3" > |> escapeCell > |> run blocks > |> function > | Success (blocks, _, _) -> formatBlocks Fs blocks > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > > /// c > let a = 1 > > /// e > let a = 3 > " > > ── [ 48.30ms - stdout ] ──────────────────────────────────────────────────────── > │ "/// a > │ /// > │ /// b > │ > │ /// c > │ let a = 1 > │ > │ /// e > │ let a = 3 > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## parse > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parse output input = > match run blocks input with > | Success (blocks, _, _) -> > let blocks = > blocks > |> List.filter (fun block -> > block.magic |> kernelOutputs |> List.contains output || > block.magic = Markdown > ) > > match blocks with > | { magic = Markdown; content = content } :: _ > when output = Fs > && content |> SpiralSm.starts_with "# " > && content |> SpiralSm.ends_with ")" > -> > let inline indentBlock (block : Block) = > { block with > content = > block.content > |> SpiralSm.split "\n" > |> Array.fold > (fun (lines, isMultiline) line -> > let trimmedLine = line |> SpiralSm.trim > if trimmedLine = "" > then "" :: lines, isMultiline > else > let inline singleQuoteLine () = > trimmedLine |> Seq.sumBy ((=) '"' >> > System.Convert.ToInt32) = 1 > && trimmedLine |> SpiralSm.contains > @"'""'" |> not > && trimmedLine |> SpiralSm.ends_with "{" > |> not > && trimmedLine |> SpiralSm.ends_with > "{|" |> not > && trimmedLine |> SpiralSm.starts_with > "}" |> not > && trimmedLine |> SpiralSm.starts_with > "|}" |> not > > match isMultiline, trimmedLine |> > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > | false, [[| _; _ |]] -> > $" {line}" :: lines, true > > | true, [[| _; _ |]] -> > line :: lines, false > > | false, _ when singleQuoteLine () -> > $" {line}" :: lines, true > > | false, _ when line |> SpiralSm.starts_with > "#" && block.magic = Fsharp -> > line :: lines, false > > | false, _ -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () && line |> > SpiralSm.starts_with " " -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () -> > line :: lines, false > > | true, _ -> > line :: lines, true > ) > ([[]], false) > |> fst > |> List.rev > |> SpiralSm.concat "\n" > } > > let moduleName, namespaceName = > System.Text.RegularExpressions.Regex.Match (content, @"# (.*) > \((.*)\)$") > |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value > > let moduleBlock = > { > magic = Fsharp > content = > $"#if !INTERACTIVE > namespace {namespaceName} > #endif > > module {moduleName} =" > } > > blocks > |> List.indexed > |> List.fold > (fun blocks (index, block) -> > match index with > | 0 -> blocks > | 1 -> indentBlock block :: moduleBlock :: blocks > | _ -> indentBlock block :: blocks > ) > [[]] > |> List.rev > | _ -> blocks > |> Result.Ok > | Failure (errorMsg, _, _) -> Result.Error errorMsg > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = > $"""#!meta > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > > \#!markdown > > # TestModule (TestNamespace) > > \#!fsharp > > \#!import file.dib > > \#!fsharp > > \#r "nuget:Expecto" > > \#!markdown > > ## ParserLibrary > > \#!fsharp > > open System > > \#!markdown > > ## x (test) > > \#!fsharp > > //// ignore > > let x = 1 > > \#!spiral > > //// test > > inl x = 1i32 > > \#!spiral > > //// real > > inl x = 2i32 > > \#!spiral > > inl x = 3i32 > > \#!markdown > > ### TextInput > > \#!fsharp > > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > \#!fsharp > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }}""" > |> escapeCell > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Fs > |> Result.toOption > |> Option.get > |> (formatBlocks Fs) > |> _assertEqual $"""#if !INTERACTIVE > namespace TestNamespace > #endif > > module TestModule = > > /// ## ParserLibrary > open System > > /// ### TextInput > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }} > """ > > ── [ 144.74ms - stdout ] ─────────────────────────────────────────────────────── > │ "#if !INTERACTIVE > │ namespace TestNamespace > │ #endif > │ > │ module TestModule = > │ > │ /// ## ParserLibrary > │ open System > │ > │ /// ### TextInput > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{ > │ 1 > │ }1" > │ > │ let str4 = > │ $"1{({| > │ a = 1 > │ |}).a}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = """a""" > │ > │ let long2 = > │ """ > │ a > │ """ > │ > │ type Position = > │ { > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ } > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Md > |> Result.toOption > |> Option.get > |> (formatBlocks Md) > |> _assertEqual "# TestModule (TestNamespace) > > ## ParserLibrary > > ### TextInput > " > > ── [ 117.89ms - stdout ] ─────────────────────────────────────────────────────── > │ "# TestModule (TestNamespace) > │ > │ ## ParserLibrary > │ > │ ### TextInput > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spi > |> Result.toOption > |> Option.get > |> (formatBlocks Spi) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 3i32 > > /// ### TextInput > " > > ── [ 120.84ms - stdout ] ─────────────────────────────────────────────────────── > │ "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 3i32 > │ > │ /// ### TextInput > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spir > |> Result.toOption > |> Option.get > |> (formatBlocks Spir) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 2i32 > > /// ### TextInput > " > > ── [ 130.65ms - stdout ] ─────────────────────────────────────────────────────── > │ "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 2i32 > │ > │ /// ### TextInput > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## parseDibCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parseDibCode output file = async { > trace Debug > (fun () -> "parseDibCode") > (fun () -> $"output: {output} / file: {file} / {_locals ()}") > let! input = file |> SpiralFileSystem.read_all_text_async > match parse output input with > | Result.Ok blocks -> return blocks |> formatBlocks output > | Result.Error msg -> return failwith msg > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## writeDibCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline writeDibCode output path = async { > trace Debug > (fun () -> "writeDibCode") > (fun () -> $"output: {output} / path: {path} / {_locals ()}") > let! result = parseDibCode output path > let pathDir = path |> System.IO.Path.GetDirectoryName > let fileNameWithoutExt = > match output, path |> System.IO.Path.GetFileNameWithoutExtension with > | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" > | _, fileNameWithoutExt -> fileNameWithoutExt > let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> > SpiralSm.to_lower}" > do! result |> SpiralFileSystem.write_all_text_async outputPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] > File of file : string * Output > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | File _ -> nameof File > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 65.28ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> > │ > │ FILE: > │ > │ <file> <fs|md|spi|spir> > │ File > │ > │ OPTIONS: > │ > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let files = > argsMap.[[nameof Arguments.File]] > |> List.map (function > | Arguments.File (path, output) -> path, output > ) > > files > |> List.map (fun (path, output) -> path |> writeDibCode output) > |> Async.Parallel > |> Async.Ignore > |> Async.runWithTimeout 30000 > |> function > | Some () -> 0 > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 131.26ms - return value ] ───────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 132.02ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:04 d #1 writeDibCode / output: Fs / path: > DibParser.dib > │ 00:00:04 d #2 parseDibCode / output: Fs / file: > DibParser.dib > │ 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 29860 } 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 v #7 ! validate(nb) 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:17 v #9 ! return _pygments_highlight( 00:00:18 v #10 ! [NbConvertApp] Writing 377352 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 30823 } 00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / code.Length: 10861 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser" } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 318 ms). 00:00:12 v #11 > DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll 00:00:12 v #12 > DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist 00:00:12 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 705 } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # JsonParser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open Parser > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## JsonParser > > ── fsharp ────────────────────────────────────────────────────────────────────── > (* > // -------------------------------- > JSON spec from http://www.json.org/ > // -------------------------------- > > The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase > it here: > > * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object` > or an `array`. > * These structures can be nested. > * A `string` is a sequence of zero or more Unicode characters, wrapped in double > quotes, using backslash escapes. > * A `number` is very much like a C or Java number, except that the octal and > hexadecimal formats are not used. > * A `boolean` is the literal `true` or `false` > * A `null` is the literal `null` > * An `object` is an unordered set of name/value pairs. > * An object begins with { (left brace) and ends with } (right brace). > * Each name is followed by : (colon) and the name/value pairs are separated by > , (comma). > * An `array` is an ordered collection of values. > * An array begins with [[ (left bracket) and ends with ]] (right bracket). > * Values are separated by , (comma). > * Whitespace can be inserted between any pair of tokens. > *) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * > Input>) = > match actual, expected with > | Success (_actual, _), Success _expected -> > printResult actual > _actual |> _assertEqual _expected > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 = > p2 -> > printResult actual > | _ -> > printfn $"Actual: {actual}" > printfn $"Expected: {expected}" > failwith "Parse failed" > actual > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JValue = > | JString of string > | JNumber of float > | JBool of bool > | JNull > | JObject of Map<string, JValue> > | JArray of JValue list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jValue, jValueRef = createParserForwardedToRef<JValue> () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jNull > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNull = > pstring "null" > >>% JNull > <?> "null" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jValue "null" > |> parserEqual (Success JNull) > > ── [ 166.37ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNull, { lines = [|"null"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNull, { lines = [|"null"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr> > </tr></thead><tbody><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"null"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ null > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 175.97ms - stdout ] ─────────────────────────────────────────────────────── > │ JNull > │ JNull > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNull "nulp" > |> parserEqual ( > Failure ( > "null", > "Unexpected 'p'", > { currentLine = "nulp"; line = 0; column = 3 } > ) > ) > > ── [ 55.43ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("null", "Unexpected > 'p'", { currentLine = "nulp"<br /> > line = 0<br /> column = 3 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"null" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 'p'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "nulp"<br /> line = 0<br /> column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"nulp" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 56.94ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:3 Error parsing null > │ nulp > │ ^Unexpected 'p' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jBool > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jBool = > let jtrue = > pstring "true" > >>% JBool true > let jfalse = > pstring "false" > >>% JBool false > > jtrue <|> jfalse > <?> "bool" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "true" > |> parserEqual (Success (JBool true)) > > ── [ 34.93ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JBool true, { lines = > [|"true"|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JBool true, { lines = [|"true"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JBool > true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"true"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ true > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 36.92ms - stdout ] ──────────────────────────────────────────────────────── > │ JBool true > │ JBool true > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "false" > |> parserEqual (Success (JBool false)) > > ── [ 31.70ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JBool false, { lines = > [|"false"|]<br /> position = { line = 0<br /> > column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JBool false, { lines = [|"false"|]<br /> > position = { line = 0<br /> column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JBool > false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"false"|]<br /> position = { line = 0<br /> > column = 5 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ false > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 5 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>5 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 33.70ms - stdout ] ──────────────────────────────────────────────────────── > │ JBool false > │ JBool false > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "truX" > |> parserEqual ( > Failure ( > "bool", > "Unexpected 't'", > { currentLine = "truX"; line = 0; column = 0 } > ) > ) > > ── [ 23.67ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("bool", "Unexpected > 't'", { currentLine = "truX"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"bool" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 't'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "truX"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"truX" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 25.01ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing bool > │ truX > │ ^Unexpected 't' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jUnescapedChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnescapedChar = > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "a" > |> parserEqual (Success 'a') > > ── [ 40.86ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('a', { lines = [|"a"|]<br > /> position = { line = 0<br /> column > = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(a, { lines = [|"a"|]<br /> position = { > line = 0<br /> column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'a' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"a"|]<br /> position = { line = 0<br /> column = 1 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ a > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 42.66ms - stdout ] ──────────────────────────────────────────────────────── > │ 'a' > │ 'a' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "\\" > |> parserEqual ( > Failure ( > "char", > "Unexpected '\\'", > { currentLine = "\\"; line = 0; column = 0 } > ) > ) > > ── [ 31.73ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("char", "Unexpected > '\'", { currentLine = "\"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"char" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '\'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "\"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"\" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 33.22ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing char > │ \ > │ ^Unexpected '\' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jEscapedChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jEscapedChar = > [[ > ("\\\"",'\"') > ("\\\\",'\\') > ("\\/",'/') > ("\\b",'\b') > ("\\f",'\f') > ("\\n",'\n') > ("\\r",'\r') > ("\\t",'\t') > ]] > |> List.map (fun (toMatch, result) -> > pstring toMatch >>% result > ) > |> choice > <?> "escaped char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\\\" > |> parserEqual (Success '\\') > > ── [ 27.41ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\\', { lines = > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\\"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \\ > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 29.63ms - stdout ] ──────────────────────────────────────────────────────── > │ '\\' > │ '\\' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\t" > |> parserEqual (Success '\t') > > ── [ 25.17ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\009', { lines = > [|"\t"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>( , { lines = [|"\t"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\009' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\t"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \t > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 26.95ms - stdout ] ──────────────────────────────────────────────────────── > │ '\009' > │ '\009' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\\" > |> parserEqual (Success '\\') > > ── [ 25.69ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\\', { lines = > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\\"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \\ > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 27.41ms - stdout ] ──────────────────────────────────────────────────────── > │ '\\' > │ '\\' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\n" > |> parserEqual (Success '\n') > > ── [ 29.35ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\010', { lines = [|"<br > />"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(<br />, { lines = [|"<br />"|]<br /> > position = { line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\010' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"<br />"|]<br /> position = { line = 0<br /> column = > 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ <br /> > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.13ms - stdout ] ──────────────────────────────────────────────────────── > │ '\010' > │ '\010' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "a" > |> parserEqual ( > Failure ( > "escaped char", > "Unexpected 'a'", > { currentLine = "a"; line = 0; column = 0 } > ) > ) > > ── [ 24.08ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("escaped char", "Unexpected > 'a'", { currentLine = "a"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"escaped char" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 'a'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "a"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"a" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 25.46ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing escaped char > │ a > │ ^Unexpected 'a' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jUnicodeChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnicodeChar = > let backslash = pchar '\\' > let uChar = pchar 'u' > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' > ]]) > let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit > > let inline convertToChar (((h1, h2), h3), h4) = > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char > > backslash >>. uChar >>. fourHexDigits > |>> convertToChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnicodeChar "\\u263A" > |> parserEqual (Success '☺') > > ── [ 37.54ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('☺', { lines = > [|"\u263A"|]<br /> position = { line = 0<br /> > column = 6 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(☺, { lines = [|"\u263A"|]<br /> position > = { line = 0<br /> column = 6 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'☺' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\u263A"|]<br /> position = { line = 0<br /> column = > 6 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \u263A > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 6 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>6 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 39.34ms - stdout ] ──────────────────────────────────────────────────────── > │ '☺' > │ '☺' > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jString > > ── fsharp ────────────────────────────────────────────────────────────────────── > let quotedString = > let quote = pchar '\"' <?> "quote" > let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar > > quote >>. manyChars jchar .>> quote > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jString = > quotedString > |>> JString > <?> "quoted string" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"\"" > |> parserEqual (Success (JString "")) > > ── [ 40.11ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "", { lines = > [|""""|]<br /> position = { line = > 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "", { lines = > [|""""|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > ""</code></span></summary><div><table><thead><tr></tr></thead><tbody>< > tr><td>Item</td><td><div class="dni-plaintext"><pre>"" > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""""|]<br /> position = { line = 0<br /> > column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 42.21ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "" > │ JString "" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"a\"" > |> parserEqual (Success (JString "a")) > > ── [ 28.81ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "a", { lines = > [|""a""|]<br /> position = { line = > 0<br /> column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "a", { lines = > [|""a""|]<br /> position = { line = 0<br /> > column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "a"</code></span></summary><div><table><thead><tr></tr></thead><tbody> > <tr><td>Item</td><td><div class="dni-plaintext"><pre>"a" > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""a""|]<br /> position = { line = 0<br /> > column = 3 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "a" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.09ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "a" > │ JString "a" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\"" > |> parserEqual (Success (JString "ab")) > > ── [ 27.64ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab", { lines = > [|""ab""|]<br /> position = { line = > 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab", { lines = > [|""ab""|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "ab"</code></span></summary><div><table><thead><tr></tr></thead><tbody > ><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab" > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""ab""|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 29.72ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab" > │ JString "ab" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\tde\"" > |> parserEqual (Success (JString "ab\tde")) > > ── [ 28.21ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab de", { lines = > [|""ab\tde""|]<br /> position = { > line = 0<br /> column = 8 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab de", { lines = > [|""ab\tde""|]<br /> position = { line = 0<br /> > column = 8 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString "ab > de"</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > td>Item</td><td><div class="dni-plaintext"><pre>"ab de" > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><t...ni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|""ab\tde""|]<br /> position = { line = 0<br /> > column = 8 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab\tde" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 8 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>8 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 30.31ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab de" > │ JString "ab de" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\u263Ade\"" > |> parserEqual (Success (JString "ab☺de")) > > ── [ 31.31ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab☺de", { lines = > [|""ab\u263Ade""|]<br /> position > = { line = 0<br /> column = 12 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab☺de", { lines = > [|""ab\u263Ade""|]<br /> position = { line = 0<br /> > column = 12 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead><tb > ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab☺de" > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>It...">< > summary><span class="dni-code-hint"><code>{ lines = > [|""ab\u263Ade""|]<br /> position = { line = 0<br /> > column = 12 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab\u263Ade" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 12 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>12 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 33.54ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab☺de" > │ JString "ab☺de" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNumber = > let optSign = opt (pchar '-') > > let zero = pstring "0" > > let digitOneNine = > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9" > > let digit = > satisfy Char.IsDigit "digit" > > let point = pchar '.' > > let e = pchar 'e' <|> pchar 'E' > > let optPlusMinus = opt (pchar '-' <|> pchar '+') > > let nonZeroInt = > digitOneNine .>>. manyChars digit > |>> fun (first, rest) -> string first + rest > > let intPart = zero <|> nonZeroInt > > let fractionPart = point >>. manyChars1 digit > > let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit > > let inline (|>?) opt f = > match opt with > | None -> "" > | Some x -> f x > > let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) = > let signStr = > optSign > |>? string > > let fractionPartStr = > fractionPart > |>? (fun digits -> "." + digits) > > let expPartStr = > expPart > |>? fun (optSign, digits) -> > let sign = optSign |>? string > "e" + sign + digits > > (signStr + intPart + fractionPartStr + expPartStr) > |> float > |> JNumber > > optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart > |>> convertToJNumber > <?> "number" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123" > |> parserEqual (Success (JNumber 123.0)) > > ── [ 45.60ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.0, { lines = > [|"123"|]<br /> position = { line = 0<br /> > column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br /> > position = { line = 0<br /> column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123"|]<br /> position = { line = 0<br /> > column = 3 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 47.47ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.0 > │ JNumber 123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123" > |> parserEqual (Success (JNumber -123.0)) > > ── [ 29.79ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123"|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123"|]<br > /> position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.69ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ── [ 32.64ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.4, { lines = > [|"123.4"|]<br /> position = { line = 0<br /> > column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.4, { lines = [|"123.4"|]<br > /> position = { line = 0<br /> column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4"|]<br /> position = { line = 0<br /> > column = 5 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 5 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>5 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 34.66ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.4 > │ JNumber 123.4 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123." > |> parserEqual (Success (JNumber -123.0)) > > ── [ 27.89ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123."|]<br /> position = { line = 0<br > /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123."|]<br > /> position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123."|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123. > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 29.84ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "00.1" > |> parserEqual (Success (JNumber 0.0)) > > ── [ 27.80ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 0.0, { lines = > [|"00.1"|]<br /> position = { line = 0<br /> > column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 0.0, { lines = [|"00.1"|]<br /> > position = { line = 0<br /> column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>0.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"00.1"|]<br /> position = { line = 0<br /> > column = 1 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 00.1 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 29.83ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 0.0 > │ JNumber 0.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let jNumber_ = jNumber .>> spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123" > |> parserEqual (Success (JNumber 123.0)) > > ── [ 29.22ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.0, { lines = > [|"123"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br /> > position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.12ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.0 > │ JNumber 123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123" > |> parserEqual (Success (JNumber -123.0)) > > ── [ 46.10ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123"|]<br > /> position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 48.40ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123." > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '.'", > { currentLine = "-123."; line = 0; column = 4 } > ) > ) > > ── [ 25.57ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure<br /> ("number andThen many1 > whitespace", "Unexpected '.'", { currentLine = > "-123."<br /> > line = 0<br /> column = > 4 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"number andThen many1 > whitespace" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '.'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "-123."<br /> line = 0<br /> column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"-123." > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 27.05ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:4 Error parsing number andThen many1 whitespace > │ -123. > │ ^Unexpected '.' > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ── [ 28.84ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.4, { lines = > [|"123.4"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.4, { lines = [|"123.4"|]<br > /> position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 30.74ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.4 > │ JNumber 123.4 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "00.4" > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '0'", > { currentLine = "00.4"; line = 0; column = 1 } > ) > ) > > ── [ 25.11ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure<br /> ("number andThen many1 > whitespace", "Unexpected '0'", { currentLine = > "00.4"<br /> > line = 0<br /> column = > 1 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"number andThen many1 > whitespace" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '0'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "00.4"<br /> line = 0<br /> column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"00.4" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 26.55ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:1 Error parsing number andThen many1 whitespace > │ 00.4 > │ ^Unexpected '0' > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123e4" > |> parserEqual (Success (JNumber 1230000.0)) > > ── [ 34.76ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = > [|"123e4"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 1230000.0, { lines = > [|"123e4"|]<br /> position = { line = 1<br /> column = > 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> > <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123e4"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123e4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 36.81ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 1230000.0 > │ JNumber 1230000.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e5" > |> parserEqual (Success (JNumber 12340000.0)) > > ── [ 28.88ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = > [|"123.4e5"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 12340000.0, { lines = > [|"123.4e5"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr > ><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4e5"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 30.74ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 12340000.0 > │ JNumber 12340000.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e-5" > |> parserEqual (Success (JNumber 0.001234)) > > ── [ 29.61ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = > [|"123.4e-5"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 0.001234, { lines = > [|"123.4e-5"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > td>Item</td><td><div class="dni-plaintext"><pre>0.001234 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNull</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJObject</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJArray</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4e-5"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.51ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 0.001234 > │ JNumber 0.001234 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jArray > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jArray = > let left = pchar '[[' .>> spaces > let right = pchar ']]' .>> spaces > let comma = pchar ',' .>> spaces > let value = jValue .>> spaces > > let values = sepBy value comma > > between left values right > |>> JArray > <?> "array" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2 ]]" > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]])) > > ── [ 70.74ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { lines > = [|"[ 1, 2 ]"|]<br /> > position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber > 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t > body><tr><td>0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>1.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsJBool</td><td><div > class="dni-plaintext"><pre>false > │ > </pre></div></td></tr><tr><td>IsJNull</td><td><div...td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> column > = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 72.75ms - stdout ] ──────────────────────────────────────────────────────── > │ JArray [JNumber 1.0; JNumber 2.0] > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2, ]]" > |> parserEqual ( > Failure ( > "array", > "Unexpected ','", > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 } > ) > ) > > ── [ 30.88ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("array", "Unexpected > ','", { currentLine = "[ 1, 2, ]"<br /> > line = 0<br /> column = 6 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"array" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected ','" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "[ 1, 2, ]"<br /> line = 0<br /> column = 6 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"[ 1, 2, ]" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>6 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 32.43ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:6 Error parsing array > │ [ 1, 2, ] > │ ^Unexpected ',' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jObject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jObject = > let left = spaces >>. pchar '{' .>> spaces > let right = pchar '}' .>> spaces > let colon = pchar ':' .>> spaces > let comma = pchar ',' .>> spaces > let key = quotedString .>> spaces > let value = jValue .>> spaces > > let keyValue = (key .>> colon) .>>. value > let keyValues = sepBy keyValue comma > > between left keyValues right > |>> Map.ofList > |>> JObject > <?> "object" > > ── fsharp ────────────────────────────────────────────────────────────────────── > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > jObject > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2 }""" > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "a", JNumber 1.0 > "b", JNumber 2.0 > ]] > ) > ) > ) > > ── [ 77.74ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject (map [("a", > JNumber 1.0); ("b", JNumber 2.0)]),<br /> { lines = [|"{ > "a":1, "b" : 2 }"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject (map [("a", JNumber 1.0); > ("b", JNumber 2.0)]), { lines = [|"{ "a":1, > "b" : 2 }"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject (map [("a", JNumber 1.0); > ("b", JNumber > 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t > body><tr><td><div class="dni-plaintext"><pre>"a" > │ </pre></div></td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>JNumber > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>1.0 > │ </pre></div></td></tr><tr><td>IsJString</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsJNumber</td>...hint"><code>{ > lines = [|"{ "a":1, "b" : 2 }"|]<br /> position > = { line = 1<br /> column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ { "a":1, "b" : > 2 } ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 79.85ms - stdout ] ──────────────────────────────────────────────────────── > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2, }""" > |> parserEqual ( > Failure ( > "object", > "Unexpected ','", > { currentLine = """{ "a":1, "b" : 2, }"""; line = 0; column = 18 } > ) > ) > > ── [ 32.43ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("object", "Unexpected > ','", { currentLine = "{ "a":1, "b" : 2, > }"<br /> line = 0<br /> > column = 18 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"object" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected ','" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "{ "a":1, "b" : 2, }"<br /> line = 0<br /> > column = 18 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"{ "a":1, > "b" : 2, }" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>18 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>IsSucces > s</td><td><div class="dni-plaintext"><pre>false > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>true > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 33.83ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:18 Error parsing object > │ { "a":1, "b" : 2, } > │ ^Unexpected ',' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = """{ > "name" : "Scott", > "isMale" : true, > "bday" : {"year":2001, "month":12, "day":25 }, > "favouriteColors" : [["blue", "green"]], > "emptyArray" : [[]], > "emptyObject" : {} > }""" > run jValue example1 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "name", JString "Scott" > "isMale", JBool true > "bday", JObject ( > Map.ofList [[ > "year", JNumber 2001.0 > "month", JNumber 12.0 > "day", JNumber 25.0 > ]] > ) > "favouriteColors", JArray [[ JString "blue"; JString "green" ]] > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > ]] > ) > ) > ) > > ── [ 135.12ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("bday",<br /> JObject<br /> (map<br /> > [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> > ("year", JNumber 2001.0)])); ("emptyArray", JArray []);<br > /> ("emptyObject", JObject (map []));<br /> > ("favouriteColors", > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("bday",<br /> JObject<br /> (map<br /> > [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> > ("year", JNumber 2001.0)])); ("emptyArray", JArray []);<br > /> ("emptyObject", JObject (map []));<br /> > ("favouriteColors", JArray [JString "blue"; JString > "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t > r><td>Item1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> [("bday",<br > /> JObject<br /> (map<br /> [("day", JNumber > 25.0); ("month", JNumber 12.0);<br /> ("year", > JNumber 2001.0)])); ("emptyArray", JArra...quot;name" : > "Scott",, "isMale" : true,, "bday" : > {"year":2001, "month":12, "day":25 },, > "favouriteColors" : ["blue", "green"],, > "emptyArray" : [],, "emptyObject" : {}, } > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 8<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>8 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 136.98ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("bday", > │ JObject > │ (map > │ [("day", JNumber 25.0); ("month", JNumber 12.0); > │ ("year", JNumber 2001.0)])); ("emptyArray", > JArray []); > │ ("emptyObject", JObject (map [])); > │ ("favouriteColors", JArray [JString "blue"; JString > "green"]); > │ ("isMale", JBool true); ("name", JString "Scott")]) > │ JObject > │ (map > │ [("bday", JObject (map [("day", JNumber 25.0); ("month", > JNumber 12.0); ("year", JNumber 2001.0)])); > │ ("emptyArray", JArray []); ("emptyObject", JObject (map > [])); > │ ("favouriteColors", JArray [JString "blue"; JString > "green"]); ("isMale", JBool true); ("name", JString "Scott")]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example2 = """{"widget": { > "debug": "on", > "window": { > "title": "Sample Konfabulator Widget", > "name": "main_window", > "width": 500, > "height": 500 > }, > "image": { > "src": "Images/Sun.png", > "name": "sun1", > "hOffset": 250, > "vOffset": 250, > "alignment": "center" > }, > "text": { > "data": "Click Here", > "size": 36, > "style": "bold", > "name": "text1", > "hOffset": 250, > "vOffset": 100, > "alignment": "center", > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" > } > }}""" > > run jValue example2 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "widget", JObject ( > Map.ofList [[ > "debug", JString "on" > "window", JObject ( > Map.ofList [[ > "title", JString "Sample Konfabulator Widget" > "name", JString "main_window" > "width", JNumber 500.0 > "height", JNumber 500.0 > ]] > ) > "image", JObject ( > Map.ofList [[ > "src", JString "Images/Sun.png" > "name", JString "sun1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 250.0 > "alignment", JString "center" > ]] > ) > "text", JObject ( > Map.ofList [[ > "data", JString "Click Here" > "size", JNumber 36.0 > "style", JString "bold" > "name", JString "text1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 100.0 > "alignment", JString "center" > "onMouseUp", JString "sun1.opacity = > (sun1.opacity / 100) * 90;" > ]] > ) > ]] > ) > ]] > ) > ) > ) > > ── [ 259.97ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> > (map<br /> [("alignment", JString > "center");<br /> > ("hOffset"...</code></span></summary><div><table><thead><tr></tr></the > ad><tbody><tr><td>Item</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> (map<br /> > [("alignment", JString "center"); ("hOffset", > JNumber 250.0);<br /> ("name", JString > "sun1"...</code></span></summary><div><table><thead><tr></tr></thead>< > tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> (... > "style": "bold",, "name": > "text1",, "hOffset": 250,, > "vOffset": 100,, "alignment": "center",, > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;", > }, }} ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 26<br > /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>26 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 261.91ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("widget", > │ JObject > │ (map > │ [("debug", JString "on"); > │ ("image", > │ JObject > │ (map > │ [("alignment", JString "center"); > ("hOffset", JNumber 250.0); > │ ("name", JString "sun1"); ("src", JString > "Images/Sun.png"); > │ ("vOffset", JNumber 250.0)])); > │ ("text", > │ JObject > │ (map > │ [("alignment", JString "center"); > │ ("data", JString "Click Here"); > ("hOffset", JNumber 250.0); > │ ("name", JString "text1"); > │ ("onMouseUp", > │ JString "sun1.opacity = (sun1.opacity / > 100) * 90;"); > │ ("size", JNumber 36.0); ("style", JString > "bold"); > │ ("vOffset", JNumber 100.0)])); > │ ("window", > │ JObject > │ (map > │ [("height", JNumber 500.0); ("name", > JString "main_window"); > │ ("title", JString "Sample Konfabulator > Widget"); > │ ("width", JNumber 500.0)]))]))]) > │ JObject > │ (map > │ [("widget", > │ JObject > │ (map > │ [("debug", JString "on"); > │ ("image", > │ JObject > │ (map > │ [("alignment", JString "center"); > ("hOffset", JNumber 250.0); ("name", JString "sun1"); > │ ("src", JString "Images/Sun.png"); > ("vOffset", JNumber 250.0)])); > │ ("text", > │ JObject > │ (map > │ [("alignment", JString "center"); ("data", > JString "Click Here"); ("hOffset", JNumber 250.0); > │ ("name", JString "text1"); ("onMouseUp", > JString "sun1.opacity = (sun1.opacity / 100) * 90;"); > │ ("size", JNumber 36.0); ("style", JString > "bold"); ("vOffset", JNumber 100.0)])); > │ ("window", > │ JObject > │ (map > │ [("height", JNumber 500.0); ("name", > JString "main_window"); > │ ("title", JString "Sample Konfabulator > Widget"); ("width", JNumber 500.0)]))]))]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example3 = """{ > "string": "Hello, \"World\"!", > "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > "number": 42, > "scientificNumber": 3.14e-10, > "boolean": true, > "nullValue": null, > "array": [[1, 2, 3, 4, 5]], > "unicodeString1": "프리마", > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > "specialCharacters": "!@#$%^&*()", > "emptyArray": [[]], > "emptyObject": {}, > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > "object": { > "nestedString": "Nested Value", > "nestedNumber": 3.14, > "nestedBoolean": false, > "nestedNull": null, > "nestedArray": [["a", "b", "c"]], > "nestedObject": { > "nestedProperty": "Nested Object Value" > } > }, > "nestedObjects": [[ > {"name": "Alice", "age": 25}, > {"name": "Bob", "age": 30} > ]] > }""" > run jValue example3 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "string", JString @"Hello, ""World""!" > "escapedString", JString @"This string contains > \/\\\b\f\n\r\t\""\'" > "number", JNumber 42.0 > "scientificNumber", JNumber 3.14e-10 > "boolean", JBool true > "nullValue", JNull > "array", JArray [[ > JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber > 5.0 > ]] > "unicodeString1", JString "프리마" > "unicodeString2", JString @"Hello, ""World""!" > "specialCharacters", JString "!@#$%^&*()" > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > "nestedArrays", JArray [[ > JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]] > JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]] > ]] > "object", JObject ( > Map.ofList [[ > "nestedString", JString "Nested Value" > "nestedNumber", JNumber 3.14 > "nestedBoolean", JBool false > "nestedNull", JNull > "nestedArray", JArray [[JString "a"; JString "b"; > JString "c"]] > "nestedObject", JObject ( > Map.ofList [[ > "nestedProperty", JString "Nested Object Value" > ]] > ) > ]] > ) > "nestedObjects", JArray [[ > JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber > 25.0 ]]) > JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber > 30.0 ]]) > ]] > ]] > ) > ) > ) > > ── [ 350.13ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("array",<br /> JArray<br /> [JNumber 1.0; > JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); ("emptyArray", JArray []);<br /> > ("emptyObject", JObject (map []));<br /> > ("escapedString", JString "This > s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool true); > ("emptyArray", JArray []);<br /> ("emptyObject", > JObject (map []));<br /> ("escapedString", JString "This > string contains \/\\\b\f<br />\r\t\"\'");<br /> > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool true); > ("emptyArray", JArray []);<br /> ("emptyObject", > JObject (map []));<br /> ("es...", "c"],, > "nestedObject": {, "nestedProperty": "Nested > Object Value", }, },, "nestedObjects": [, > {"name": "Alice", "age": 25},, > {"name": "Bob", "age": 30}, ], } > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 29<br > /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>29 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr><tr><td>IsSu > ccess</td><td><div class="dni-plaintext"><pre>true > │ </pre></div></td></tr><tr><td>IsFailure</td><td><div > class="dni-plaintext"><pre>false > │ </pre></div></td></tr></tbody></table></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 352.08ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("array", > │ JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber > 4.0; JNumber 5.0]); > │ ("boolean", JBool true); ("emptyArray", JArray []); > │ ("emptyObject", JObject (map [])); > │ ("escapedString", JString "This string contains > \/\\\b\f\n\r\t\"\'"); > │ ("nestedArrays", > │ JArray > │ [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; > │ JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ ("nestedObjects", > │ JArray > │ [JObject (map [("age", JNumber 25.0); ("name", > JString "Alice")]); > │ JObject (map [("age", JNumber 30.0); ("name", > JString "Bob")])]); > │ ("nullValue", JNull); ("number", JNumber 42.0); ...]) > │ JObject > │ (map > │ [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber > 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true); > │ ("emptyArray", JArray []); ("emptyObject", JObject (map > [])); > │ ("escapedString", JString "This string contains > \/\\\b\f\n\r\t\"\'"); > │ ("nestedArrays", > │ JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber > 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ ("nestedObjects", > │ JArray > │ [JObject (map [("age", JNumber 25.0); ("name", > JString "Alice")]); > │ JObject (map [("age", JNumber 30.0); ("name", > JString "Bob")])]); ("nullValue", JNull); > │ ("number", JNumber 42.0); ...]) > │ > │ 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 174814 } 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 v #7 ! validate(nb) 00:00:18 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:18 v #9 ! return _pygments_highlight( 00:00:19 v #10 ! [NbConvertApp] Writing 532492 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 175779 } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Parser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TextInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Position = > { > line : int > column : int > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let initialPos = { line = 0; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrCol (pos : Position) = > { pos with column = pos.column + 1 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrLine pos = > { line = pos.line + 1; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InputState = > { > lines : string[[]] > position : Position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline fromStr str = > { > lines = > if str |> String.IsNullOrEmpty > then [[||]] > else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]] > position = initialPos > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "" |> _assertEqual { > lines = [[||]] > position = { line = 0; column = 0 } > } > > ── [ 38.17ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [||] > │ position = { line = 0 > │ column = 0 } } > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "Hello \n World" |> _assertEqual { > lines = [[| "Hello "; " World" |]] > position = { line = 0; column = 0 } > } > > ── [ 18.26ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello "; " World"|] > │ position = { line = 0 > │ column = 0 } } > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline currentLine inputState = > let linePos = inputState.position.line > if linePos < inputState.lines.Length > then inputState.lines.[[linePos]] > else "end of file" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline nextChar input = > let linePos = input.position.line > let colPos = input.position.column > > if linePos >= input.lines.Length > then input, None > else > let currentLine = currentLine input > if colPos < currentLine.Length then > let char = currentLine.[[colPos]] > let newPos = incrCol input.position > let newState = { input with position = newPos } > newState, Some char > else > let char = '\n' > let newPos = incrLine input.position > let newState = { input with position = newPos } > newState, Some char > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello World" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ── [ 29.20ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello World"|] > │ position = { line = 0 > │ column = 1 } } > │ > │ Some 'H' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello"; ""; "World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ── [ 21.32ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello"; ""; "World"|] > │ position = { line = 0 > │ column = 1 } } > │ > │ Some 'H' > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Parser > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Input = InputState > type ParserLabel = string > type ParserError = string > > type ParserPosition = > { > currentLine : string > line : int > column : int > } > > type ParseResult<'a> = > | Success of 'a > | Failure of ParserLabel * ParserError * ParserPosition > > type Parser<'a> = > { > label : ParserLabel > parseFn : Input -> ParseResult<'a * Input> > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline printResult result = > match result with > | Success (value, input) -> > printfn $"%A{value}" > | Failure (label, error, parserPos) -> > let errorLine = parserPos.currentLine > let colPos = parserPos.column > let linePos = parserPos.line > let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}" > printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing > %s{label}\n%s{errorLine}\n%s{failureCaret}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline runOnInput parser input = > parser.parseFn input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline run parser inputStr = > runOnInput parser (fromStr inputStr) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parserPositionFromInputState (inputState : Input) = > { > currentLine = currentLine inputState > line = inputState.position.line > column = inputState.position.column > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getLabel parser = > parser.label > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline setLabel parser newLabel = > { > label = newLabel > parseFn = fun input -> > match parser.parseFn input with > | Success s -> Success s > | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<?>) = setLabel > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline satisfy predicate label = > { > label = label > parseFn = fun input -> > let remainingInput, charOpt = nextChar input > match charOpt with > | None -> > let err = "No more input" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > | Some first -> > if predicate first > then Success (first, remainingInput) > else > let err = $"Unexpected '%c{first}'" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Success ( > 'H', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 26.48ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('H', { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Failure ( > "H", > "Unexpected 'W'", > { > currentLine = "World" > line = 0 > column = 0 > } > ) > ) > > ── [ 22.69ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("H", "Unexpected 'W'", { currentLine = "World" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline bindP f p = > { > label = "unknown" > parseFn = fun input -> > match runOnInput p input with > | Failure (label, err, pos) -> Failure (label, err, pos) > | Success (value1, remainingInput) -> runOnInput (f value1) > remainingInput > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) p f = bindP f p > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Success ( > 'e', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 39.21ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('e', { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'W') "W" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Failure ( > "e", > "Unexpected 'o'", > { > currentLine = "World" > line = 0 > column = 1 > } > ) > ) > > ── [ 31.41ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("e", "Unexpected 'o'", { currentLine = "World" > │ line = 0 > │ column = 1 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline returnP x = > { > label = $"%A{x}" > parseFn = fun input -> Success (x, input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = returnP "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 17.87ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapP f = > bindP (f >> returnP) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<!>) = mapP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) x f = f <!> x > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser |>> string > runOnInput parser2 input |> _assertEqual ( > Success ( > "H", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 30.58ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("H", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline applyP fP xP = > fP >>= > fun f -> > xP >>= > fun x -> > returnP (f x) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<*>) = applyP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline lift2 f xP yP = > returnP f <*> xP <*> yP > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > "He", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 40.04ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("He", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline andThen p1 p2 = > p1 >>= > fun p1Result -> > p2 >>= > fun p2Result -> > returnP (p1Result, p2Result) > <?> $"{getLabel p1} andThen {getLabel p2}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (.>>.) = andThen > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = parser .>>. parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > ('H', 'e'), > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 32.31ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (('H', 'e'), { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline orElse p1 p2 = > { > label = $"{getLabel p1} orElse {getLabel p2}" > parseFn = fun input -> > match runOnInput p1 input with > | Success _ as result -> result > | Failure _ -> runOnInput p2 input > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<|>) = orElse > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = parser <|> parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 28.07ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('h', { lines = [|"hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice listOfParsers = > listOfParsers |> List.reduce (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = choice [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 45.66ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('h', { lines = [|"hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec sequence parserList = > match parserList with > | [[]] -> returnP [[]] > | head :: tail -> (lift2 cons) head (sequence tail) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = sequence [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > [[ 'H'; 'e' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 34.94ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'], { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec parseZeroOrMore parser input = > match runOnInput parser input with > | Failure (_, _, _) -> > [[]], input > | Success (firstValue, inputAfterFirstParse) -> > let subsequentValues, remainingInput = parseZeroOrMore parser > inputAfterFirstParse > firstValue :: subsequentValues, remainingInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many parser = > { > label = $"many {getLabel parser}" > parseFn = fun input -> Success (parseZeroOrMore parser input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many parser > runOnInput parser2 input |> _assertEqual ( > Success ( > [[]], > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 23.79ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ([], { lines = [|"hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 p = > p >>= > fun head -> > many p >>= > fun tail -> > returnP (head :: tail) > <?> $"many1 {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many1 parser > runOnInput parser2 input |> _assertEqual ( > Failure ( > "many1 H", > "Unexpected 'h'", > { > currentLine = "hello" > line = 0 > column = 0 > } > ) > ) > > ── [ 37.98ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt p = > let some = p |>> Some > let none = returnP None > (some <|> none) > <?> $"opt {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = opt parser > runOnInput parser2 input |> _assertEqual ( > Success ( > None, > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 28.17ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (None, { lines = [|"hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) p1 p2 = > p1 .>>. p2 > |> mapP fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) p1 p2 = > p1 .>>. p2 > |> mapP snd > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between p1 p2 p3 = > p1 >>. p2 .>> p3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "[[Hello]]" > let parser = > between > (satisfy (fun c -> c = '[[') "[[") > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> > List.contains c) "letter")) > (satisfy (fun c -> c = ']]') "]]") > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "[[Hello]]" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 93.33ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|] > │ position = { line = 0 > │ column = 7 > } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 p sep = > let sepThenP = sep >>. p > p .>>. many sepThenP > |>> fun (p, pList) -> p :: pList > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy p sep = > sepBy1 p sep <|> returnP [[]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello,World" > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy > (fun c -> c = ',') "comma") > runOnInput parser input |> _assertEqual ( > Success ( > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] > ]], > { > lines = [[| "Hello,World" |]] > position = { line = 1; column = 0 } > } > ) > ) > > ── [ 65.00ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; > 'd'; '\010']], { lines = [|"Hello,World"|] > │ > position = { line = 1 > │ > > column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pchar charToMatch = > satisfy ((=) charToMatch) $"%c{charToMatch}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline anyOf listOfChars = > listOfChars > |> List.map pchar > |> choice > <?> $"anyOf %A{listOfChars}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 38.11ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 > } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline charListToStr charList = > charList |> List.toArray |> String > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars cp = > many cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars1 cp = > many1 cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 42.19ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pstring str = > str > |> List.ofSeq > |> List.map pchar > |> sequence > |> mapP charListToStr > <?> str > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 40.22ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let whitespaceChar = > satisfy Char.IsWhiteSpace "whitespace" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces = many whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 = many1 whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr " Hello" > let parser = spaces1 .>>. pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > ([[ ' '; ' ' ]], "Hello"), > { > lines = [[| " Hello" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 44.95ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (([' '; ' '], "Hello"), { lines = [|" Hello"|] > │ position = { line = 0 > │ column = 7 } > }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let digitChar = > satisfy Char.IsDigit "digit" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = digitChar > runOnInput parser input |> _assertEqual ( > Failure ( > "digit", > "Unexpected 'H'", > { > currentLine = "Hello" > line = 0 > column = 0 > } > ) > ) > > ── [ 19.82ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pint = > let inline resultToInt (sign, digits) = > let i = int digits > match sign with > | Some ch -> -i > | None -> i > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits > |> mapP resultToInt > <?> "integer" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pint "-123" > |> _assertEqual ( > Success ( > -123, > { > lines = [[| "-123" |]] > position = { line = 0; column = 4 } > } > ) > ) > > ── [ 19.72ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (-123, { lines = [|"-123"|] > │ position = { line = 0 > │ column = 4 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pfloat = > let inline resultToFloat (((sign, digits1), point), digits2) = > let fl = float $"{digits1}.{digits2}" > match sign with > | Some ch -> -fl > | None -> fl > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > |> mapP resultToFloat > <?> "float" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pfloat "-123.45" > |> _assertEqual ( > Success ( > -123.45, > { > lines = [[| "-123.45" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 25.15ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (-123.45, { lines = [|"-123.45"|] > │ position = { line = 0 > │ column = 7 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline createParserForwardedToRef<'a> () = > let mutable parserRef : Parser<'a> = > { > label = "unknown" > parseFn = fun _ -> failwith "unfixed forwarded parser" > } > > let wrapperParser = > { parserRef with > parseFn = fun input -> runOnInput parserRef input > } > > wrapperParser, (fun v -> parserRef <- v) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) p x = > p > |>> fun _ -> x 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33524 } 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:15 v #7 ! validate(nb) 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:16 v #9 ! return _pygments_highlight( 00:00:16 v #10 ! [NbConvertApp] Writing 413727 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 34481 } 00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib 00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Parser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: JsonParser.dib
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Supervisor (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sendJson > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendJson (port : int) (json : string) = async { > let host = "127.0.0.1" > let! portOpen = SpiralNetworking.test_port_open host port > if portOpen then > try > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > do! connection.StartAsync () |> Async.AwaitTask > let! result = connection.InvokeAsync<string> ("ClientToServerMsg", > json) |> Async.AwaitTask > do! connection.StopAsync () |> Async.AwaitTask > trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> > Option.map (SpiralSm.ellipsis_end 200)}") _locals > return Some result > with ex -> > trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > SpiralSm.format_exception}") _locals > return None > else > trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: > port not open") _locals > return None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sendObj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendObj port obj = > obj > |> System.Text.Json.JsonSerializer.Serialize > |> sendJson port > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCPos > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {| line : int; character : int |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TracedError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {| trace : string list; message : string |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClientErrorsRes > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {| uri : string; errors : RString list |} > | TokenizerErrors of {| uri : string; errors : RString list |} > | ParserErrors of {| uri : string; errors : RString list |} > | TypeErrors of {| uri : string; errors : RString list |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### awaitCompiler > > ── fsharp ────────────────────────────────────────────────────────────────────── > let awaitCompiler port cancellationToken = async { > let host = "127.0.0.1" > let struct (ct, disposable) = cancellationToken |> > SpiralThreading.new_disposable_token > let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async > > let compiler = MailboxProcessor.Start (fun inbox -> async { > let! availablePort = SpiralNetworking.get_available_port (Some 180) host > port > if availablePort <> port then > inbox.Post (port, false) > else > let compilerPath = > workspaceRoot </> "deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release" > |> System.IO.Path.GetFullPath > > let dllPath = compilerPath </> "Spiral.dll" > > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = $@"dotnet ""{dllPath}"" --port {availablePort} > --default-int i32 --default-float f64" > l1 = Some ct > l3 = Some (fun struct (_, line, _) -> async { > if line |> SpiralSm.contains > $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address > already in use." then > inbox.Post (port, false) > > if line |> SpiralSm.contains $"Server bound to: > http://localhost:{availablePort}" then > let rec loop retry = async { > do! > SpiralNetworking.wait_for_port_access > (Some 100) true host availablePort > |> Async.runWithTimeoutAsync 500 > |> Async.Ignore > > let _locals () = $"port: {availablePort} / > retry: {retry} / {_locals ()}" > try > let pingObj = {| Ping = true |} > let! pingResult = pingObj |> sendObj > availablePort > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals > > match pingResult with > | Some _ -> inbox.Post (availablePort, > true) > | None -> do! loop (retry + 1) > with ex -> > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") > _locals > do! loop (retry + 1) > } > do! loop 1 > }) > l6 = Some workspaceRoot > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: > {exitCode} / result: {result}") _locals > disposable.Dispose () > }, ct) > > let! serverPort, managed = compiler.Receive () > > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > do! connection.StartAsync () |> Async.AwaitTask > > let event = Event<_> () > let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg |> > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > }) > () > > let disposable' = > new_disposable (fun () -> > async { > disposable'.Dispose () > do! connection.StopAsync () |> Async.AwaitTask > disposable.Dispose () > if managed > then do! > SpiralNetworking.wait_for_port_access (Some 100) false host > serverPort > |> Async.runWithTimeoutAsync 1500 > |> Async.Ignore > } > |> Async.RunSynchronously > ) > > return > serverPort, > stream, > ct, > disposable' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### getFilePathFromUri > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFilePathFromUri uri = > match System.Uri.TryCreate (uri, System.UriKind.Absolute) with > | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath > | _ -> failwith "invalid uri" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### getCompilerPort > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCompilerPort () = > 13805 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### serialize_obj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let serializeObj obj = > try > obj > |> FSharp.Json.Json.serialize > |> SpiralSm.replace "\\\\" "\\" > |> SpiralSm.replace "\\r\\n" "\n" > |> SpiralSm.replace "\\n" "\n" > with ex -> > trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") > _locals > "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Backend = > | Fsharp > | Cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### buildFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildFile backend timeout port cancellationToken path = > let rec loop retry = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> SpiralFileSystem.read_all_text_async > > let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ -> > true) > use _ = disposable > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, errors, ct, disposable = awaitCompiler port (Some > token) > use _ = disposable > > let outputFileName = > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > > let outputContentSeq = > stream > |> FSharp.Control.AsyncSeq.chooseAsync (function > | _, (FileSystem.FileSystemChange.Changed (path, Some text)) > when (path |> System.IO.Path.GetFileName) = outputFileName > -> > // fileDir </> path |> > SpiralFileSystem.read_all_text_retry_async > text |> Some |> Async.init > | _ -> None |> Async.init > ) > |> FSharp.Control.AsyncSeq.map (fun content -> > Some (content |> SpiralSm.replace "\r\n" "\n"), None > ) > > let printErrorData (data : {| uri : string; errors : RString list |}) = > let fileName = data.uri |> System.IO.Path.GetFileName > let errors = > data.errors > |> List.map snd > |> SpiralSm.concat "\n" > $"{fileName}:\n{errors}" > > let errorsSeq = > errors > |> FSharp.Control.AsyncSeq.choose (fun error -> > match error with > | FatalError message -> > Some (message, error) > | TracedError data -> > Some (data.message, error) > | PackageErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TokenizerErrors data when data.errors |> List.isEmpty |> not > -> > Some (data |> printErrorData, error) > | ParserErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TypeErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | _ -> None > ) > |> FSharp.Control.AsyncSeq.map (fun (message, error) -> > None, Some (message, error) > ) > > let timerSeq = > 500 > |> FSharp.Control.AsyncSeq.intervalMs > |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) > > let outputSeq = > [[ outputContentSeq; errorsSeq; timerSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! outputChild = > ((None, [[]], 0), outputSeq) > ||> FSharp.Control.AsyncSeq.scan ( > fun (outputContentResult, errors, typeErrorCount) > (outputContent, error) -> > trace Debug (fun () -> $"Supervisor.buildFile / > AsyncSeq.scan / path: {path} / errors: {errors |> serializeObj} / > outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / > retry: {retry} / error: {error} / outputContent:\n{outputContent |> > Option.defaultValue System.String.Empty |> SpiralSm.ellipsis_end 1500}") _locals > match outputContent, error with > | Some outputContent, None -> Some outputContent, errors, > typeErrorCount > | None, Some (_, FatalError "File main has a type error > somewhere in its path.") -> > outputContentResult, errors, typeErrorCount + 1 > | None, Some error -> outputContentResult, error :: errors, > typeErrorCount > | None, None when typeErrorCount >= 1 -> > outputContentResult, errors, typeErrorCount + 1 > | _ -> outputContentResult, errors, typeErrorCount > ) > |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, > errors, typeErrorCount) -> > trace Debug (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / path: {path} / errors: {errors |> serializeObj} / > typeErrorCount: {typeErrorCount} / retry: {retry} / > outputContent:\n{outputContent |> Option.defaultValue System.String.Empty |> > SpiralSm.ellipsis_end 1500}") _locals > #if INTERACTIVE > let errorWait = 2 > #else > let errorWait = 2 > #endif > match outputContent, errors with > | None, [[]] when typeErrorCount > errorWait -> false > | None, [[]] -> true > | _ -> false > ) > |> FSharp.Control.AsyncSeq.tryLast > |> Async.withCancellationToken ct > |> Async.catch > |> Async.runWithTimeoutAsync timeout > |> Async.StartChild > > // do! Async.Sleep 60 > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} > |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let backendId = > match backend with > | Fsharp -> "Fsharp" > | Cuda -> "Python + Cuda" > let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = > backendId |} |} > let! _buildFileResult = buildFileObj |> sendObj serverPort > > let! result, typeErrorCount = > outputChild > |> Async.map (function > | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> > (outputCode, errors |> List.distinct |> List.rev), > typeErrorCount > | Some (Error ex) -> > trace Critical (fun () -> $"Supervisor.buildFile / error: > {ex |> SpiralSm.format_exception} / retry: {retry}") _locals > (None, [[]]), 0 > | _ -> (None, [[]]), 0 > ) > > match result with > | None, _ when typeErrorCount > 0 && retry = 0 -> > return! loop (retry + 1) > | _ -> > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] > |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > let outputPath = fileDir </> outputFileName > return outputPath, result > } > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiralInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralInput = > | Spi of string * string option > | Spir of string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persistCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let persistCode (input: {| backend : Backend option; input: SpiralInput; > packages: string [[]] |}) = async { > let targetDir = workspaceRoot </> "target/spiral_Eval" > > let packagesDir = targetDir </> "packages" > > let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text > > let packageDir = packagesDir </> hashHex > packageDir |> System.IO.Directory.CreateDirectory |> ignore > > let moduleName = "main" > > let spirModule, spiModule = > match input.input with > | Spi (_spi, Some _spir) -> true, true > | Spi (_spi, None) -> false, true > | Spir _spir -> true, false > |> fun (spir, spi) -> > (if spir then $"{moduleName}_real*-" else ""), > if spi then moduleName else "" > > let libLinkTargetPath = workspaceRoot </> "lib/spiral" > let libLinkPath = packageDir </> "spiral" > > let packagesModule = > input.packages > |> Array.map (fun package -> > let path = workspaceRoot </> package > let packageName = path |> System.IO.Path.GetFileName > let libLinkPath = packageDir </> packageName > libLinkPath |> SpiralFileSystem.link_directory path > $"{packageName}-" > ) > |> String.concat "\n " > > let packageDir' = > if input.packages |> Array.isEmpty > then workspaceRoot </> "lib" > else > libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath > packageDir > > let spiprojPath = packageDir </> "package.spiproj" > let spiprojCode = > $"""packageDir: {packageDir'} > packages: > |core- > spiral- > {packagesModule} > modules: > {spirModule} > {spiModule} > """ > do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath > > let spirPath = packageDir </> $"{moduleName}_real.spir" > let spiPath = packageDir </> $"{moduleName}.spi" > > let spirCode, spiCode = > match input.input with > | Spi (spi, Some spir) -> Some spir, Some spi > | Spi (spi, None) -> None, Some spi > | Spir spir -> Some spir, None > > match spirCode with > | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath > | None -> () > match spiCode with > | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath > | None -> () > > let spiralPath = > match input.input with > | Spi _ -> spiPath > | Spir _ -> spirPath > match input.backend with > | None -> return spiralPath, None > | Some backend -> > let outputFileName = > let fileName = > match input.input with > | Spi _ -> moduleName > | Spir _ -> $"{moduleName}_real" > match backend with > | Fsharp -> $"{fileName}.fsx" > | Cuda -> $"{fileName}.py" > let outputPath = packageDir </> outputFileName > if outputPath |> System.IO.File.Exists |> not > then return spiralPath, None > else > let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async > if oldCode <> (spiCode |> Option.defaultValue (spirCode |> > Option.defaultValue "")) > then return spiralPath, None > else > let! outputCode = outputPath |> > SpiralFileSystem.read_all_text_async > return spiralPath, Some (outputPath, outputCode |> > SpiralSm.replace "\r\n" "\n") > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### buildCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildCode backend packages isCache timeout cancellationToken input = async { > let! mainPath, outputCache = > persistCode {| input = input; backend = Some backend; packages = > packages |} > match outputCache with > | Some (outputPath, outputCode) when isCache -> return mainPath, > (outputPath, Some outputCode), [[]] > | _ -> > let! outputPath, (outputCode, errors) = mainPath |> buildFile backend > timeout None cancellationToken > return mainPath, (outputPath, outputCode), errors > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl app () = > console.write_line "text" > 1i32 > > inl main () = > app > |> dyn > |> ignore > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 15000 None > |> Async.runWithTimeout 15000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some """let rec closure1 () () : unit = > let v0 : (string -> unit) = System.Console.WriteLine > let v1 : string = "text" > v0 v1 > and closure0 () () : int32 = > let v0 : unit = () > let v1 : (unit -> unit) = closure1() > let v2 : unit = (fun () -> v1 (); v0) () > 1 > let v0 : (unit -> int32) = closure0() > () > """, > [[]] > ) > ) > > ── [ 4.02s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:07 v #1 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:05 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:08 v #2 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:05 v #2 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:05 v #3 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:05 v #4 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:08 v #3 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #4 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #5 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #6 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #7 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #8 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #9 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #10 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #11 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #12 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #13 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #14 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #15 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #16 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #17 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #18 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #19 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #20 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #21 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #22 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #23 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #24 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #25 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #26 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #27 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #28 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #29 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:06 v #5 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:08 v #30 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #31 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:08 v #32 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:03 v #1 Supervisor.sendJson / port: 13805 / json: > {"Ping":true} / result: > │ 00:00:03 v #2 Supervisor.awaitCompiler / Ping / result: > 'Some null' / port: 13805 / retry: 1 > │ 00:00:06 v #6 > Server bound to: http://localhost:13805 > │ 00:00:03 d #3 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:03 d #4 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:03 d #5 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:03 v #6 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"inl app () =\n console.write_line \u0022text\u0022\n > 1i32\n\ninl main > ...et/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc6 > 0aebd08a0d6/main.spi"}} / result: > │ 00:00:03 v #7 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b > 9dc60aebd08a0d6/main.spi"}} / result: > │ 00:00:04 d #8 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:04 d #9 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:04 d #10 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:04 d #11 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:05 d #12 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:05 d #13 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:05 d #14 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:05 d #15 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:06 d #16 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:06 d #17 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:06 d #18 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v0 : unit = () > │ let v1 : (unit -> unit) = closure1() > │ let v2 : unit = (fun () -> v1 (); v0) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ > │ 00:00:06 d #19 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v0 : unit = () > │ let v1 : (unit -> unit) = closure1() > │ let v2 : unit = (fun () -> v1 (); v0) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ > │ 00:00:06 v #20 Supervisor.sendJson / port: 13805 / json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/22ccd04317d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6" > ]}} / result: > │ 00:00:11 v #33 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:06 d #21 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some > │ (Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v0 : unit = () > │ let v1 : (unit -> unit) = closure1() > │ let v2 : unit = (fun () -> v1 (); v0) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ ", > │ []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot find `main` in file main." ]] > ) > ) > > ── [ 3.48s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:11 v #34 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:09 d #7 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:12 v #35 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #36 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:09 v #8 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:09 v #9 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:09 v #10 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:12 v #37 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #38 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #39 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #40 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #41 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #42 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #43 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #44 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #45 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #46 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #47 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #48 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #49 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #50 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #51 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #52 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #53 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #54 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #55 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #56 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #57 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #58 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #59 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:10 v #11 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:12 v #60 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #61 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:12 v #62 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:07 v #22 Supervisor.sendJson / port: 13805 / json: > {"Ping":true} / result: > │ 00:00:07 v #23 Supervisor.awaitCompiler / Ping / result: > 'Some null' / port: 13805 / retry: 1 > │ 00:00:10 v #12 > Server bound to: http://localhost:13805 > │ 00:00:07 d #24 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:07 d #25 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:07 d #26 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:07 v #27 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"","uri":"file:///home/runner/work/polyglot/polyglot/targ > et/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4 > d28170aa/main.spi"}} / result: > │ 00:00:07 v #28 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb3 > 3db55c4d28170aa/main.spi"}} / result: > │ 00:00:08 d #29 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:08 d #30 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:08 d #31 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:08 d #32 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:09 d #33 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:09 d #34 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:09 d #35 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:09 d #36 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:10 d #37 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:10 d #38 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:10 d #39 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((Cannot find > `main` in file main., FatalError "Cannot find `main` in file main.")) / > outputContent: > │ > │ 00:00:10 d #40 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi / errors: [ > │ [ > │ "Cannot find `main` in file main.", > │ { > │ "FatalError": "Cannot find `main` in file main." > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:10 v #41 Supervisor.sendJson / port: 13805 / json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/a65342ccc7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa" > ]}} / result: > │ 00:00:15 v #63 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:10 d #42 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["Cannot find `main` in file main."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1i32 / 0i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "An attempt to divide by zero has been detected at compile time." ]] > ) > ) > > ── [ 3.37s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:15 v #64 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:13 d #13 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:15 v #65 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #66 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:13 v #14 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:13 v #15 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:13 v #16 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:15 v #67 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #68 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #69 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #70 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #71 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #72 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #73 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #74 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #75 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #76 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #77 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #78 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #79 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #80 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #81 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #82 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #83 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #84 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #85 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #86 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #87 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #88 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #89 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #90 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:13 v #17 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:15 v #91 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #92 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:15 v #93 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:11 v #43 Supervisor.sendJson / port: 13805 / json: > {"Ping":true} / result: > │ 00:00:11 v #44 Supervisor.awaitCompiler / Ping / result: > 'Some null' / port: 13805 / retry: 1 > │ 00:00:13 v #18 > Server bound to: http://localhost:13805 > │ 00:00:11 d #45 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:11 d #46 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:11 d #47 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:11 v #48 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"inl main () =\n 1i32 / > 0i32\n","uri":"file:///home/runner/work/polyglot/p...et/spiral_Eval/packages/fef > 9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi"}} / > result: > │ 00:00:11 v #49 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4 > f27f88d2a5cdfb2/main.spi"}} / result: > │ 00:00:11 d #50 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:11 d #51 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:12 d #52 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:12 d #53 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:12 d #54 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:12 d #55 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:13 d #56 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:13 d #57 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:13 d #58 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:13 d #59 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:13 d #60 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((An attempt > to divide by zero has been detected at compile time., TracedError > │ { message = "An attempt to divide by zero has been detected > at compile time." > │ trace = > │ ["Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ 1i32 / 0i32 > │ ^ > │ "] })) / outputContent: > │ > │ 00:00:13 d #61 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi / errors: [ > │ [ > │ "An attempt to divide by zero has been detected at > compile time.", > │ { > │ "TracedError": { > │ "message": "An attempt to divide by zero has been > detected at compile time.", > │ "trace": [ > │ "Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ inl main () = > │ ^ > │ ", > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ 1i32 / 0i32 > │ ^ > │ " > │ ] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:13 v #62 Supervisor.sendJson / port: 13805 / json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/fef9812d9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2" > ]}} / result: > │ 00:00:18 v #94 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:13 d #63 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["An attempt to divide by zero has been detected > at compile time."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > 1 + "" > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Constraint satisfaction error. > Got: string > Fails to satisfy: number" > ]] > ) > ) > > ── [ 2.96s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:18 v #95 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:16 d #19 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:18 v #96 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #97 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:16 v #20 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:16 v #21 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:16 v #22 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:18 v #98 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #99 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #100 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #101 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #102 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #103 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #104 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #105 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #106 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #107 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #108 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #109 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:18 v #110 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #111 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #112 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #113 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #114 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #115 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #116 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #117 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #118 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #119 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #120 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:16 v #23 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:19 v #121 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #122 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #123 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:14 v #64 Supervisor.sendJson / port: 13805 / json: > {"Ping":true} / result: > │ 00:00:14 v #65 Supervisor.awaitCompiler / Ping / result: > 'Some null' / port: 13805 / retry: 1 > │ 00:00:17 v #24 > Server bound to: http://localhost:13805 > │ 00:00:14 d #66 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:14 d #67 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:14 d #68 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:14 v #69 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"inl main () =\n 1 \u002B > \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c030f > 84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} / > result: > │ 00:00:14 v #70 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e365519 > 9e42df713504aa0/main.spi"}} / result: > │ 00:00:14 d #71 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:14 d #72 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:15 d #73 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:15 d #74 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:15 d #75 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:15 d #76 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:16 d #77 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:16 d #78 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:16 d #79 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((File main > has a type error somewhere in its path., FatalError "File main has a type error > somewhere in its path.")) / outputContent: > │ > │ 00:00:16 d #80 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:16 d #81 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 1 / retry: 0 / error: Some((main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number, TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / > outputContent: > │ > │ 00:00:16 d #82 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [ > │ [ > │ "main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 10, > │ "line": 1 > │ } > │ ], > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:21 v #124 networking.test_port_open / { port = > 13806; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:16 d #83 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:16 d #84 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: / outputContent: > │ > │ 00:00:16 d #85 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:16 v #86 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"inl main () =\n 1 \u002B > \u0022\u0022\n","uri":"file:///home/runner/work/...et/spiral_Eval/packages/c030f > 84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi"}} / > result: > │ 00:00:16 v #87 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e365519 > 9e42df713504aa0/main.spi"}} / result: > │ 00:00:16 d #88 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: Some((main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number, TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / > outputContent: > │ > │ 00:00:16 d #89 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi / errors: [ > │ [ > │ "main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 10, > │ "line": 1 > │ } > │ ], > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:16 v #90 Supervisor.sendJson / port: 13805 / json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/c030f84f8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0" > ]}} / result: > │ 00:00:16 d #91 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ 00:00:21 v #125 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:16 d #92 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number"]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = > x + y > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Unbound variable: x. > Unbound variable: y." > ]] > ) > ) > > ── [ 3.08s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:21 v #126 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 d #25 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:21 v #127 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #128 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #26 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:19 v #27 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:19 v #28 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:21 v #129 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #130 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #131 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #132 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #133 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #134 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #135 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #136 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #137 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #138 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #139 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #140 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #141 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #142 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:21 v #143 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #144 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #145 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #146 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #147 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #148 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #149 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #150 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #151 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #152 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #153 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 v #29 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:22 v #154 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #155 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #156 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:17 v #93 Supervisor.sendJson / port: 13805 / json: > {"Ping":true} / result: > │ 00:00:17 v #94 Supervisor.awaitCompiler / Ping / result: > 'Some null' / port: 13805 / retry: 1 > │ 00:00:20 v #30 > Server bound to: http://localhost:13805 > │ 00:00:17 d #95 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:17 d #96 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:17 d #97 Supervisor.buildFile / takeWhileInclusive > / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:17 v #98 Supervisor.sendJson / port: 13805 / json: > {"FileOpen":{"spiText":"inl main () =\n x \u002B > y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6cdee > c507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} / > result: > │ 00:00:17 v #99 Supervisor.sendJson / port: 13805 / json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b15 > 1c767fde35dc5d1/main.spi"}} / result: > │ 00:00:17 d #100 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:17 d #101 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:18 d #102 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:18 d #103 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:18 d #104 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:18 d #105 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:19 d #106 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:19 d #107 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:19 d #108 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((File main > has a type error somewhere in its path., FatalError "File main has a type error > somewhere in its path.")) / outputContent: > │ > │ 00:00:19 d #109 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:19 d #110 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 1 / retry: 0 / error: Some((main.spi: > │ Unbound variable: x. > │ Unbound variable: y., TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / > outputContent: > │ > │ 00:00:19 d #111 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [ > │ [ > │ "main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 4, > │ "line": 1 > │ }, > │ { > │ "character": 5, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: x." > │ ], > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 9, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: y." > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:24 v #157 networking.test_port_open / { port = > 13806; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 d #112 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:19 d #113 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: / outputContent: > │ > │ 00:00:19 d #114 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:19 v #115 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () =\n x \u002B > y\n","uri":"file:///home/runner/work/polyglot/po...et/spiral_Eval/packages/6cdee > c507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi"}} / > result: > │ 00:00:19 v #116 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b15 > 1c767fde35dc5d1/main.spi"}} / result: > │ 00:00:19 d #117 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: Some((main.spi: > │ Unbound variable: x. > │ Unbound variable: y., TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / > outputContent: > │ > │ 00:00:19 d #118 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi / errors: [ > │ [ > │ "main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 4, > │ "line": 1 > │ }, > │ { > │ "character": 5, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: x." > │ ], > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 9, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: y." > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:19 v #119 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/6cdeec507f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1" > ]}} / result: > │ 00:00:19 d #120 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ 00:00:24 v #158 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:19 d #121 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["main.spi: > │ Unbound variable: x. > │ Unbound variable: y."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real () > () > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot apply a forall with a term." ]] > ) > ) > > ── [ 3.40s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:24 v #159 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 d #31 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:24 v #160 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #161 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #32 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:22 v #33 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:22 v #34 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:24 v #162 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #163 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #164 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #165 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #166 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #167 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:24 v #168 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #169 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #170 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #171 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #172 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #173 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #174 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #175 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #176 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #177 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #178 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #179 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #180 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #181 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #182 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #183 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #184 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:22 v #35 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:25 v #185 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #186 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #187 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 v #188 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:20 v #122 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:20 v #123 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:23 v #36 > Server bound to: http://localhost:13805 > │ 00:00:20 d #124 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:20 d #125 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:20 d #126 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:20 v #127 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"\ninl main () =\n real\n inl unbox_real > forall a. (obj : a) : a > =\...et/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec > 78e740987f29a/main.spi"}} / result: > │ 00:00:20 v #128 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117e > ec78e740987f29a/main.spi"}} / result: > │ 00:00:20 d #129 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:20 d #130 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:21 d #131 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:21 d #132 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:21 d #133 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:21 d #134 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:22 d #135 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:22 d #136 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:22 d #137 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:22 d #138 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:23 d #139 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((Cannot apply > a forall with a term., TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ unbox_real () > │ ^ > │ "] })) / outputContent: > │ > │ 00:00:23 d #140 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi / errors: [ > │ [ > │ "Cannot apply a forall with a term.", > │ { > │ "TracedError": { > │ "message": "Cannot apply a forall with a term.", > │ "trace": [ > │ "Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ inl main () = > │ ^ > │ ", > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ ", > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ unbox_real () > │ ^ > │ " > │ ] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:23 v #141 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/667528659dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a" > ]}} / result: > │ 00:00:28 v #189 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:23 d #142 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["Cannot apply a forall with a term."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real `i32 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "The main function should not have a forall." ]] > ) > ) > > ── [ 3.10s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:28 v #190 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:25 d #37 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:28 v #191 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #192 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:26 v #38 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:26 v #39 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:26 v #40 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:28 v #193 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #194 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #195 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #196 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #197 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #198 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #199 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #200 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #201 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #202 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #203 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #204 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #205 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #206 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #207 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #208 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #209 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #210 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #211 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #212 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #213 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #214 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #215 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:26 v #41 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:28 v #216 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #217 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #218 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 v #219 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:23 v #143 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:23 v #144 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:26 v #42 > Server bound to: http://localhost:13805 > │ 00:00:23 d #145 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:23 d #146 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:23 d #147 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:23 v #148 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"\ninl main () =\n real\n inl unbox_real > forall a. (obj : a) : a > =\...et/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad11 > 8bad793251c4f/main.spi"}} / result: > │ 00:00:23 v #149 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad > 118bad793251c4f/main.spi"}} / result: > │ 00:00:24 d #150 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:24 d #151 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:24 d #152 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:24 d #153 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:25 d #154 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:25 d #155 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:25 d #156 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:25 d #157 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:26 d #158 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((The main > function should not have a forall., TracedError { message = "The main function > should not have a forall." > │ trace = [] })) / outputContent: > │ > │ 00:00:26 d #159 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi / errors: [ > │ [ > │ "The main function should not have a forall.", > │ { > │ "TracedError": { > │ "message": "The main function should not have a > forall.", > │ "trace": [] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:26 v #160 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/0ba44c42df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f" > ]}} / result: > │ 00:00:31 v #220 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:26 d #161 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (None, ["The main function should not have a forall."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.3325000000000001\n", > [[]] > ) > ) > > ── [ 3.28s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:31 v #221 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:28 d #43 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:31 v #222 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #223 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:29 v #44 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:29 v #45 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:29 v #46 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:31 v #224 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #225 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #226 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #227 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #228 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #229 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #230 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #231 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #232 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #233 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #234 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #235 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #236 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #237 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #238 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #239 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #240 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #241 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #242 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #243 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #244 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #245 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #246 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:29 v #47 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:31 v #247 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #248 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:31 v #249 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:26 v #162 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:26 v #163 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:29 v #48 > Server bound to: http://localhost:13805 > │ 00:00:26 d #164 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:26 d #165 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:26 d #166 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:26 v #167 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : > f64 = conv ((end - > start)...et/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd > 56ac7f0327106f1db/main.spi"}} / result: > │ 00:00:26 v #168 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56 > ac7f0327106f1db/main.spi"}} / result: > │ 00:00:27 d #169 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:27 d #170 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:27 d #171 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:27 d #172 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:28 d #173 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:28 d #174 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:28 d #175 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:28 d #176 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:29 d #177 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:29 d #178 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:29 d #179 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ 0.3325000000000001 > │ > │ 00:00:29 d #180 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ 0.3325000000000001 > │ > │ 00:00:29 v #181 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/c127414de2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db" > ]}} / result: > │ 00:00:34 v #250 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:29 d #182 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (Some "0.3325000000000001 > │ ", []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Cuda [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some @"kernel = r"""""" > """""" > class static_array(): > def __init__(self, length): > self.ptr = [[]] > for _ in range(length): > self.ptr.append(None) > > def __getitem__(self, index): > assert 0 <= index < len(self.ptr), ""The get index needs to be in > range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < len(self.ptr), ""The set index needs to be in > range."" > self.ptr[[index]] = value > > class static_array_list(static_array): > def __init__(self, length): > super().__init__(length) > self.length = 0 > > def __getitem__(self, index): > assert 0 <= index < self.length, ""The get index needs to be in range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < self.length, ""The set index needs to be in range."" > self.ptr[[index]] = value > > def push(self,value): > assert (self.length < len(self.ptr)), ""The length before pushing has to > be less than the maximum length of the array."" > self.ptr[[self.length]] = value > self.length += 1 > > def pop(self): > assert (0 < self.length), ""The length before popping has to be greater > than 0."" > self.length -= 1 > return self.ptr[[self.length]] > > def unsafe_set_length(self,i): > assert 0 <= i <= len(self.ptr), ""The new length has to be in range."" > self.length = i > > class dynamic_array(static_array): > pass > > class dynamic_array_list(static_array_list): > def length_(self): return self.length > > import cupy as cp > import numpy as np > from dataclasses import dataclass > from typing import NamedTuple, Union, Callable, Tuple > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 = > int; f32 = float; f64 = float; char = str; string = str > cuda = False > > def main_body(): > return 0.3325000000000001 > > def main(): > r = main_body() > if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so > the `__trap()` calls on the kernel aren't missed. > return r > > if __name__ == '__main__': result = main(); None if result is None else > print(result) > ", > [[]] > ) > ) > > ── [ 3.24s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:34 v #251 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:32 d #49 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:34 v #252 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #253 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:32 v #50 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:32 v #51 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:32 v #52 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:34 v #254 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #255 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #256 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #257 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #258 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #259 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #260 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #261 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #262 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #263 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #264 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #265 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #266 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #267 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #268 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #269 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #270 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #271 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #272 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #273 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #274 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #275 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #276 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:32 v #53 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:34 v #277 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #278 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:34 v #279 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:30 v #183 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:30 v #184 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:32 v #54 > Server bound to: http://localhost:13805 > │ 00:00:30 d #185 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:30 d #186 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:30 d #187 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:30 v #188 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : > f64 = conv ((end - > start)...et/spiral_Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b > 26e8533ec368831c8/main.spi"}} / result: > │ 00:00:30 v #189 Supervisor.sendJson / port: 13805 / > json: {"BuildFile":{"backend":"Python \u002B > Cuda","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packa > ges/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi"}} > / result: > │ 00:00:30 d #190 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:30 d #191 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:31 d #192 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:31 d #193 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:31 d #194 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:31 d #195 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:32 d #196 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:32 d #197 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:32 d #198 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ kernel = r""" > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ d...nge." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ > │ 00:00:32 d #199 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/ca288d6928a8e761 > 855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ kernel = r""" > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ d...nge." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ > │ 00:00:32 v #200 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/ca288d6928a8e761855210f25f97fdc056ee1f21be4a24b26e8533ec368831c8" > ]}} / result: > │ 00:00:37 v #280 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:32 d #201 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some > │ (Some > │ "kernel = r""" > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ ", > │ []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.01 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.33332500000000004\n", > [[]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ── [ 3.26s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:37 v #281 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:35 d #55 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:37 v #282 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:37 v #283 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:35 v #56 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:35 v #57 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:35 v #58 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:37 v #284 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:37 v #285 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:37 v #286 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:37 v #287 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:37 v #288 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #289 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #290 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #291 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #292 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #293 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #294 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #295 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #296 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #297 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #298 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #299 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #300 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #301 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #302 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #303 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #304 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #305 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #306 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:35 v #59 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:38 v #307 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #308 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #309 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:33 v #202 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:33 v #203 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:36 v #60 > Server bound to: http://localhost:13805 > │ 00:00:33 d #204 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:33 d #205 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:33 d #206 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:33 v #207 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"\ninl init_series start end inc =\n inl total : > f64 = conv ((end - > start)...et/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e77 > 97ce64875a41451f4/main.spi"}} / result: > │ 00:00:33 v #208 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797 > ce64875a41451f4/main.spi"}} / result: > │ 00:00:33 d #209 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:33 d #210 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:34 d #211 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:34 d #212 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:34 d #213 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:34 d #214 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:35 d #215 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:35 d #216 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:35 d #217 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:35 d #218 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:35 d #219 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ 0.33332500000000004 > │ > │ 00:00:35 d #220 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ 0.33332500000000004 > │ > │ 00:00:35 v #221 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/2acc44d97e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4" > ]}} / result: > │ 00:00:40 v #310 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:36 d #222 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some (Some "0.33332500000000004 > │ ", []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl rec main () = main""" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 10000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Recursive metavariables are not allowed. A metavar cannot be unified with a type > that has itself. > Got: 'a > Expected: () -> 'a" > ]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ── [ 3.00s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:40 v #311 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 d #61 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:41 v #312 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #313 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 v #62 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:38 v #63 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:38 v #64 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:41 v #314 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #315 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #316 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #317 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #318 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #319 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #320 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #321 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #322 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #323 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #324 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #325 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #326 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #327 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #328 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #329 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #330 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #331 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #332 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #333 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #334 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #335 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #336 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:39 v #65 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:41 v #337 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #338 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #339 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:36 v #223 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:36 v #224 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:39 v #66 > Server bound to: http://localhost:13805 > │ 00:00:36 d #225 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:36 d #226 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:36 d #227 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:36 v #228 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl rec main () = > main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack > ages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"} > } / result: > │ 00:00:36 v #229 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8 > ccd4581901ee2b7/main.spi"}} / result: > │ 00:00:37 d #230 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:37 d #231 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:37 d #232 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:37 d #233 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:38 d #234 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:38 d #235 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:38 d #236 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: > │ > │ 00:00:38 d #237 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 0 / outputContent: > │ > │ 00:00:38 d #238 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 0 / error: Some((File main > has a type error somewhere in its path., FatalError "File main has a type error > somewhere in its path.")) / outputContent: > │ > │ 00:00:38 d #239 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:38 d #240 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 1 / retry: 0 / error: Some((main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a, TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / > outputContent: > │ > │ 00:00:38 d #241 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [ > │ [ > │ "main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 18, > │ "line": 0 > │ }, > │ { > │ "character": 22, > │ "line": 0 > │ } > │ ], > │ "Recursive metavariables are not allowed. A > metavar cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 1 / retry: 0 / outputContent: > │ > │ 00:00:43 v #340 networking.test_port_open / { port = > 13806; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:38 d #242 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:38 d #243 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: / outputContent: > │ > │ 00:00:38 d #244 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:38 v #245 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl rec main () = > main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack > ages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi"} > } / result: > │ 00:00:38 v #246 Supervisor.sendJson / port: 13805 / > json: > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl > ot/target/spiral_Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8 > ccd4581901ee2b7/main.spi"}} / result: > │ 00:00:38 d #247 Supervisor.buildFile / AsyncSeq.scan / > path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [] / > outputContentResult: / typeErrorCount: 0 / retry: 1 / error: Some((main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a, TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / > outputContent: > │ > │ 00:00:38 d #248 Supervisor.buildFile / > takeWhileInclusive / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi / errors: [ > │ [ > │ "main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 18, > │ "line": 0 > │ }, > │ { > │ "character": 22, > │ "line": 0 > │ } > │ ], > │ "Recursive metavariables are not allowed. A > metavar cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 1 / outputContent: > │ > │ 00:00:38 v #249 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/883e0123fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7" > ]}} / result: > │ 00:00:38 d #250 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ 00:00:43 v #341 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:39 d #251 FileSystem.watchWithFilter / Disposing > watch stream / filter: FileName, LastWrite > │ Some > │ (None, > │ ["main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a"]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getFileTokenRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileTokenRange port cancellationToken path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) > use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let fileTokenRangeObj = > {| > FileTokenRange = > {| > uri = fullPathUri > range = > [[| > {| > line = 0 > character = 0 > |} > {| > line = lines.Length - 1 > character = lines.[[lines.Length - 1]].Length > |} > |]] > |} > |} > let! fileTokenRangeResult = > fileTokenRangeObj > |> sendObj serverPort > |> Async.withCancellationToken ct > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > return fileTokenRangeResult |> Option.map FSharp.Json.Json.deserialize<int > array> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getCodeTokenRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeTokenRange cancellationToken code = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let tokensPath = codeDir </> "tokens.json" > let! tokens = async { > if tokensPath |> System.IO.File.Exists |> not > then return None > else > let! text = tokensPath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> FSharp.Json.Json.deserialize<int array> |> Some > else None > } > match tokens with > | Some tokens -> > return tokens |> Some > | None -> return! mainPath |> getFileTokenRange None cancellationToken > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = ()""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > > ── [ 1.41s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:44 v #342 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 d #67 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:44 v #343 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #344 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:42 v #68 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:42 v #69 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:42 v #70 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:44 v #345 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #346 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #347 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #348 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #349 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #350 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #351 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #352 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #353 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #354 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #355 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #356 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #357 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #358 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #359 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #360 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #361 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #362 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #363 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #364 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #365 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #366 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #367 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #368 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:42 v #71 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:44 v #369 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #370 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #371 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:39 v #252 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:39 v #253 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:42 v #72 > Server bound to: http://localhost:13805 > │ 00:00:39 v #254 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () = > ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package > s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / > result: > │ 00:00:40 v #255 Supervisor.sendJson / port: 13805 / > json: > {"FileTokenRange":{"range":[{"character":0,"line":0},{"character":16,"line":0}], > "uri":"file:///home/...et/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7d > a4570c1b757721164d86f19feaf821e/main.spi"}} / result: Some([ > │ 0, > │ 0, > │ 3, > │ 7, > │ 0, > │ 0, > │ 4, > │ 4, > │ 0, > │ 0, > │ 0, > │ 5, > │ 1, > │ 8, > │ 0, > │ 0, > │ 1, > │ 1, > │ 8, > │ 0, > │ 0, > │ 2, > │ 1, > │ 4, > │ 0, > │ 0, > │ 2, > │ 1, > │ 8, > │ 0, > │ 0, > │ 1, > │ 1, > │ 8, > │ 0 > │ ]) > │ 00:00:40 v #256 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e" > ]}} / result: > │ 00:00:45 v #372 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = 1i32""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > > ── [ 1.34s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:45 v #373 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:43 d #73 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:45 v #374 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #375 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:43 v #74 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:43 v #75 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:43 v #76 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:45 v #376 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #377 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #378 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #379 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #380 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #381 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #382 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #383 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #384 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #385 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #386 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #387 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #388 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #389 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #390 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #391 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #392 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #393 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #394 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #395 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #396 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #397 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #398 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:43 v #77 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:45 v #399 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #400 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #401 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:41 v #257 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:41 v #258 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:43 v #78 > Server bound to: http://localhost:13805 > │ 00:00:41 v #259 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () = > 1i32","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packa > ges/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b/main.spi"}} > / result: > │ 00:00:41 v #260 Supervisor.sendJson / port: 13805 / > json: > {"FileTokenRange":{"range":[{"character":0,"line":0},{"character":18,"line":0}], > "uri":"file:///home/...et/spiral_Eval/packages/5370829508ddefc7386d6b4d280722b47 > d97cb925585525bee733a187ff8f18b/main.spi"}} / result: Some([ > │ 0, > │ 0, > │ 3, > │ 7, > │ 0, > │ 0, > │ 4, > │ 4, > │ 0, > │ 0, > │ 0, > │ 5, > │ 1, > │ 8, > │ 0, > │ 0, > │ 1, > │ 1, > │ 8, > │ 0, > │ 0, > │ 2, > │ 1, > │ 4, > │ 0, > │ 0, > │ 2, > │ 1, > │ 3, > │ 0, > │ 0, > │ 1, > │ 3, > │ 12, > │ 0 > │ ]) > │ 00:00:41 v #261 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/5370829508ddefc7386d6b4d280722b47d97cb925585525bee733a187ff8f18b" > ]}} / result: > │ 00:00:46 v #402 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getFileHoverAt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileHoverAt > port > cancellationToken > path > (position : {| line: int; character: int |}) > = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > let! serverPort, _errors, ct, disposable = awaitCompiler port (Some token) > use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} |} > let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let hoverAtObj = > {| > HoverAt = > {| > uri = fullPathUri > pos = position > |} > |} > let! hoverAtResult = > hoverAtObj > |> sendObj serverPort > |> Async.withCancellationToken ct > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} |} > let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > () > > return hoverAtResult > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getCodeHoverAt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeHoverAt cancellationToken code position = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let filePath = codeDir </> "hover.json" > let! output = async { > if filePath |> System.IO.File.Exists |> not > then return None > else > let! text = filePath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> Some > else None > } > match output with > | Some output -> > return output |> Some > | None -> return! getFileHoverAt None cancellationToken mainPath position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "() -> ()") > > ── [ 2.88s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:46 v #403 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 d #79 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:47 v #404 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #405 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:44 v #80 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:44 v #81 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:44 v #82 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:47 v #406 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #407 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #408 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #409 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #410 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #411 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #412 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #413 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #414 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #415 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #416 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #417 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #418 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #419 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #420 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #421 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #422 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #423 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #424 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #425 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #426 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #427 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #428 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #429 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #83 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:47 v #430 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #431 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #432 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:42 v #262 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:42 v #263 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:45 v #84 > Server bound to: http://localhost:13805 > │ 00:00:42 v #264 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () = > ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package > s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / > result: > │ 00:00:44 v #265 Supervisor.sendJson / port: 13805 / > json: > {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///home/runner/work/polyg > lot/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c > 1b757721164d86f19feaf821e/main.spi"}} / result: Some(() -> ()) > │ 00:00:44 v #266 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e" > ]}} / result: > │ 00:00:49 v #433 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some "() -> ()" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some null) > > ── [ 3.00s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:49 v #434 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 d #85 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:50 v #435 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #436 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:47 v #86 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:47 v #87 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:47 v #88 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:50 v #437 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #438 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #439 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #440 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #441 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #442 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #443 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #444 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #445 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #446 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #447 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #448 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #449 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #450 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #451 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #452 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #453 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #454 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #455 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #456 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #457 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #458 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #459 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:48 v #89 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:50 v #460 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #461 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #462 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:45 v #267 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:45 v #268 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:48 v #90 > Server bound to: http://localhost:13805 > │ 00:00:45 v #269 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () = > ()","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/package > s/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e/main.spi"}} / > result: > │ 00:00:47 v #270 Supervisor.sendJson / port: 13805 / > json: > {"HoverAt":{"pos":{"character":0,"line":0},"uri":"file:///home/runner/work/polyg > lot/polyglot/target/spiral_Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c > 1b757721164d86f19feaf821e/main.spi"}} / result: > │ 00:00:47 v #271 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/20e725d46cfdc99c0f307f1933a76ec7da4570c1b757721164d86f19feaf821e" > ]}} / result: > │ 00:00:52 v #463 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some null > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl rec main () = main""" {| line = 0; character = 8 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a. () -> 'a") > > ── [ 2.98s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:52 v #464 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 d #91 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:53 v #465 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #466 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:50 v #92 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:50 v #93 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:50 v #94 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:53 v #467 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #468 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #469 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #470 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #471 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #472 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #473 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #474 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #475 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #476 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #477 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #478 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #479 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #480 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #481 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #482 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #483 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #484 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #485 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #486 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #487 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #488 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #489 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:51 v #95 > Starting the Spiral Server. It is bound > to: http://localhost:13805 > │ 00:00:53 v #490 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #491 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #492 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:48 v #272 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:48 v #273 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:51 v #96 > Server bound to: http://localhost:13805 > │ 00:00:48 v #274 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl rec main () = > main","uri":"file:///home/runner/work/polyglot/polyglot/ta...et/spiral_Eval/pack > ages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2/main.spi"} > } / result: > │ 00:00:50 v #275 Supervisor.sendJson / port: 13805 / > json: > {"HoverAt":{"pos":{"character":8,"line":0},"uri":"file:///home/runner/work/polyg > lot/polyglot/target/spiral_Eval/packages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e > 22fc895db0f8b03cacf92c7e2/main.spi"}} / result: Some(forall 'a. () -> 'a) > │ 00:00:50 v #276 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/7fa7f94d5cb478aa7827ac687ed3514a89f2a8e22fc895db0f8b03cacf92c7e2" > ]}} / result: > │ 00:00:55 v #493 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some "forall 'a. () -> 'a" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = 1""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a {number}. () -> 'a") > > ── [ 2.88s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:55 v #494 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 d #97 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ > ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64"; options = { command = dotnet > "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral > Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 > --default-int i32 --default-float f64; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = Some > <fun:compiler@22-4>; stdin = None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot" } } > │ 00:00:56 v #495 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #496 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:53 v #98 > 00:00:00 d #1 pwd: > /home/runner/work/polyglot/polyglot > │ 00:00:53 v #99 > 00:00:00 d #2 dllPath: > /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language > 2/artifacts/bin/The Spiral Language 2/release > │ 00:00:53 v #100 > 00:00:00 d #3 targetDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval > │ 00:00:56 v #497 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #498 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #499 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #500 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #501 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #502 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #503 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #504 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #505 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #506 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #507 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #508 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #509 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #510 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #511 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #512 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #513 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #514 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #515 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #516 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #517 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #518 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #519 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:54 v #101 > Starting the Spiral Server. It is > bound to: http://localhost:13805 > │ 00:00:56 v #520 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #521 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:56 v #522 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ 00:00:51 v #277 Supervisor.sendJson / port: 13805 / > json: {"Ping":true} / result: > │ 00:00:51 v #278 Supervisor.awaitCompiler / Ping / > result: 'Some null' / port: 13805 / retry: 1 > │ 00:00:54 v #102 > Server bound to: > http://localhost:13805 > │ 00:00:51 v #279 Supervisor.sendJson / port: 13805 / > json: {"FileOpen":{"spiText":"inl main () = > 1","uri":"file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages > /2f51fd7aa58d1ea373b484460dba65cec845b6dddbc1fc6de2eea30335846eee/main.spi"}} / > result: > │ 00:00:53 v #280 Supervisor.sendJson / port: 13805 / > json: > {"HoverAt":{"pos":{"character":4,"line":0},"uri":"file:///home/runner/work/polyg > lot/polyglot/target/spiral_Eval/packages/2f51fd7aa58d1ea373b484460dba65cec845b6d > ddbc1fc6de2eea30335846eee/main.spi"}} / result: Some(forall 'a {number}. () -> > 'a) > │ 00:00:53 v #281 Supervisor.sendJson / port: 13805 / > json: > {"FileDelete":{"uris":["file:///home/runner/work/polyglot/polyglot/target/spiral > _Eval/packages/2f51fd7aa58d1ea373b484460dba65cec845b6dddbc1fc6de2eea30335846eee" > ]}} / result: > │ 00:00:58 v #523 networking.test_port_open / { port = > 13805; ex = System.AggregateException: One or more errors occurred. (Connection > refused) } > │ Some "forall 'a {number}. () -> 'a" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | Build_File of string * string > | File_Token_Range of string * string > | File_Hover_At of string * string * int * int > | Execute_Command of string > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > | [[<Argu.ArguAttributes.Unique>]] Port of int > | [[<Argu.ArguAttributes.Unique>]] Parallel > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Build_File _ -> nameof Build_File > | File_Token_Range _ -> nameof File_Token_Range > | File_Hover_At _ -> nameof File_Hover_At > | Execute_Command _ -> nameof Execute_Command > | Timeout _ -> nameof Timeout > | Port _ -> nameof Port > | Parallel -> nameof Parallel > | Exit_On_Error-> nameof Exit_On_Error > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 75.97ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>] > │ [--file-token-range <string> <string>] > │ [--file-hover-at <string> <string> <int> > <int>] > │ [--execute-command <string>] [--timeout > <int>] [--port <int>] > │ [--parallel] [--exit-on-error] > │ > │ OPTIONS: > │ > │ --build-file <string> <string> > │ Build_File > │ --file-token-range <string> <string> > │ File_Token_Range > │ --file-hover-at <string> <string> <int> <int> > │ File_Hover_At > │ --execute-command <string> > │ Execute_Command > │ --timeout <int> Timeout > │ --port <int> Port > │ --parallel Parallel > │ --exit-on-error Exit_On_Error > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let buildFileActions = > argsMap > |> Map.tryFind (nameof Arguments.Build_File) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, > outputPath) > | _ -> None > ) > > let fileTokenRangeActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Token_Range) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Token_Range (inputPath, outputPath) -> Some > (inputPath, outputPath) > | _ -> None > ) > > let fileHoverAtActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Hover_At) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Hover_At (inputPath, outputPath, line, character) > -> > Some (inputPath, outputPath, line, character) > | _ -> None > ) > > let executeCommandActions = > argsMap > |> Map.tryFind (nameof Arguments.Execute_Command) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Execute_Command command -> Some command > | _ -> None > ) > > let timeout = > match argsMap |> Map.tryFind (nameof Arguments.Timeout) with > | Some [[ Arguments.Timeout timeout ]] -> timeout > | _ -> 60000 * 60 > > let port = > match argsMap |> Map.tryFind (nameof Arguments.Port) with > | Some [[ Arguments.Port port ]] -> Some port > | _ -> None > > let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel) > > let isExitOnError = argsMap |> Map.containsKey (nameof > Arguments.Exit_On_Error) > > async { > let port = > port > |> Option.defaultWith getCompilerPort > let struct (localToken, disposable) = > SpiralThreading.new_disposable_token None > let! serverPort, _errors, compilerToken, disposable = awaitCompiler port > (Some localToken) > use _ = disposable > > let buildFileAsync = > buildFileActions > |> List.map (fun (inputPath, outputPath) -> async { > let! _outputPath, (outputCode, errors) = > let backend = > if outputPath |> SpiralSm.ends_with ".fsx" > then Fsharp > elif outputPath |> SpiralSm.ends_with ".py" > then Cuda > else failwith $"Supervisor.main / invalid backend / > outputPath: {outputPath}" > let isReal = inputPath |> SpiralSm.ends_with ".spir" > inputPath |> buildFile backend timeout (Some serverPort) > None > > errors > |> List.map snd > |> List.iter (fun error -> > trace Critical (fun () -> $"main / error: {error |> > serializeObj}") _locals > ) > > match outputCode with > | Some outputCode -> > do! outputCode |> SpiralFileSystem.write_all_text_exists > outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileTokenRangeAsync = > fileTokenRangeActions > |> List.map (fun (inputPath, outputPath) -> async { > let! tokenRange = inputPath |> getFileTokenRange (Some > serverPort) None > match tokenRange with > | Some tokenRange -> > do! tokenRange |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileHoverAtAsync = > fileHoverAtActions > |> List.map (fun (inputPath, outputPath, line, character) -> async { > let! hoverAt = > getFileHoverAt > (Some serverPort) > None > inputPath > {| line = line; character = character |} > match hoverAt with > | Some hoverAt -> > do! hoverAt |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let executeCommandAsync = > executeCommandActions > |> List.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = Some compilerToken > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"main / executeCommand / exitCode: > {exitCode} / command: {command}") _locals > > if isExitOnError && exitCode <> 0 > then SpiralRuntime.current_process_kill () > > return exitCode > }) > > return! > [[| buildFileAsync; fileTokenRangeAsync; fileHoverAtAsync; > executeCommandAsync |]] > |> Seq.collect id > |> fun x -> > if isParallel > then Async.Parallel (x, float System.Environment.ProcessorCount > * 0.51 |> ceil |> int) > else Async.Sequential x > |> Async.map Array.sum > } > |> Async.runWithTimeout timeout > |> Option.defaultValue 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 51.17ms - return value ] ────────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> 00:01:06 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 287578 } 00:01:06 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:07 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html 00:01:07 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:07 v #7 ! validate(nb) 00:01:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:08 v #9 ! return _pygments_highlight( 00:01:09 v #10 ! [NbConvertApp] Writing 709890 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html 00:01:09 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:01:09 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:01:09 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:09 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:09 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:09 d #16 spiral.run / dib / { exit_code = 0; result_length = 288543 } 00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / code.Length: 32732 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor" } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 324 ms). 00:00:13 v #11 > Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll 00:00:13 v #12 > Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist 00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 713 } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Eval (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > #r > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System > open System.Collections.Generic > open System.IO > open System.Text > open System.Threading > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## mapErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapErrors (severity, errors, lastTopLevelIndex) allCode = > let allCodeLineLength = > allCode |> SpiralSm.split "\n" |> Array.length > > errors > |> List.map (fun (_, error) -> > match error with > | Supervisor.FatalError message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > |> List.singleton > | Supervisor.TracedError data -> > data.trace > |> List.truncate 5 > |> List.append [[ data.message ]] > |> List.map (fun message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > ) > | Supervisor.PackageErrors data > | Supervisor.TokenizerErrors data > | Supervisor.ParserErrors data > | Supervisor.TypeErrors data -> > data.errors > |> List.filter (fun ((rangeStart, _), _) -> > trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: > {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals > rangeStart.line > allCodeLineLength > ) > |> List.map (fun ((rangeStart, rangeEnd), message) -> > ( > severity, > message, > 0, > ( > (data.uri |> System.IO.Path.GetFileName), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.line - allCodeLineLength - 2 > | _ -> rangeStart.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.character - 4 > | _ -> rangeStart.character) > ), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.line - allCodeLineLength - 2 > | _ -> rangeEnd.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.character - 4 > | _ -> rangeEnd.character) > ) > ) > ) > ) > ) > |> List.collect id > |> List.toArray > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### targetDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > [[ targetDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assemblyName > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assemblyName = Reflection.Assembly.GetEntryAssembly().GetName().Name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## allCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCode = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### allPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allPackages : string [[]] = [[||]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## allCodeReal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCodeReal = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## traceToggle > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable traceToggle = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getParentProcessId > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getParentProcessId () = > if SpiralPlatform.is_windows () |> not > then 0u > else > let pid = System.Diagnostics.Process.GetCurrentProcess().Id > let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId > = {pid}" > use searcher = new System.Management.ManagementObjectSearcher (query) > use results = searcher.Get () > let data = results |> Seq.cast<System.Management.ManagementObject> > if data |> Seq.isEmpty > then 0u > else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startTokenRangeWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startTokenRangeWatcher () = > if [[ "dotnet-repl" ]] |> List.contains assemblyName > then new_disposable (fun () -> ()) > else > let tokensDir = targetDir </> "tokens" > > [[ tokensDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > let stream, disposable = FileSystem.watchDirectory (fun _ -> false) > tokensDir > > try > let existingFilesChild = > tokensDir > |> System.IO.Directory.GetDirectories > |> Array.map (fun codeDir -> async { > try > let tokensPath = codeDir </> "tokens.json" > if tokensPath |> File.Exists |> not then > let spiralCodePath = codeDir </> "main.spi" > let spiralRealCodePath = codeDir </> > "main_real.spir" > let spiralExists = spiralCodePath |> > System.IO.File.Exists > let spiralRealExists = spiralRealCodePath |> > System.IO.File.Exists > if spiralExists |> not && spiralRealExists |> not > then do! codeDir |> > SpiralFileSystem.delete_directory_async |> Async.Ignore > else > let! tokens = > if spiralExists then spiralCodePath else > spiralRealCodePath > |> Supervisor.getFileTokenRange None None > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_async > tokensPath > | None -> > trace Verbose (fun () -> > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals > }) > |> Async.Parallel > |> Async.Ignore > > let streamAsyncChild = > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > -> > match event with > | FileSystem.FileSystemChange.Changed (codePath, _) > when [[ "main.spi"; "main_real.spir" ]] > |> List.contains (System.IO.Path.GetFileName > codePath) > -> > async { > let hashDir = codePath |> > System.IO.Directory.GetParent > let hashHex = hashDir.Name > let codePath = tokensDir </> codePath > let tokensPath = tokensDir </> hashHex </> > "tokens.json" > // do! Async.Sleep 30 > let rec loop retry = async { > let! tokens = codePath |> > Supervisor.getFileTokenRange None None > if retry = 3 || tokens <> Some [[||]] > then return tokens, retry > else > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher > / iterAsyncParallel") > (fun () -> $"retry: {retry} / tokens: > %A{tokens}") > do! Async.Sleep 30 > return! loop (retry + 1) > } > let! tokens, retries = loop 1 > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_exists > tokensPath > | None -> > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher / > iterAsyncParallel") > (fun () -> $"retries: {retries} / tokens: > {tokens}") > } > |> Async.retryAsync 3 > |> Async.map (Result.toOption >> Option.defaultValue ()) > | _ -> () |> Async.init > ) > > let parentAsyncChild = async { > let parentProcessId = getParentProcessId () > trace Verbose > (fun () -> "Eval.parentAsyncChild") > (fun () -> $"parentProcessId: {parentProcessId} / {_locals > ()}") > > if parentProcessId > 0u then > let parentProcess = parentProcessId |> int |> > System.Diagnostics.Process.GetProcessById > do! parentProcess.WaitForExitAsync () |> Async.AwaitTask > trace Debug > (fun () -> "Eval.parentAsyncChild / Parent process has > exited. Performing cleanup...") > (fun () -> $"{_locals ()}") > System.Threading.Thread.Sleep 1000 > System.Environment.Exit 1 > } > > async { > do! Async.Sleep 3000 > existingFilesChild |> Async.StartImmediate > streamAsyncChild |> Async.Start > parentAsyncChild |> Async.Start > } > |> Async.Start > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |> > SpiralSm.format_exception}") _locals > > disposable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startCommandsWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let startCommandsWatcher (uriServer : string) = > let commandsDir = targetDir </> "eval_commands" > let commandHistoryDir = targetDir </> "eval_command_history" > [[ commandsDir; commandHistoryDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete > > let stream, disposable = > commandsDir > |> FileSystem.watchDirectory (function > | FileSystem.FileSystemChange.Created _ -> true > | _ -> false > ) > > let connection = HubConnectionBuilder().WithUrl(uriServer).Build() > connection.StartAsync() |> Async.AwaitTask |> Async.Start > // let _ = connection.On<string>("ServerToClientMsg", fun x -> > // printfn $"ServerToClientMsg: '{x}'" > // ) > > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async { > let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}" > trace Verbose (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > > match event with > | FileSystem.FileSystemChange.Created (path, Some json) -> > try > let fullPath = commandsDir </> path > let! result = > connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask > let commandHistoryPath = commandHistoryDir </> path > do! fullPath |> SpiralFileSystem.move_file_async > commandHistoryPath |> Async.Ignore > if result |> SpiralSm.trim |> String.length > 0 then > let resultPath = commandHistoryDir </> > $"{Path.GetFileNameWithoutExtension path}_result.json" > do! result |> SpiralFileSystem.write_all_text_async > resultPath > with ex -> > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / > {_locals ()}" > trace Critical (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > | _ -> () > }) > |> Async.StartChild > |> Async.Ignore > |> Async.Start > > new_disposable (fun () -> > disposable.Dispose () > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## prepareSpiral > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepareSpiral rawCellCode lines = > let lastBlock = > lines > |> Array.tryFindBack (fun line -> > line |> String.length > 0 > && line.[[0]] <> ' ' > ) > > let hasMain = > lastBlock > |> Option.exists (fun line -> > line |> SpiralSm.starts_with "inl main " > || line |> SpiralSm.starts_with "let main " > ) > > if hasMain > then rawCellCode, None > else > let lastTopLevelIndex, _ = > (lines |> Array.indexed, (None, false)) > ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) -> > // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}") > _locals > match line with > | _ when finished -> lastTopLevelIndex, true > | "" -> lastTopLevelIndex, false > | line when > line |> SpiralSm.starts_with " " > || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, > false > | line when > line |> SpiralSm.starts_with "open " > || line |> SpiralSm.starts_with "prototype " > || line |> SpiralSm.starts_with "instance " > || line |> SpiralSm.starts_with "type " > || line |> SpiralSm.starts_with "union " > || line |> SpiralSm.starts_with "nominal " -> > lastTopLevelIndex, true > | line when > line |> SpiralSm.starts_with "inl " > || line |> SpiralSm.starts_with "and " > || line |> SpiralSm.starts_with "let " -> > let m = > System.Text.RegularExpressions.Regex.Match ( > line, > @"^(?:and +)?(inl|let) +((?:[[{( > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)" > ) > trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / > m.Groups.Count: {m.Groups.Count}") _locals > if m.Groups.Count = 3 > then Some i, false > else lastTopLevelIndex, true > | _ -> Some i, false > ) > let code = > match lastTopLevelIndex with > | Some lastTopLevelIndex -> > lines > |> Array.mapi (fun i line -> > match i with > | i when i < lastTopLevelIndex -> line > | i when i = lastTopLevelIndex -> $"\nlet main () =\n > {line}" > | _ when line |> SpiralSm.trim = "" -> "" > | _ -> $" {line}" > ) > |> SpiralSm.concat "\n" > | None -> $"{rawCellCode}\n\ninl main () = ()\n" > code, lastTopLevelIndex > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## processSpiralOutput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let processSpiralOutput > (props : {| > printCode: bool > traceLevel: TraceLevel > builderCommands: string array > lastTopLevelIndex: int option > backend: Supervisor.Backend > cancellationToken: _ > spiralErrors: _ > code: string > outputPath: string > isReal: bool > |}) > = async { > let inline _trace (fn : unit -> string) = > if props.traceLevel = Verbose > then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals > else fn () |> System.Console.WriteLine > > if props.printCode && props.backend <> Supervisor.Cuda then > let ext = props.outputPath |> System.IO.Path.GetExtension > _trace (fun () -> if props.builderCommands.Length > 0 then > $"{ext}:\n{props.code}\n" else props.code) > > let workspaceRootExternal = > let currentDir = System.IO.Directory.GetCurrentDirectory () |> > SpiralSm.to_lower > let workspaceRoot = workspaceRoot |> SpiralSm.to_lower > if currentDir |> SpiralSm.starts_with workspaceRoot > then None > else Some workspaceRoot > > let! spiralBuilderResults = > match props.builderCommands, props.lastTopLevelIndex with > | [[||]], _ | _, None -> [[||]] |> Async.init > | builderCommands, _ -> > builderCommands > |> Array.map (fun builderCommand -> > let path = > workspaceRoot </> > $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf > fix ()}" > |> System.IO.Path.GetFullPath > let commands = > if props.backend = Supervisor.Fsharp > && ( > builderCommand |> SpiralSm.starts_with "rust" > || builderCommand |> SpiralSm.starts_with > "typescript" > || builderCommand |> SpiralSm.starts_with "python" > ) > then [[| $"{path} fable --fs-path \"{props.outputPath}\" > --command \"{builderCommand}\"" |]] > elif props.backend = Supervisor.Cuda > && builderCommand |> SpiralSm.starts_with "cuda" > then [[| $"{path} {builderCommand} --py-path > \"{props.outputPath}\"" |]] > else [[||]] > builderCommand, commands > ) > |> Array.filter (fun (_, commands) -> commands.Length > 0) > |> Array.collect (fun (builderCommand, commands) -> > commands > |> Array.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = props.cancellationToken > l2 = [[| > "AUTOMATION", assemblyName = "dotnet-repl" > |> string > "TRACE_LEVEL", $"%A{if props.printCode then > props.traceLevel else Info}" > |]] > l6 = workspaceRootExternal > } > ) > |> SpiralRuntime.execute_with_options_async > trace Debug > (fun () -> $"Eval.processSpiralOutput / spiral cli") > (fun () -> $"exitCode: {exitCode} / builderCommand: > {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end > 400} / {_locals ()}") > return > if exitCode = 0 > then {| code = result; eval = false; builderCommand = > builderCommand |} |> Ok > else result |> Error > }) > ) > |> Async.Parallel > > let hasEval = > props.backend = Supervisor.Fsharp > && props.builderCommands |> Array.exists (fun x -> x |> > SpiralSm.starts_with "fsharp") > > let outputResult = > if props.builderCommands.Length > 0 && not hasEval > then None > else > let code = > if props.builderCommands.Length > 1 > then > let header = "System.Console.WriteLine \".fsx output:\"\n" > $"{header}{props.code}" > else props.code > Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]]) > > match outputResult, spiralBuilderResults with > | Some outputResult, [[||]] -> > return outputResult, [[||]] > | None, [[||]] -> > return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], > [[||]] > | _, spiralBuilderResults -> > try > let spiralResults = > match outputResult with > | Some (Ok code) -> > spiralBuilderResults > |> Array.append (code |> List.map Ok |> List.toArray) > | _ -> spiralBuilderResults > let codes = > spiralResults > |> Array.map (fun spiralBuilderResult' -> > let commandResult, errors = > match spiralBuilderResult' with > | Ok result when result.eval = false -> > let result' = > result.code > |> > FSharp.Json.Json.deserialize<Map<string,string>> > let result = > match result' |> Map.tryFind "command_result" > with > | Some result'' -> > result'' > |> > FSharp.Json.Json.deserialize<Map<string,string>> > |> Map.add "builderCommand" > result.builderCommand > | None -> Map.empty > result, [[||]] > | Ok result when result.eval = true -> > let result = > [[ > "extension", "fsx" > "code", result.code > "output", "" > ]] > |> Map.ofList > result, [[||]] > | Error error -> > Map.empty, > [[| > ( > TraceLevel.Critical, > $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / > spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, > 0), (0, 0)) > ) > |]] > | _ -> > Map.empty, [[||]] > > if errors |> Array.isEmpty |> not > then Error (Exception $"Eval.processSpiralOutput / > evalResult errors / Exception / commandResult: %A{commandResult}"), errors > else > let extension = commandResult.[["extension"]] > let code = commandResult.[["code"]] > let output = commandResult.[["output"]] > let builderCommand = > commandResult > |> Map.tryFind "builderCommand" > |> Option.defaultValue "" > > let backendInfo = > match props.backend, builderCommand with > | Supervisor.Fsharp, builderCommand > when builderCommand |> SpiralSm.contains " " -> > $" ({builderCommand})" > | Supervisor.Fsharp, _ -> "" > | _ -> $" ({props.backend})" > > let eval = output = "" && extension = "fsx" > > if props.printCode && not eval > then _trace (fun () -> > $""".{extension}{backendInfo}:{'\n'}{code}""") > > trace Debug > (fun () -> $"Eval.processSpiralOutput / result") > (fun () -> $"builderCommand: {builderCommand} / > extension: {extension} / commandResult: {commandResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}") > > let code = > if props.printCode > || spiralResults.Length > 1 > || props.builderCommands.Length > 1 > then > if eval > then code > else > let header = $".{extension} > output{backendInfo}:\n" > $"""{if output |> SpiralSm.contains "\n" > then "\n" else ""}{header}{output}""" > elif eval > then code > else output > Ok {| code = code; eval = eval; builderCommand = > builderCommand |}, [[||]] > ) > trace Debug > (fun () -> $"Eval.processSpiralOutput / codes") > (fun () -> > let props = {| props with cancellationToken = None |} > $"codes: {codes |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults: > {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end > 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} > / {_locals ()}") > return > (((Ok [[]]), [[||]]), codes) > ||> Array.fold (fun (acc_code, acc_errors) (code, errors) -> > match code, acc_code with > | Ok code, Ok acc_code -> > let errors = > acc_errors > |> Array.append errors > |> Array.append props.spiralErrors > let errors = > if errors |> Array.isEmpty > then errors > else > let code = $"%A{code}" > errors > |> Array.append [[| > TraceLevel.Critical, > $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |> > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > |]] > Ok (code :: acc_code), errors > | Error ex, _ > | _, Error ex -> > Error (Exception $"Eval.processSpiralOutput / -1 / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > acc_errors |> Array.append errors > ) > with ex -> > trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.processSpiralOutput / try 2 ex / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 > ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tryGetPropertyValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tryGetPropertyValue (propertyName: string) (obj: obj) = > let objType = obj.GetType () > let propertyInfo = propertyName |> objType.GetProperty > if propertyInfo <> null > then propertyInfo.GetValue (obj, null) |> Some > else None > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## evalAsync > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec evalAsync > retry > (props : {| > rawCellCode: _ > lines: _ > isReal: _ > builderCommands: _ array > isCache: _ > timeout: _ > cancellationToken: _ > printCode: _ > traceLevel: _ > fsi_eval: _ > |}) > = async { > try > let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode > props.lines > let newAllCode = > if props.isReal > then $"{allCodeReal}\n\n{cellCode}" > else $"{allCode}\n\n{cellCode}" > > let buildBackends = > if props.builderCommands.Length = 0 > then [[| Supervisor.Fsharp |]] > else > props.builderCommands > |> Array.map (fun x -> > if x |> SpiralSm.starts_with "cuda" > then Supervisor.Cuda > else Supervisor.Fsharp > ) > |> Array.distinct > > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / > builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / > isReal: {props.isReal} / {_locals ()}") > > let! buildCodeResults = > buildBackends > |> Array.map (fun backend -> async { > let! result = > if props.isReal > then Supervisor.Spir newAllCode > else > Supervisor.Spi > (newAllCode, if allCodeReal = "" then None else Some > allCodeReal) > |> Supervisor.buildCode backend allPackages props.isCache > props.timeout props.cancellationToken > return backend, result > }) > |> Async.Parallel > |> Async.catch > |> Async.runWithTimeoutAsync props.timeout > > match buildCodeResults with > | Some (Ok buildCodeResults) -> > let! result, errors = > ((Ok [[]], [[||]]), buildCodeResults) > ||> Async.fold (fun acc buildCodeResult -> async { > match buildCodeResult with > | backend, (_, (outputPath, Some code), spiralErrors) -> > let spiralErrors = > allCode |> mapErrors (Warning, spiralErrors, > lastTopLevelIndex) > let! result = > processSpiralOutput > {| > printCode = props.printCode > traceLevel = props.traceLevel > builderCommands = props.builderCommands > lastTopLevelIndex = lastTopLevelIndex > backend = backend > cancellationToken = props.cancellationToken > spiralErrors = spiralErrors > code = code > outputPath = outputPath > isReal = props.isReal > |} > match result, acc with > | (Ok code, errors), (Ok acc_code, acc_errors) -> > return Ok (acc_code @ code), acc_errors |> > Array.append errors > | (Error ex, errors), _ | _, (Error ex, errors) -> > return > Error (Exception $"Eval.evalAsync / > processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> > SpiralSm.format_exception}"), > errors |> Array.append errors > | _, (_, _, errors) when errors |> List.isEmpty |> not -> > return errors.[[0]] |> fst |> Exception |> Error, > allCode |> mapErrors (TraceLevel.Critical, errors, > lastTopLevelIndex) > | _ -> return acc > }) > let cancellationToken = defaultArg props.cancellationToken > System.Threading.CancellationToken.None > match result, errors with > | Ok code, [[||]] -> > let code, eval = > code > |> List.map (fun code -> > if code.eval > then None, Some code.code > else Some code.code, None > ) > |> List.unzip > let code = code |> List.choose id > let eval = eval |> List.choose id > > trace Debug > (fun () -> $"Eval.eval") > (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / {_locals ()}") > > let ch, errors = > match eval, code with > | [[]], [[]] -> > Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors > | [[ eval ]], [[]] -> > let ch, errors2 = props.fsi_eval eval cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | [[]], _ -> > let code = code |> List.rev |> String.concat "\n\n" > let code = > if props.printCode > then $"\"\"\"{code}\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = props.fsi_eval code cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | _ -> > let code, errors = > ((Ok (code |> List.rev), [[||]]), eval) > ||> List.fold (fun (acc, acc_errors) eval -> > match acc with > | Error ch -> Error ch, acc_errors > | Ok acc -> > let ch, errors = props.fsi_eval eval > cancellationToken > let errors = > errors > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, > 0))) > // ) > |> Array.append acc_errors > match ch with > | Choice1Of2 v -> > let v = > v > |> tryGetPropertyValue > "ReflectionValue" > |> Option.map (fun x -> $"%A{x}") > |> Option.defaultValue "" > Ok (v :: acc), errors > | Choice2Of2 ex -> > trace Critical (fun () -> > $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: > %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals > Error ch, errors > ) > match code with > | Error ch -> ch, errors > | Ok code -> > let code = > code > |> List.filter ((<>) "") > |> String.concat "\n\n" > > let code = > if props.builderCommands.Length > 0 && > eval.Length = 0 > then code > elif code |> SpiralSm.contains "\n\n\n" > then $"{code}\n\n" > else $"{code}\n" > > let code = > if props.printCode > then $"\"\"\"{code}\n\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let ch, errors2 = props.fsi_eval code > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > match ch with > | Choice1Of2 v -> > if props.isReal > then allCodeReal <- newAllCode > else allCode <- newAllCode > return Ok(v), errors > | Choice2Of2 ex -> > return > Error (Exception $"Eval.evalAsync / -2 / Exception / ex: > {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"), > errors > | Ok code, errors -> > return > Error (Exception "Eval.evalAsync / errors / > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > errors > | Error ex, errors -> > let ex = ex |> SpiralSm.format_exception > if retry <= 3 && > (ex |> SpiralSm.contains "Expected one of: inl, let, union, > nominal, prototype, type, instance, and, open") > || (ex |> SpiralSm.contains "Unexpected end of block past > this token.") > then return! evalAsync (retry + 1) props > else > return > Error (Exception $"Eval.evalAsync / -1 / Exception / ex: > {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 1500}"), > errors > | Some (Error ex) -> > trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.evalAsync / buildCodeResults Error / > Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > | _ -> > return > Error (Exception $"Eval.evalAsync / buildCodeResults / Exception > / buildCodeResults: %A{buildCodeResults}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > with ex -> > trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> > SpiralSm.format_exception} / lines: %A{props.lines}") _locals > return > Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex > |> SpiralSm.format_exception} / lines: %A{props.lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", > 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## eval > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline eval > (fsi_eval: > string > -> System.Threading.CancellationToken > -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int * > int) * (int * int))) array) > (cancellationToken: Option<System.Threading.CancellationToken>) > (code: string) > = > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}") > > let rawCellCode = > code |> SpiralSm.replace "\r\n" "\n" > > let lines = rawCellCode |> SpiralSm.split "\n" > > if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && > line |> SpiralSm.ends_with "\"") then > let cancellationToken = defaultArg cancellationToken > System.Threading.CancellationToken.None > let ch, errors = fsi_eval code cancellationToken > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors: > %A{errors}") _locals > match ch with > | Choice1Of2 v -> Ok(v), errors > | Choice2Of2 ex -> Error(ex), errors > else > let builderCommands = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "///! " > then line |> SpiralSm.split "///! " |> Array.tryItem 1 > else None > ) > > let packages = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "//// package=" > then line |> SpiralSm.split "=" |> Array.skip 1 |> > SpiralSm.concat "" |> Some > else None > ) > > allPackages <- packages |> Array.append allPackages |> Array.distinct > > let timeout = > lines > |> Array.tryPick (fun line -> > if line |> SpiralSm.starts_with "//// timeout=" > then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > int > else None > ) > |> Option.defaultValue (60000 * 60) > > let boolArg def command = > lines > |> Array.tryPick (fun line -> > let text = $"//// {command}" > match line.[[0..text.Length-1]], line.[[text.Length..]] with > | head, "" when head = text -> > Some true > | head, _ when head = text -> > line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > ((<>) "false") > | _ -> None > ) > |> Option.defaultValue def > > let printCode = "print_code" |> boolArg false > let isTraceToggle = "trace_toggle" |> boolArg false > let isTrace = "trace" |> boolArg false > let isCache = "cache" |> boolArg false > let isReal = "real" |> boolArg false > let timeout_continue = "timeout_continue" |> boolArg false > > if isTraceToggle > then traceToggle <- not traceToggle > > let oldLevel = get_trace_level () > let traceLevel = > if isTrace || traceToggle > then Verbose > else Info > traceLevel > |> to_trace_level > |> set_trace_level > use _ = (new_disposable (fun () -> > oldLevel |> set_trace_level > )) > > evalAsync 1 > {| > rawCellCode = rawCellCode > lines = lines > isReal = isReal > builderCommands = builderCommands > isCache = isCache > timeout = timeout > cancellationToken = cancellationToken > printCode = printCode > traceLevel = traceLevel > fsi_eval = fsi_eval > |} > |> Async.runWithTimeout timeout > |> (fun x -> > match x with > | Some ((Ok x), a) -> Some ((Ok x), a) > | Some ((Error x), a) -> > trace Info (fun () -> $"Eval.eval / error / exception: > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> "") > Some ((Error x), a) > | _ -> None > ) > |> Option.defaultWith (fun () -> ( > let lines = lines |> SpiralSm.concat (string '\n') |> > SpiralSm.ellipsis_end 1500 > in > Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / > timeout: {timeout} / timeout_continue: {timeout_continue} / lines: {lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", (0, 0), (0, 0)) > ) > |]] > )) 00:00:19 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50071 } 00:00:19 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:20 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html 00:00:20 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:20 v #7 ! validate(nb) 00:00:20 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:20 v #9 ! return _pygments_highlight( 00:00:21 v #10 ! [NbConvertApp] Writing 459256 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:00:21 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:21 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:21 d #16 spiral.run / dib / { exit_code = 0; result_length = 51024 } 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Async.dib", "--retries", "3"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # Async (Polyglot) 00:00:14 v #13 > > 00:00:14 v #14 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #15 > > #if !INTERACTIVE 00:00:14 v #16 > > open Lib 00:00:14 v #17 > > #endif 00:00:14 v #18 > > 00:00:14 v #19 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #20 > > open Common 00:00:14 v #21 > > 00:00:14 v #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #23 > > │ ## choice 00:00:14 v #24 > > 00:00:14 v #25 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #26 > > let inline choice asyncs = async { 00:00:14 v #27 > > let e = Event<_> () 00:00:14 v #28 > > use cts = new System.Threading.CancellationTokenSource () 00:00:14 v #29 > > let fn = 00:00:14 v #30 > > asyncs 00:00:14 v #31 > > |> Seq.map (fun a -> async { 00:00:14 v #32 > > let! x = a 00:00:14 v #33 > > e.Trigger x 00:00:14 v #34 > > }) 00:00:14 v #35 > > |> Async.Parallel 00:00:14 v #36 > > |> Async.Ignore 00:00:14 v #37 > > Async.Start (fn, cts.Token) 00:00:14 v #38 > > let! result = Async.AwaitEvent e.Publish 00:00:14 v #39 > > cts.Cancel () 00:00:14 v #40 > > return result 00:00:14 v #41 > > } 00:00:14 v #42 > > 00:00:14 v #43 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #44 > > │ ## map 00:00:14 v #45 > > 00:00:14 v #46 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #47 > > let inline map fn a = async { 00:00:14 v #48 > > let! x = a 00:00:14 v #49 > > return fn x 00:00:14 v #50 > > } 00:00:14 v #51 > > 00:00:14 v #52 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #53 > > │ ## runWithTimeoutChoiceAsync 00:00:14 v #54 > > 00:00:14 v #55 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #56 > > let inline runWithTimeoutChoiceAsync (timeout : int) fn = 00:00:14 v #57 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:14 v #58 > > 00:00:14 v #59 > > let timeoutTask = async { 00:00:14 v #60 > > do! Async.Sleep timeout 00:00:14 v #61 > > trace Debug (fun () -> "runWithTimeoutChoiceAsync") _locals 00:00:14 v #62 > > return None 00:00:14 v #63 > > } 00:00:14 v #64 > > 00:00:14 v #65 > > let task = async { 00:00:14 v #66 > > try 00:00:14 v #67 > > let! result = fn 00:00:14 v #68 > > return Some result 00:00:14 v #69 > > with 00:00:14 v #70 > > | :? System.AggregateException as ex when 00:00:14 v #71 > > ex.InnerExceptions 00:00:14 v #72 > > |> Seq.exists (function :? 00:00:14 v #73 > > System.Threading.Tasks.TaskCanceledException -> true | _ -> false) 00:00:14 v #74 > > -> 00:00:14 v #75 > > trace Warning 00:00:14 v #76 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:14 v #77 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:14 v #78 > > ()}") 00:00:14 v #79 > > return None 00:00:14 v #80 > > | ex -> 00:00:14 v #81 > > trace Critical 00:00:14 v #82 > > (fun () -> "runWithTimeoutChoiceAsync") 00:00:14 v #83 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:14 v #84 > > ()}") 00:00:14 v #85 > > return None 00:00:14 v #86 > > } 00:00:14 v #87 > > 00:00:14 v #88 > > [[ timeoutTask; task ]] 00:00:14 v #89 > > |> choice 00:00:14 v #90 > > 00:00:14 v #91 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #92 > > let inline runWithTimeoutChoice timeout fn = 00:00:14 v #93 > > fn 00:00:14 v #94 > > |> runWithTimeoutChoiceAsync timeout 00:00:14 v #95 > > |> Async.RunSynchronously 00:00:14 v #96 > > 00:00:14 v #97 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #98 > > //// test 00:00:14 v #99 > > 00:00:14 v #100 > > Async.Sleep 120 00:00:14 v #101 > > |> runWithTimeoutChoice 10 00:00:14 v #102 > > |> _assertEqual None 00:00:14 v #103 > > 00:00:14 v #104 > > ── [ 121.93ms - stdout ] ─────────────────────────────────────────────────────── 00:00:14 v #105 > > │ 00:00:00 d #1 runWithTimeoutChoiceAsync / timeout: 10 00:00:14 v #106 > > │ <null> 00:00:14 v #107 > > │ 00:00:14 v #108 > > │ 00:00:14 v #109 > > 00:00:14 v #110 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #111 > > //// test 00:00:14 v #112 > > 00:00:14 v #113 > > Async.Sleep 10 00:00:14 v #114 > > |> runWithTimeoutChoice 60 00:00:14 v #115 > > |> _assertEqual (Some ()) 00:00:14 v #116 > > 00:00:14 v #117 > > ── [ 102.07ms - stdout ] ─────────────────────────────────────────────────────── 00:00:14 v #118 > > │ Some () 00:00:14 v #119 > > │ 00:00:14 v #120 > > │ 00:00:14 v #121 > > 00:00:14 v #122 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #123 > > //// test 00:00:14 v #124 > > 00:00:14 v #125 > > async { 00:00:14 v #126 > > raise (exn "error") 00:00:14 v #127 > > } 00:00:14 v #128 > > |> runWithTimeoutChoice 60 00:00:14 v #129 > > |> _assertEqual None 00:00:14 v #130 > > 00:00:14 v #131 > > ── [ 91.61ms - stdout ] ──────────────────────────────────────────────────────── 00:00:14 v #132 > > │ 00:00:00 c #2 runWithTimeoutChoiceAsync / ex: 00:00:14 v #133 > > System.Exception: error / timeout: 60 00:00:14 v #134 > > │ <null> 00:00:14 v #135 > > │ 00:00:14 v #136 > > │ 00:00:14 v #137 > > 00:00:14 v #138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #139 > > │ ## catch 00:00:14 v #140 > > 00:00:14 v #141 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #142 > > let inline catch a = 00:00:14 v #143 > > a 00:00:14 v #144 > > |> Async.Catch 00:00:14 v #145 > > |> map (function 00:00:14 v #146 > > | Choice1Of2 result -> Ok result 00:00:14 v #147 > > | Choice2Of2 ex -> Error ex 00:00:14 v #148 > > ) 00:00:14 v #149 > > 00:00:14 v #150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #151 > > │ ## runWithTimeoutAsync 00:00:14 v #152 > > 00:00:14 v #153 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #154 > > let inline runWithTimeoutAsync (timeout : int) fn = async { 00:00:14 v #155 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:14 v #156 > > let! child = Async.StartChild (fn, timeout) 00:00:14 v #157 > > return! 00:00:14 v #158 > > child 00:00:14 v #159 > > |> catch 00:00:14 v #160 > > |> map (function 00:00:14 v #161 > > | Ok result -> Some result 00:00:14 v #162 > > | Error (:? System.TimeoutException as ex) -> 00:00:14 v #163 > > trace Debug (fun () -> $"Async.runWithTimeoutAsync") _locals 00:00:14 v #164 > > None 00:00:14 v #165 > > | Error ex -> 00:00:14 v #166 > > trace Critical (fun () -> $"Async.runWithTimeoutAsync** / ex: 00:00:14 v #167 > > %A{ex}") _locals 00:00:14 v #168 > > None 00:00:14 v #169 > > ) 00:00:14 v #170 > > } 00:00:15 v #171 > > 00:00:15 v #172 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #173 > > let inline runWithTimeout timeout fn = 00:00:15 v #174 > > fn 00:00:15 v #175 > > |> runWithTimeoutAsync timeout 00:00:15 v #176 > > |> Async.RunSynchronously 00:00:15 v #177 > > 00:00:15 v #178 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #179 > > //// test 00:00:15 v #180 > > 00:00:15 v #181 > > Async.Sleep 60 00:00:15 v #182 > > |> runWithTimeout 10 00:00:15 v #183 > > |> _assertEqual None 00:00:15 v #184 > > 00:00:15 v #185 > > ── [ 77.08ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #186 > > │ 00:00:01 d #3 Async.runWithTimeoutAsync / timeout: 10 00:00:15 v #187 > > │ <null> 00:00:15 v #188 > > │ 00:00:15 v #189 > > │ 00:00:15 v #190 > > 00:00:15 v #191 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #192 > > //// test 00:00:15 v #193 > > 00:00:15 v #194 > > Async.Sleep 10 00:00:15 v #195 > > |> runWithTimeout 60 00:00:15 v #196 > > |> _assertEqual (Some ()) 00:00:15 v #197 > > 00:00:15 v #198 > > ── [ 60.33ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #199 > > │ Some () 00:00:15 v #200 > > │ 00:00:15 v #201 > > │ 00:00:15 v #202 > > 00:00:15 v #203 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #204 > > //// test 00:00:15 v #205 > > 00:00:15 v #206 > > async { 00:00:15 v #207 > > raise (exn "error") 00:00:15 v #208 > > } 00:00:15 v #209 > > |> runWithTimeout 60 00:00:15 v #210 > > |> _assertEqual None 00:00:15 v #211 > > 00:00:15 v #212 > > ── [ 68.57ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #213 > > │ 00:00:01 c #4 Async.runWithTimeoutAsync** / ex: 00:00:15 v #214 > > System.Exception: error 00:00:15 v #215 > > │ at FSI_0036.it@4-119.Invoke(Unit unitVar) 00:00:15 v #216 > > │ at 00:00:15 v #217 > > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati 00:00:15 v #218 > > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in 00:00:15 v #219 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 00:00:15 v #220 > > │ at 00:00:15 v #221 > > Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in 00:00:15 v #222 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 00:00:15 v #223 > > │ --- End of stack trace from previous location --- 00:00:15 v #224 > > │ at Microsoft.FSharp.Control.AsyncResult`1.Commit() in 00:00:15 v #225 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 00:00:15 v #226 > > │ at 00:00:15 v #227 > > <StartupCode$FSharp-Core>.$Async.AwaitAndBindChildResult@1962-4.Invoke(Unit 00:00:15 v #228 > > unitVar) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1964 00:00:15 v #229 > > │ at 00:00:15 v #230 > > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati 00:00:15 v #231 > > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in 00:00:15 v #232 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 00:00:15 v #233 > > │ at 00:00:15 v #234 > > Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in 00:00:15 v #235 > > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 / timeout: 60 00:00:15 v #236 > > │ <null> 00:00:15 v #237 > > │ 00:00:15 v #238 > > │ 00:00:15 v #239 > > 00:00:15 v #240 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #241 > > │ ## runWithTimeoutStrict 00:00:15 v #242 > > 00:00:15 v #243 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #244 > > let inline runWithTimeoutStrict (timeout : int) fn = 00:00:15 v #245 > > let _locals () = $"timeout: {timeout} / {_locals ()}" 00:00:15 v #246 > > 00:00:15 v #247 > > let timeoutTask = async { 00:00:15 v #248 > > do! Async.Sleep timeout 00:00:15 v #249 > > return None, _locals 00:00:15 v #250 > > } 00:00:15 v #251 > > 00:00:15 v #252 > > let task = async { 00:00:15 v #253 > > try 00:00:15 v #254 > > return Async.RunSynchronously (fn, timeout) |> Some, _locals 00:00:15 v #255 > > with 00:00:15 v #256 > > | :? System.TimeoutException as ex -> 00:00:15 v #257 > > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:15 v #258 > > ()}" 00:00:15 v #259 > > return None, _locals 00:00:15 v #260 > > | ex -> 00:00:15 v #261 > > trace Critical 00:00:15 v #262 > > (fun () -> "Async.runWithTimeoutStrict / async error") 00:00:15 v #263 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals 00:00:15 v #264 > > ()}") 00:00:15 v #265 > > return raise ex 00:00:15 v #266 > > } 00:00:15 v #267 > > 00:00:15 v #268 > > try 00:00:15 v #269 > > [[| timeoutTask; task |]] 00:00:15 v #270 > > |> Array.map Async.StartAsTask 00:00:15 v #271 > > |> System.Threading.Tasks.Task.WhenAny 00:00:15 v #272 > > |> fun task -> 00:00:15 v #273 > > match task.Result.Result with 00:00:15 v #274 > > | None, _locals -> 00:00:15 v #275 > > trace Debug (fun () -> "runWithTimeoutStrict") _locals 00:00:15 v #276 > > None 00:00:15 v #277 > > | result, _ -> result 00:00:15 v #278 > > with 00:00:15 v #279 > > | :? System.AggregateException as ex when 00:00:15 v #280 > > ex.InnerExceptions 00:00:15 v #281 > > |> Seq.exists (function :? System.Threading.Tasks.TaskCanceledException 00:00:15 v #282 > > -> true | _ -> false) 00:00:15 v #283 > > -> 00:00:15 v #284 > > trace Warning 00:00:15 v #285 > > (fun () -> "Async.runWithTimeoutStrict") 00:00:15 v #286 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:15 v #287 > > None 00:00:15 v #288 > > | ex -> 00:00:15 v #289 > > trace Critical 00:00:15 v #290 > > (fun () -> "Async.runWithTimeoutStrict / task error") 00:00:15 v #291 > > (fun () -> $"ex: {ex |> SpiralSm.format_exception} / {_locals ()}") 00:00:15 v #292 > > None 00:00:15 v #293 > > 00:00:15 v #294 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #295 > > //// test 00:00:15 v #296 > > 00:00:15 v #297 > > Async.Sleep 60 00:00:15 v #298 > > |> runWithTimeoutStrict 10 00:00:15 v #299 > > |> _assertEqual None 00:00:15 v #300 > > 00:00:15 v #301 > > ── [ 85.19ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #302 > > │ 00:00:01 d #5 runWithTimeoutStrict / timeout: 10 00:00:15 v #303 > > │ <null> 00:00:15 v #304 > > │ 00:00:15 v #305 > > │ 00:00:15 v #306 > > 00:00:15 v #307 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #308 > > //// test 00:00:15 v #309 > > 00:00:15 v #310 > > Async.Sleep 10 00:00:15 v #311 > > |> runWithTimeoutStrict 60 00:00:15 v #312 > > |> _assertEqual (Some ()) 00:00:15 v #313 > > 00:00:15 v #314 > > ── [ 81.29ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #315 > > │ Some () 00:00:15 v #316 > > │ 00:00:15 v #317 > > │ 00:00:15 v #318 > > 00:00:15 v #319 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #320 > > //// test 00:00:15 v #321 > > 00:00:15 v #322 > > async { 00:00:15 v #323 > > raise (exn "error") 00:00:15 v #324 > > } 00:00:15 v #325 > > |> runWithTimeoutStrict 60 00:00:15 v #326 > > |> _assertEqual None 00:00:15 v #327 > > 00:00:15 v #328 > > ── [ 91.08ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #329 > > │ 00:00:01 c #6 Async.runWithTimeoutStrict / async error 00:00:15 v #330 > > ex: System.Exception: error / timeout: 60 00:00:15 v #331 > > │ 00:00:01 c #7 Async.runWithTimeoutStrict / task error 00:00:15 v #332 > > ex: System.AggregateException: One or more errors occurred. (error) / timeout: 00:00:15 v #333 > > 60 00:00:15 v #334 > > │ <null> 00:00:15 v #335 > > │ 00:00:15 v #336 > > │ 00:00:15 v #337 > > 00:00:15 v #338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #339 > > │ ## awaitValueTask 00:00:15 v #340 > > 00:00:15 v #341 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #342 > > let inline awaitValueTaskUnit (task : System.Threading.Tasks.ValueTask) = 00:00:15 v #343 > > task.AsTask () |> Async.AwaitTask 00:00:15 v #344 > > 00:00:15 v #345 > > let inline awaitValueTask (task : System.Threading.Tasks.ValueTask<_>) = 00:00:15 v #346 > > task.AsTask () |> Async.AwaitTask 00:00:15 v #347 > > 00:00:15 v #348 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #349 > > │ ## init 00:00:15 v #350 > > 00:00:15 v #351 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #352 > > let inline init x = async { 00:00:15 v #353 > > return x 00:00:15 v #354 > > } 00:00:15 v #355 > > 00:00:15 v #356 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #357 > > //// test 00:00:15 v #358 > > 00:00:15 v #359 > > init 1 00:00:15 v #360 > > |> Async.RunSynchronously 00:00:15 v #361 > > |> _assertEqual 1 00:00:15 v #362 > > 00:00:15 v #363 > > ── [ 19.97ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #364 > > │ 1 00:00:15 v #365 > > │ 00:00:15 v #366 > > │ 00:00:15 v #367 > > 00:00:15 v #368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #369 > > │ ## withCancellationToken 00:00:15 v #370 > > 00:00:15 v #371 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #372 > > let inline withCancellationToken (ct : System.Threading.CancellationToken) fn = 00:00:15 v #373 > > Async.StartImmediateAsTask (fn, ct) 00:00:15 v #374 > > |> Async.AwaitTask 00:00:15 v #375 > > 00:00:15 v #376 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #377 > > //// test 00:00:15 v #378 > > 00:00:15 v #379 > > let cts = new System.Threading.CancellationTokenSource () 00:00:15 v #380 > > 00:00:15 v #381 > > async { 00:00:15 v #382 > > let run = async { 00:00:15 v #383 > > do! Async.Sleep 100 00:00:15 v #384 > > return 1 00:00:15 v #385 > > } 00:00:15 v #386 > > 00:00:15 v #387 > > let! child = 00:00:15 v #388 > > run 00:00:15 v #389 > > |> withCancellationToken cts.Token 00:00:15 v #390 > > |> catch 00:00:15 v #391 > > |> Async.StartChild 00:00:15 v #392 > > 00:00:15 v #393 > > do! Async.Sleep 50 00:00:15 v #394 > > cts.Cancel () 00:00:15 v #395 > > return! child 00:00:15 v #396 > > } 00:00:15 v #397 > > |> Async.RunSynchronously 00:00:15 v #398 > > |> Result.mapError _.Message 00:00:15 v #399 > > |> _assertEqual (Error ("A task was canceled.")) 00:00:15 v #400 > > 00:00:15 v #401 > > ── [ 144.64ms - stdout ] ─────────────────────────────────────────────────────── 00:00:15 v #402 > > │ Error "A task was canceled." 00:00:15 v #403 > > │ 00:00:15 v #404 > > │ 00:00:15 v #405 > > 00:00:15 v #406 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #407 > > │ ## retryAsync 00:00:15 v #408 > > 00:00:15 v #409 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #410 > > let inline retryAsync retries fn = 00:00:15 v #411 > > let rec loop retry lastError = async { 00:00:15 v #412 > > try 00:00:15 v #413 > > return! 00:00:15 v #414 > > if retry <= retries 00:00:15 v #415 > > then fn |> map Ok 00:00:15 v #416 > > else lastError |> Error |> init 00:00:15 v #417 > > with ex -> 00:00:15 v #418 > > trace Debug (fun () -> $"Async.retryAsync / retry: {retry}/{retries} 00:00:15 v #419 > > / ex: {ex |> SpiralSm.format_exception}") _locals 00:00:15 v #420 > > do! Async.Sleep 30 00:00:15 v #421 > > return! loop (retry + 1) (ex |> SpiralSm.format_exception) 00:00:15 v #422 > > } 00:00:15 v #423 > > loop 1 "Async.retryAsync / invalid retries / retries: {retries}" 00:00:15 v #424 > > 00:00:15 v #425 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #426 > > //// test 00:00:15 v #427 > > 00:00:15 v #428 > > let retry_fn_test = ref 0 00:00:15 v #429 > > async { 00:00:15 v #430 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:15 v #431 > > return retry_fn_test.Value 00:00:15 v #432 > > } 00:00:15 v #433 > > |> retryAsync 3 00:00:15 v #434 > > |> Async.RunSynchronously 00:00:15 v #435 > > |> _assertEqual (Ok 1) 00:00:15 v #436 > > 00:00:15 v #437 > > ── [ 64.79ms - stdout ] ──────────────────────────────────────────────────────── 00:00:15 v #438 > > │ Ok 1 00:00:15 v #439 > > │ 00:00:15 v #440 > > │ 00:00:15 v #441 > > 00:00:15 v #442 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:15 v #443 > > //// test 00:00:15 v #444 > > 00:00:15 v #445 > > let retry_fn_test = ref 0 00:00:15 v #446 > > async { 00:00:15 v #447 > > return 00:00:15 v #448 > > if retry_fn_test.Value >= 2 00:00:15 v #449 > > then retry_fn_test.Value 00:00:15 v #450 > > else 00:00:15 v #451 > > retry_fn_test.Value <- retry_fn_test.Value + 1 00:00:15 v #452 > > failwith "test" 00:00:15 v #453 > > } 00:00:15 v #454 > > |> retryAsync 3 00:00:15 v #455 > > |> Async.RunSynchronously 00:00:15 v #456 > > |> _assertEqual (Ok 2) 00:00:16 v #457 > > 00:00:16 v #458 > > ── [ 131.35ms - stdout ] ─────────────────────────────────────────────────────── 00:00:16 v #459 > > │ 00:00:02 d #8 Async.retryAsync / retry: 1/3 / ex: 00:00:16 v #460 > > System.Exception: test 00:00:16 v #461 > > │ 00:00:02 d #9 Async.retryAsync / retry: 2/3 / ex: 00:00:16 v #462 > > System.Exception: test 00:00:16 v #463 > > │ Ok 2 00:00:16 v #464 > > │ 00:00:16 v #465 > > │ 00:00:16 v #466 > > 00:00:16 v #467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #468 > > │ ## fold 00:00:16 v #469 > > 00:00:16 v #470 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #471 > > let fold folder state array = 00:00:16 v #472 > > let rec loop acc i = 00:00:16 v #473 > > async { 00:00:16 v #474 > > if i < Array.length array then 00:00:16 v #475 > > let! newAcc = folder acc array.[[i]] 00:00:16 v #476 > > return! loop newAcc (i + 1) 00:00:16 v #477 > > else 00:00:16 v #478 > > return acc 00:00:16 v #479 > > } 00:00:16 v #480 > > loop state 0 00:00:16 v #481 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15919 } 00:00:16 v #482 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:16 v #483 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.ipynb to html 00:00:16 v #484 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:16 v #485 > 00:00:15 v #7 ! validate(nb) 00:00:17 v #486 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:17 v #487 > 00:00:16 v #9 ! return _pygments_highlight( 00:00:17 v #488 > 00:00:16 v #10 ! [NbConvertApp] Writing 332803 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html 00:00:17 v #489 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:00:17 v #490 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:00:17 v #491 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 v #492 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:17 v #493 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:17 v #494 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 16872 } 00:00:18 d #495 runtime.execute_with_options_async / { exit_code = 0; output_length = 20460 } 00:00:18 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3 00:00:18 d #496 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 v #497 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "AsyncSeq.dib", "--retries", "3"])) } 00:00:18 v #498 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:19 v #499 > > 00:00:19 v #500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #501 > > │ # AsyncSeq (Polyglot) 00:00:31 v #502 > > 00:00:31 v #503 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:31 v #504 > > #r 00:00:31 v #505 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:31 v #506 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:31 v #507 > > #r 00:00:31 v #508 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:31 v #509 > > 0/System.Reactive.dll" 00:00:31 v #510 > > #r 00:00:31 v #511 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:31 v #512 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:31 v #513 > > 00:00:31 v #514 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:31 v #515 > > #if !INTERACTIVE 00:00:31 v #516 > > open Lib 00:00:31 v #517 > > #endif 00:00:31 v #518 > > 00:00:31 v #519 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:31 v #520 > > open Common 00:00:31 v #521 > > 00:00:31 v #522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:31 v #523 > > │ ## subscribeEvent 00:00:31 v #524 > > 00:00:31 v #525 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:31 v #526 > > let inline subscribeEvent (event: IEvent<'H, 'A>) map = 00:00:31 v #527 > > let observable = System.Reactive.Linq.Observable.FromEventPattern<'H, 00:00:31 v #528 > > 'A>(event.AddHandler, event.RemoveHandler) 00:00:31 v #529 > > System.Reactive.Linq.Observable.Select (observable, fun event -> map 00:00:31 v #530 > > event.EventArgs) 00:00:31 v #531 > > |> FSharp.Control.AsyncSeq.ofObservableBuffered 00:00:31 v #532 > > 00:00:31 v #533 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:31 v #534 > > //// test 00:00:31 v #535 > > 00:00:31 v #536 > > type TestEvent () as self = 00:00:31 v #537 > > member val Calls = [[]] with get, set 00:00:31 v #538 > > member val Event = Event<ErrorEventHandler, ErrorEventArgs> () with get 00:00:31 v #539 > > 00:00:31 v #540 > > member _.AddCall text = 00:00:31 v #541 > > self.Calls <- self.Calls @ [[ text ]] 00:00:31 v #542 > > 00:00:31 v #543 > > member _.EventInterface = 00:00:31 v #544 > > { new IEvent<ErrorEventHandler, ErrorEventArgs> with 00:00:31 v #545 > > member _.AddHandler handler = 00:00:31 v #546 > > self.AddCall "AddHandler" 00:00:31 v #547 > > self.Event.Publish.AddHandler handler 00:00:31 v #548 > > 00:00:31 v #549 > > member _.RemoveHandler handler = 00:00:31 v #550 > > self.AddCall "RemoveHandler" 00:00:31 v #551 > > self.Event.Publish.RemoveHandler handler 00:00:31 v #552 > > 00:00:31 v #553 > > member _.Subscribe observer = 00:00:31 v #554 > > self.AddCall "IObservable.Subscribe" 00:00:31 v #555 > > let disposable = self.Event.Publish.Subscribe observer 00:00:31 v #556 > > new_disposable (fun () -> 00:00:31 v #557 > > self.AddCall "IObservable.Dispose" 00:00:31 v #558 > > disposable.Dispose () 00:00:31 v #559 > > ) 00:00:31 v #560 > > } 00:00:31 v #561 > > 00:00:31 v #562 > > member _.Subscribe () = 00:00:31 v #563 > > subscribeEvent 00:00:31 v #564 > > self.EventInterface 00:00:31 v #565 > > (fun args -> 00:00:31 v #566 > > let result = args.GetException () |> SpiralSm.format_exception 00:00:31 v #567 > > self.AddCall $"TestEvent.Subscribe({result})" 00:00:31 v #568 > > result 00:00:31 v #569 > > ) 00:00:31 v #570 > > 00:00:31 v #571 > > member _.Iter subscription = 00:00:31 v #572 > > subscription 00:00:31 v #573 > > |> FSharp.Control.AsyncSeq.iteriAsync (fun i error -> async { 00:00:31 v #574 > > self.AddCall $"TestEvent.Iter({i}: {error})" 00:00:31 v #575 > > }) 00:00:31 v #576 > > 00:00:31 v #577 > > member _.WaitCall text = async { 00:00:31 v #578 > > while self.Calls |> List.last <> text do 00:00:31 v #579 > > do! Async.SwitchToThreadPool () 00:00:31 v #580 > > } 00:00:32 v #581 > > 00:00:32 v #582 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:32 v #583 > > //// test 00:00:32 v #584 > > 00:00:32 v #585 > > let testEvent = TestEvent () 00:00:32 v #586 > > 00:00:32 v #587 > > async { 00:00:32 v #588 > > testEvent.AddCall "1" 00:00:32 v #589 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:32 v #590 > > do! testEvent.WaitCall "AddHandler" 00:00:32 v #591 > > testEvent.AddCall "2" 00:00:32 v #592 > > do! child 00:00:32 v #593 > > testEvent.AddCall "3" 00:00:32 v #594 > > } 00:00:32 v #595 > > |> Async.runWithTimeout 300 00:00:32 v #596 > > |> _assertEqual None 00:00:32 v #597 > > 00:00:32 v #598 > > testEvent.Calls 00:00:32 v #599 > > |> Seq.toList 00:00:32 v #600 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "RemoveHandler" ]] 00:00:32 v #601 > > 00:00:32 v #602 > > ── [ 462.15ms - stdout ] ─────────────────────────────────────────────────────── 00:00:32 v #603 > > │ 00:00:01 d #1 Async.runWithTimeoutAsync / timeout: 300 00:00:32 v #604 > > │ <null> 00:00:32 v #605 > > │ 00:00:32 v #606 > > │ ["1"; "AddHandler"; "2"; "RemoveHandler"] 00:00:32 v #607 > > │ 00:00:32 v #608 > > │ 00:00:32 v #609 > > 00:00:32 v #610 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:32 v #611 > > //// test 00:00:32 v #612 > > 00:00:32 v #613 > > let testEvent = TestEvent () 00:00:32 v #614 > > 00:00:32 v #615 > > async { 00:00:32 v #616 > > testEvent.AddCall "1" 00:00:32 v #617 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:32 v #618 > > do! testEvent.WaitCall "AddHandler" 00:00:32 v #619 > > testEvent.AddCall "2" 00:00:32 v #620 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:32 v #621 > > testEvent.AddCall $"testEvent.EventInterface.Subscribe({args})" 00:00:32 v #622 > > ) 00:00:32 v #623 > > testEvent.AddCall "3" 00:00:32 v #624 > > do! child 00:00:32 v #625 > > testEvent.AddCall "4" 00:00:32 v #626 > > } 00:00:32 v #627 > > |> Async.runWithTimeout 300 00:00:32 v #628 > > |> _assertEqual None 00:00:32 v #629 > > 00:00:32 v #630 > > testEvent.Calls 00:00:32 v #631 > > |> _assertEqual [[ "1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 00:00:32 v #632 > > "RemoveHandler"; "IObservable.Dispose" ]] 00:00:32 v #633 > > 00:00:32 v #634 > > ── [ 401.78ms - stdout ] ─────────────────────────────────────────────────────── 00:00:32 v #635 > > │ 00:00:02 d #2 Async.runWithTimeoutAsync / timeout: 300 00:00:32 v #636 > > │ <null> 00:00:32 v #637 > > │ 00:00:32 v #638 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 00:00:32 v #639 > > "RemoveHandler"; "IObservable.Dispose"] 00:00:32 v #640 > > │ 00:00:32 v #641 > > │ 00:00:32 v #642 > > 00:00:32 v #643 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:32 v #644 > > //// test 00:00:32 v #645 > > 00:00:32 v #646 > > let testEvent = TestEvent () 00:00:32 v #647 > > 00:00:32 v #648 > > async { 00:00:32 v #649 > > testEvent.AddCall "1" 00:00:32 v #650 > > let! child = testEvent.Subscribe () |> testEvent.Iter |> Async.StartChild 00:00:32 v #651 > > do! testEvent.WaitCall "AddHandler" 00:00:32 v #652 > > testEvent.AddCall "2" 00:00:32 v #653 > > use _ = testEvent.EventInterface.Subscribe (fun args -> 00:00:32 v #654 > > async { 00:00:32 v #655 > > do! testEvent.WaitCall "TestEvent.Iter(0: System.Exception: error)" 00:00:32 v #656 > > testEvent.AddCall 00:00:32 v #657 > > $"testEvent.EventInterface.Subscribe({args.GetException () |> 00:00:32 v #658 > > SpiralSm.format_exception})" 00:00:32 v #659 > > } 00:00:32 v #660 > > |> Async.RunSynchronously 00:00:32 v #661 > > ) 00:00:32 v #662 > > testEvent.AddCall "3" 00:00:32 v #663 > > testEvent.Event.Trigger (null, ErrorEventArgs (Exception "error")) 00:00:32 v #664 > > testEvent.AddCall "4" 00:00:32 v #665 > > do! child 00:00:32 v #666 > > testEvent.AddCall "5" 00:00:32 v #667 > > } 00:00:32 v #668 > > |> Async.runWithTimeout 300 00:00:32 v #669 > > |> _assertEqual None 00:00:32 v #670 > > 00:00:32 v #671 > > testEvent.Calls 00:00:32 v #672 > > |> _assertEqual [[ 00:00:32 v #673 > > "1" 00:00:32 v #674 > > "AddHandler" 00:00:32 v #675 > > "2" 00:00:32 v #676 > > "IObservable.Subscribe" 00:00:32 v #677 > > "3" 00:00:32 v #678 > > "TestEvent.Subscribe(System.Exception: error)" 00:00:32 v #679 > > "TestEvent.Iter(0: System.Exception: error)" 00:00:32 v #680 > > "testEvent.EventInterface.Subscribe(System.Exception: error)" 00:00:32 v #681 > > "4" 00:00:32 v #682 > > "RemoveHandler" 00:00:32 v #683 > > "IObservable.Dispose" 00:00:32 v #684 > > ]] 00:00:33 v #685 > > 00:00:33 v #686 > > ── [ 424.02ms - stdout ] ─────────────────────────────────────────────────────── 00:00:33 v #687 > > │ 00:00:02 d #3 Async.runWithTimeoutAsync / timeout: 300 00:00:33 v #688 > > │ <null> 00:00:33 v #689 > > │ 00:00:33 v #690 > > │ ["1"; "AddHandler"; "2"; "IObservable.Subscribe"; "3"; 00:00:33 v #691 > > "TestEvent.Subscribe(System.Exception: error)"; 00:00:33 v #692 > > │ "TestEvent.Iter(0: System.Exception: error)"; 00:00:33 v #693 > > "testEvent.EventInterface.Subscribe(System.Exception: error)"; "4"; 00:00:33 v #694 > > │ "RemoveHandler"; "IObservable.Dispose"] 00:00:33 v #695 > > │ 00:00:33 v #696 > > │ 00:00:33 v #697 > > 00:00:33 v #698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:33 v #699 > > │ ## subscribeToken 00:00:33 v #700 > > 00:00:33 v #701 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 v #702 > > let subscribeToken (token : System.Threading.CancellationToken) = 00:00:33 v #703 > > let tcs = new System.Threading.Tasks.TaskCompletionSource () 00:00:33 v #704 > > System.Action tcs.SetResult |> token.Register |> ignore 00:00:33 v #705 > > let start = System.DateTime.Now.Ticks 00:00:33 v #706 > > FSharp.Control.AsyncSeq.unfoldAsync 00:00:33 v #707 > > (fun () -> async { 00:00:33 v #708 > > do! tcs.Task |> Async.AwaitTask 00:00:33 v #709 > > return Some (System.DateTime.Now.Ticks - start, ()) 00:00:33 v #710 > > }) 00:00:33 v #711 > > () 00:00:33 v #712 > > 00:00:33 v #713 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:33 v #714 > > //// test 00:00:33 v #715 > > 00:00:33 v #716 > > let cts = new System.Threading.CancellationTokenSource () 00:00:33 v #717 > > 00:00:33 v #718 > > async { 00:00:33 v #719 > > let! child = 00:00:33 v #720 > > cts.Token 00:00:33 v #721 > > |> subscribeToken 00:00:33 v #722 > > |> FSharp.Control.AsyncSeq.tryFirst 00:00:33 v #723 > > |> Async.StartChild 00:00:33 v #724 > > 00:00:33 v #725 > > do! Async.Sleep 100 00:00:33 v #726 > > cts.Cancel () 00:00:33 v #727 > > return! child 00:00:33 v #728 > > } 00:00:33 v #729 > > |> Async.RunSynchronously 00:00:33 v #730 > > |> Option.get 00:00:33 v #731 > > |> fun x -> x > 900000 00:00:33 v #732 > > |> _assertEqual true 00:00:33 v #733 > > 00:00:33 v #734 > > ── [ 161.31ms - stdout ] ─────────────────────────────────────────────────────── 00:00:33 v #735 > > │ true 00:00:33 v #736 > > │ 00:00:33 v #737 > > │ 00:00:33 v #738 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8097 } 00:00:33 v #739 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:34 v #740 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.ipynb to html 00:00:34 v #741 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:34 v #742 > 00:00:16 v #7 ! validate(nb) 00:00:34 v #743 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:34 v #744 > 00:00:16 v #9 ! return _pygments_highlight( 00:00:34 v #745 > 00:00:16 v #10 ! [NbConvertApp] Writing 303150 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html 00:00:34 v #746 > 00:00:16 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:00:34 v #747 > 00:00:16 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:00:34 v #748 > 00:00:16 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/AsyncSeq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:35 v #749 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:35 v #750 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:35 v #751 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 9056 } 00:00:35 d #752 runtime.execute_with_options_async / { exit_code = 0; output_length = 12205 } 00:00:35 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3 00:00:35 d #753 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:35 v #754 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Common.dib", "--retries", "3"])) } 00:00:35 v #755 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:36 v #756 > > 00:00:36 v #757 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:36 v #758 > > │ # Common (Polyglot) 00:00:48 v #759 > > 00:00:48 v #760 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #761 > > #if !INTERACTIVE 00:00:48 v #762 > > open Lib 00:00:48 v #763 > > #endif 00:00:48 v #764 > > 00:00:48 v #765 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #766 > > let nl = System.Environment.NewLine 00:00:48 v #767 > > let q = @"""" 00:00:48 v #768 > > 00:00:48 v #769 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #770 > > let inline cons head tail = head :: tail 00:00:48 v #771 > > 00:00:48 v #772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:48 v #773 > > │ ## memoize 00:00:48 v #774 > > 00:00:48 v #775 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #776 > > let inline memoize fn = 00:00:48 v #777 > > let result = lazy fn () 00:00:48 v #778 > > fun () -> result.Value 00:00:48 v #779 > > 00:00:48 v #780 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:48 v #781 > > │ ## TraceLevel 00:00:48 v #782 > > 00:00:48 v #783 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #784 > > type TraceLevel = 00:00:48 v #785 > > | Verbose 00:00:48 v #786 > > | Debug 00:00:48 v #787 > > | Info 00:00:48 v #788 > > | Warning 00:00:48 v #789 > > | Critical 00:00:48 v #790 > > 00:00:48 v #791 > > let inline _locals () = "" 00:00:48 v #792 > > 00:00:48 v #793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:48 v #794 > > │ ## trace 00:00:48 v #795 > > 00:00:48 v #796 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #797 > > let to_trace_level = function 00:00:48 v #798 > > | Verbose -> SpiralTrace.TraceLevel.US0_0 00:00:48 v #799 > > | Debug -> SpiralTrace.TraceLevel.US0_1 00:00:48 v #800 > > | Info -> SpiralTrace.TraceLevel.US0_2 00:00:48 v #801 > > | Warning -> SpiralTrace.TraceLevel.US0_3 00:00:48 v #802 > > | Critical -> SpiralTrace.TraceLevel.US0_4 00:00:48 v #803 > > 00:00:48 v #804 > > let trace level fn locals = 00:00:48 v #805 > > let level = level |> to_trace_level 00:00:48 v #806 > > SpiralTrace.trace level fn locals 00:00:48 v #807 > > 00:00:48 v #808 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:48 v #809 > > //// test 00:00:48 v #810 > > 00:00:48 v #811 > > trace Debug (fun () -> "test") _locals 00:00:48 v #812 > > 00:00:48 v #813 > > ── [ 15.74ms - stdout ] ──────────────────────────────────────────────────────── 00:00:48 v #814 > > │ 00:00:00 d #1 test 00:00:48 v #815 > > │ 00:00:48 v #816 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2118 } 00:00:48 v #817 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 v #818 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.ipynb to html 00:00:49 v #819 > 00:00:13 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:49 v #820 > 00:00:13 v #7 ! validate(nb) 00:00:49 v #821 > 00:00:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:49 v #822 > 00:00:14 v #9 ! return _pygments_highlight( 00:00:49 v #823 > 00:00:14 v #10 ! [NbConvertApp] Writing 280765 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html 00:00:49 v #824 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:00:49 v #825 > 00:00:14 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:00:49 v #826 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 v #827 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:49 v #828 > 00:00:14 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:49 v #829 > 00:00:14 d #16 spiral.run / dib / { exit_code = 0; result_length = 3073 } 00:00:49 d #830 runtime.execute_with_options_async / { exit_code = 0; output_length = 5846 } 00:00:49 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3 00:00:49 d #831 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 v #832 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "CommonFSharp.dib", "--retries", "3"])) } 00:00:49 v #833 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:51 v #834 > > 00:00:51 v #835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:51 v #836 > > │ # CommonFSharp (Polyglot) 00:01:03 v #837 > > 00:01:03 v #838 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #839 > > open Common 00:01:03 v #840 > > 00:01:03 v #841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:03 v #842 > > │ ## getUnionCaseName 00:01:03 v #843 > > 00:01:03 v #844 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #845 > > let inline getUnionCaseName<'T> (x: 'T) = 00:01:03 v #846 > > match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with 00:01:03 v #847 > > | case, _ -> case.Name 00:01:03 v #848 > > 00:01:03 v #849 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:03 v #850 > > //// test 00:01:03 v #851 > > 00:01:03 v #852 > > TraceLevel.Critical 00:01:03 v #853 > > |> getUnionCaseName 00:01:03 v #854 > > |> _assertEqual (nameof TraceLevel.Critical) 00:01:03 v #855 > > 00:01:03 v #856 > > ── [ 47.83ms - stdout ] ──────────────────────────────────────────────────────── 00:01:03 v #857 > > │ "Critical" 00:01:03 v #858 > > │ 00:01:03 v #859 > > │ 00:01:03 v #860 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1002 } 00:01:03 v #861 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:03 v #862 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.ipynb to html 00:01:03 v #863 > 00:00:13 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:03 v #864 > 00:00:13 v #7 ! validate(nb) 00:01:04 v #865 > 00:00:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:04 v #866 > 00:00:14 v #9 ! return _pygments_highlight( 00:01:04 v #867 > 00:00:14 v #10 ! [NbConvertApp] Writing 275628 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html 00:01:04 v #868 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:01:04 v #869 > 00:00:14 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:01:04 v #870 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/CommonFSharp.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:04 v #871 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:04 v #872 > 00:00:14 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:04 v #873 > 00:00:14 d #16 spiral.run / dib / { exit_code = 0; result_length = 1969 } 00:01:04 d #874 runtime.execute_with_options_async / { exit_code = 0; output_length = 4728 } 00:01:04 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3 00:01:04 d #875 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:04 v #876 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "FileSystem.dib", "--retries", "3"])) } 00:01:04 v #877 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:06 v #878 > > 00:01:06 v #879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:06 v #880 > > │ # FileSystem (Polyglot) 00:01:08 v #881 > > 00:01:08 v #882 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:08 v #883 > > #r 00:01:08 v #884 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:01:08 v #885 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:01:08 v #886 > > #r 00:01:08 v #887 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:01:08 v #888 > > 0/System.Reactive.dll" 00:01:08 v #889 > > #r 00:01:08 v #890 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:01:08 v #891 > > netstandard2.0/System.Reactive.Linq.dll" 00:01:08 v #892 > > #r 00:01:08 v #893 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:01:18 v #894 > > 00:01:18 v #895 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:18 v #896 > > #if !INTERACTIVE 00:01:18 v #897 > > open Lib 00:01:18 v #898 > > #endif 00:01:18 v #899 > > 00:01:18 v #900 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:18 v #901 > > open Common 00:01:18 v #902 > > open SpiralFileSystem.Operators 00:01:18 v #903 > > 00:01:18 v #904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:18 v #905 > > │ ## watchDirectory 00:01:18 v #906 > > 00:01:18 v #907 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:18 v #908 > > [[<RequireQualifiedAccess>]] 00:01:18 v #909 > > type FileSystemChangeType = 00:01:18 v #910 > > | Failure 00:01:18 v #911 > > | Changed 00:01:18 v #912 > > | Created 00:01:18 v #913 > > | Deleted 00:01:18 v #914 > > | Renamed 00:01:18 v #915 > > 00:01:18 v #916 > > [[<RequireQualifiedAccess>]] 00:01:18 v #917 > > type FileSystemChange = 00:01:18 v #918 > > | Failure of exn: exn 00:01:18 v #919 > > | Changed of path: string * content: string option 00:01:18 v #920 > > | Created of path: string * content: string option 00:01:18 v #921 > > | Deleted of path: string 00:01:18 v #922 > > | Renamed of oldPath: string * (string * string option) 00:01:18 v #923 > > 00:01:18 v #924 > > 00:01:18 v #925 > > let inline watchDirectoryWithFilter filter shouldReadContent path = 00:01:18 v #926 > > let fullPath = path |> System.IO.Path.GetFullPath 00:01:18 v #927 > > let _locals () = $"filter: {filter} / {_locals ()}" 00:01:18 v #928 > > 00:01:18 v #929 > > let watcher = 00:01:18 v #930 > > new System.IO.FileSystemWatcher ( 00:01:18 v #931 > > Path = fullPath, 00:01:18 v #932 > > NotifyFilter = filter, 00:01:18 v #933 > > EnableRaisingEvents = true, 00:01:18 v #934 > > IncludeSubdirectories = true 00:01:18 v #935 > > ) 00:01:18 v #936 > > 00:01:18 v #937 > > let inline getEventPath (path : string) = 00:01:18 v #938 > > path |> SpiralSm.trim |> SpiralSm.replace fullPath "" |> 00:01:18 v #939 > > SpiralSm.trim_start [[| '/'; '\\' |]] 00:01:18 v #940 > > 00:01:18 v #941 > > let inline ticks () = 00:01:18 v #942 > > System.DateTime.UtcNow.Ticks 00:01:18 v #943 > > 00:01:18 v #944 > > let changedStream = 00:01:18 v #945 > > AsyncSeq.subscribeEvent 00:01:18 v #946 > > watcher.Changed 00:01:18 v #947 > > (fun event -> 00:01:18 v #948 > > ticks (), 00:01:18 v #949 > > [[ FileSystemChange.Changed (getEventPath event.FullPath, None) 00:01:18 v #950 > > ]] 00:01:18 v #951 > > ) 00:01:18 v #952 > > 00:01:18 v #953 > > let deletedStream = 00:01:18 v #954 > > AsyncSeq.subscribeEvent 00:01:18 v #955 > > watcher.Deleted 00:01:18 v #956 > > (fun event -> 00:01:18 v #957 > > ticks (), 00:01:18 v #958 > > [[ FileSystemChange.Deleted (getEventPath event.FullPath) ]] 00:01:18 v #959 > > ) 00:01:18 v #960 > > 00:01:18 v #961 > > let createdStream = 00:01:18 v #962 > > AsyncSeq.subscribeEvent 00:01:18 v #963 > > watcher.Created 00:01:18 v #964 > > (fun event -> 00:01:18 v #965 > > let path = getEventPath event.FullPath 00:01:18 v #966 > > ticks (), [[ 00:01:18 v #967 > > FileSystemChange.Created (path, None) 00:01:18 v #968 > > if SpiralPlatform.is_windows () then 00:01:18 v #969 > > FileSystemChange.Changed (path, None) 00:01:18 v #970 > > ]]) 00:01:18 v #971 > > 00:01:18 v #972 > > let renamedStream = 00:01:18 v #973 > > AsyncSeq.subscribeEvent 00:01:18 v #974 > > watcher.Renamed 00:01:18 v #975 > > (fun event -> 00:01:18 v #976 > > ticks (), [[ 00:01:18 v #977 > > FileSystemChange.Renamed ( 00:01:18 v #978 > > getEventPath event.OldFullPath, 00:01:18 v #979 > > (getEventPath event.FullPath, None) 00:01:18 v #980 > > ) 00:01:18 v #981 > > ]] 00:01:18 v #982 > > ) 00:01:18 v #983 > > 00:01:18 v #984 > > let failureStream = 00:01:18 v #985 > > AsyncSeq.subscribeEvent 00:01:18 v #986 > > watcher.Error 00:01:18 v #987 > > (fun event -> ticks (), [[ FileSystemChange.Failure 00:01:18 v #988 > > (event.GetException ()) ]]) 00:01:18 v #989 > > 00:01:18 v #990 > > let stream = 00:01:18 v #991 > > [[ 00:01:18 v #992 > > changedStream 00:01:18 v #993 > > deletedStream 00:01:18 v #994 > > createdStream 00:01:18 v #995 > > renamedStream 00:01:18 v #996 > > failureStream 00:01:18 v #997 > > ]] 00:01:18 v #998 > > |> FSharp.Control.AsyncSeq.mergeAll 00:01:18 v #999 > > |> FSharp.Control.AsyncSeq.map (fun (t, events) -> 00:01:18 v #1000 > > events 00:01:18 v #1001 > > |> List.fold 00:01:18 v #1002 > > (fun (i, events) event -> 00:01:18 v #1003 > > i + 1L, 00:01:18 v #1004 > > (t + i, event) :: events) 00:01:18 v #1005 > > (0L, [[]]) 00:01:18 v #1006 > > |> snd 00:01:18 v #1007 > > |> List.rev 00:01:18 v #1008 > > ) 00:01:18 v #1009 > > |> FSharp.Control.AsyncSeq.concatSeq 00:01:18 v #1010 > > |> FSharp.Control.AsyncSeq.mapAsyncParallel (fun (t, event) -> async { 00:01:18 v #1011 > > match shouldReadContent event, event with 00:01:18 v #1012 > > | true, FileSystemChange.Changed (path, _) -> 00:01:18 v #1013 > > do! Async.Sleep 5 00:01:18 v #1014 > > let! content = fullPath </> path |> 00:01:18 v #1015 > > SpiralFileSystem.read_all_text_retry_async 00:01:18 v #1016 > > return t, FileSystemChange.Changed (path, content) 00:01:18 v #1017 > > | true, FileSystemChange.Created (path, _) -> 00:01:18 v #1018 > > do! Async.Sleep 5 00:01:18 v #1019 > > let! content = fullPath </> path |> 00:01:18 v #1020 > > SpiralFileSystem.read_all_text_retry_async 00:01:18 v #1021 > > return t, FileSystemChange.Created (path, content) 00:01:18 v #1022 > > | true, FileSystemChange.Renamed (oldPath, (newPath, _)) -> 00:01:18 v #1023 > > let! content = fullPath </> newPath |> 00:01:18 v #1024 > > SpiralFileSystem.read_all_text_retry_async 00:01:18 v #1025 > > return t, FileSystemChange.Renamed (oldPath, (newPath, content)) 00:01:18 v #1026 > > | _ -> return t, event 00:01:18 v #1027 > > }) 00:01:18 v #1028 > > 00:01:18 v #1029 > > let disposable = 00:01:18 v #1030 > > new_disposable (fun () -> 00:01:18 v #1031 > > trace Debug (fun () -> "FileSystem.watchWithFilter / Disposing watch 00:01:18 v #1032 > > stream") _locals 00:01:18 v #1033 > > watcher.EnableRaisingEvents <- false 00:01:18 v #1034 > > watcher.Dispose () 00:01:18 v #1035 > > ) 00:01:18 v #1036 > > 00:01:18 v #1037 > > stream, disposable 00:01:18 v #1038 > > 00:01:18 v #1039 > > let inline watchDirectory path = 00:01:18 v #1040 > > watchDirectoryWithFilter 00:01:18 v #1041 > > (System.IO.NotifyFilters.FileName 00:01:18 v #1042 > > // ||| System.IO.NotifyFilters.DirectoryName 00:01:18 v #1043 > > // ||| System.IO.NotifyFilters.Attributes 00:01:18 v #1044 > > //// ||| System.IO.NotifyFilters.Size 00:01:18 v #1045 > > ||| System.IO.NotifyFilters.LastWrite 00:01:18 v #1046 > > //// ||| System.IO.NotifyFilters.LastAccess 00:01:18 v #1047 > > // ||| System.IO.NotifyFilters.CreationTime 00:01:18 v #1048 > > // ||| System.IO.NotifyFilters.Security 00:01:18 v #1049 > > ) 00:01:18 v #1050 > > path 00:01:18 v #1051 > > 00:01:18 v #1052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:18 v #1053 > > │ ### testEventsRaw (test) 00:01:18 v #1054 > > 00:01:18 v #1055 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:18 v #1056 > > //// test 00:01:18 v #1057 > > 00:01:18 v #1058 > > let inline testEventsRaw 00:01:18 v #1059 > > (watchFn : (_ -> bool) -> string -> FSharp.Control.AsyncSeq<int64 * 00:01:18 v #1060 > > FileSystemChange> * IDisposable) 00:01:18 v #1061 > > write 00:01:18 v #1062 > > = 00:01:18 v #1063 > > let struct (tempDir, tempDisposable) = 00:01:18 v #1064 > > "FileSystem.testEventsRaw" 00:01:18 v #1065 > > |> SpiralCrypto.hash_text 00:01:18 v #1066 > > |> SpiralFileSystem.create_temp_dir' 00:01:18 v #1067 > > let stream, disposable = watchFn (fun _ -> true) tempDir 00:01:18 v #1068 > > 00:01:18 v #1069 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:18 v #1070 > > 00:01:18 v #1071 > > let inline iter () = 00:01:18 v #1072 > > stream 00:01:18 v #1073 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:18 v #1074 > > events.Add event }) 00:01:18 v #1075 > > 00:01:18 v #1076 > > let run = async { 00:01:18 v #1077 > > let! _ = iter () |> Async.StartChild 00:01:18 v #1078 > > do! Async.Sleep 250 00:01:18 v #1079 > > return! write tempDir 00:01:18 v #1080 > > } 00:01:18 v #1081 > > 00:01:18 v #1082 > > try 00:01:18 v #1083 > > run 00:01:18 v #1084 > > |> Async.runWithTimeout 60000 00:01:18 v #1085 > > |> _assertEqual (Some ()) 00:01:18 v #1086 > > finally 00:01:18 v #1087 > > disposable.Dispose () 00:01:18 v #1088 > > tempDisposable.Dispose () 00:01:18 v #1089 > > 00:01:18 v #1090 > > let eventsLog = 00:01:18 v #1091 > > events 00:01:18 v #1092 > > |> Seq.toList 00:01:18 v #1093 > > |> List.sortBy fst 00:01:18 v #1094 > > |> List.fold 00:01:18 v #1095 > > (fun (prev, acc) (ticks, event) -> 00:01:18 v #1096 > > ticks, (ticks, (if prev = 0L then 0L else ticks - prev), event) 00:01:18 v #1097 > > :: acc 00:01:18 v #1098 > > ) 00:01:18 v #1099 > > (0L, [[]]) 00:01:18 v #1100 > > |> snd 00:01:18 v #1101 > > |> List.rev 00:01:18 v #1102 > > |> List.map (fun (diff, n, event) -> $"{n} / {diff} / {event}" |> 00:01:18 v #1103 > > SpiralSm.ellipsis_end 100L) 00:01:18 v #1104 > > |> SpiralSm.concat "\n" 00:01:18 v #1105 > > let _locals () = $"eventsLog: \n{eventsLog} / {_locals ()}" 00:01:18 v #1106 > > trace Debug (fun () -> "FileSystem.testEventsRaw") _locals 00:01:18 v #1107 > > 00:01:18 v #1108 > > events 00:01:18 v #1109 > > |> Seq.toList 00:01:18 v #1110 > > |> List.sortBy fst 00:01:18 v #1111 > > |> List.map snd 00:01:18 v #1112 > > |> List.fold 00:01:18 v #1113 > > (fun acc event -> 00:01:18 v #1114 > > match acc, event with 00:01:18 v #1115 > > | FileSystemChange.Changed (lastPath, Some lastContent) as lastEvent 00:01:18 v #1116 > > :: acc, 00:01:18 v #1117 > > FileSystemChange.Changed (path, Some content) 00:01:18 v #1118 > > when lastPath = path && content |> SpiralSm.starts_with 00:01:18 v #1119 > > lastContent 00:01:18 v #1120 > > -> 00:01:18 v #1121 > > event :: acc 00:01:18 v #1122 > > | _ -> event :: acc 00:01:18 v #1123 > > ) 00:01:18 v #1124 > > [[]] 00:01:18 v #1125 > > |> List.rev 00:01:18 v #1126 > > 00:01:18 v #1127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:18 v #1128 > > │ #### fast (test) 00:01:18 v #1129 > > 00:01:18 v #1130 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:18 v #1131 > > //// test 00:01:18 v #1132 > > 00:01:18 v #1133 > > let inline write path = async { 00:01:18 v #1134 > > let n = 2 00:01:18 v #1135 > > 00:01:18 v #1136 > > for i = 1 to n do 00:01:18 v #1137 > > do! $"a{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:18 v #1138 > > $"file{i}.txt") 00:01:18 v #1139 > > 00:01:18 v #1140 > > do! Async.Sleep 250 00:01:18 v #1141 > > 00:01:18 v #1142 > > for i = 1 to n do 00:01:18 v #1143 > > do! $"b{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:18 v #1144 > > $"file{i}.txt") 00:01:18 v #1145 > > 00:01:18 v #1146 > > do! Async.Sleep 250 00:01:18 v #1147 > > 00:01:18 v #1148 > > for i = 1 to n do 00:01:18 v #1149 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:18 v #1150 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:18 v #1151 > > 00:01:18 v #1152 > > do! Async.Sleep 250 00:01:18 v #1153 > > 00:01:18 v #1154 > > for i = 1 to n do 00:01:18 v #1155 > > do! $"c{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:18 v #1156 > > $"file_{i}.txt") 00:01:18 v #1157 > > 00:01:18 v #1158 > > do! Async.Sleep 250 00:01:18 v #1159 > > 00:01:18 v #1160 > > for i = 1 to n do 00:01:18 v #1161 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:18 v #1162 > > Async.Ignore 00:01:18 v #1163 > > 00:01:18 v #1164 > > do! Async.Sleep 250 00:01:18 v #1165 > > } 00:01:18 v #1166 > > 00:01:18 v #1167 > > let inline run () = 00:01:18 v #1168 > > let events = testEventsRaw watchDirectory write 00:01:18 v #1169 > > 00:01:18 v #1170 > > events 00:01:18 v #1171 > > |> _sequenceEqual [[ 00:01:18 v #1172 > > FileSystemChange.Created ("file1.txt", Some "a1") 00:01:18 v #1173 > > FileSystemChange.Changed ("file1.txt", Some "a1") 00:01:18 v #1174 > > FileSystemChange.Created ("file2.txt", Some "a2") 00:01:18 v #1175 > > FileSystemChange.Changed ("file2.txt", Some "a2") 00:01:18 v #1176 > > 00:01:18 v #1177 > > FileSystemChange.Changed ("file1.txt", Some "b1") 00:01:18 v #1178 > > FileSystemChange.Changed ("file2.txt", Some "b2") 00:01:18 v #1179 > > 00:01:18 v #1180 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "b1")) 00:01:18 v #1181 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "b2")) 00:01:18 v #1182 > > 00:01:18 v #1183 > > FileSystemChange.Changed ("file_1.txt", Some "c1") 00:01:18 v #1184 > > FileSystemChange.Changed ("file_2.txt", Some "c2") 00:01:18 v #1185 > > 00:01:18 v #1186 > > FileSystemChange.Deleted "file_1.txt" 00:01:18 v #1187 > > FileSystemChange.Deleted "file_2.txt" 00:01:18 v #1188 > > ]] 00:01:18 v #1189 > > 00:01:18 v #1190 > > run 00:01:18 v #1191 > > |> retry_fn 3 00:01:18 v #1192 > > |> _assertEqual (Some ()) 00:01:21 v #1193 > > 00:01:21 v #1194 > > ── [ 2.50s - stdout ] ────────────────────────────────────────────────────────── 00:01:21 v #1195 > > │ Some () 00:01:21 v #1196 > > │ 00:01:21 v #1197 > > │ 00:00:04 d #1 FileSystem.watchWithFilter / Disposing 00:01:21 v #1198 > > watch stream / filter: FileName, LastWrite 00:01:21 v #1199 > > │ 00:00:04 d #2 FileSystem.testEventsRaw / eventsLog: 00:01:21 v #1200 > > │ 0 / 638719916783855416 / Created ("file1.txt", Some "a1") 00:01:21 v #1201 > > │ 12112 / 638719916783867528 / Changed ("file1.txt", Some "a1") 00:01:21 v #1202 > > │ 2153 / 638719916783869681 / Created ("file2.txt", Some "a2") 00:01:21 v #1203 > > │ 50 / 638719916783869731 / Changed ("file2.txt", Some "a2") 00:01:21 v #1204 > > │ 2481535 / 638719916786351266 / Changed ("file1.txt", Some 00:01:21 v #1205 > > "b1") 00:01:21 v #1206 > > │ 579 / 638719916786351845 / Changed ("file1.txt", Some "b1") 00:01:21 v #1207 > > │ 4945 / 638719916786356790 / Changed ("file2.txt", Some "b2") 00:01:21 v #1208 > > │ 193 / 638719916786356983 / Changed ("file2.txt", Some "b2") 00:01:21 v #1209 > > │ 2555840 / 638719916788912823 / Renamed ("file1.txt", 00:01:21 v #1210 > > ("file_1.txt", Some "b1")) 00:01:21 v #1211 > > │ 7053 / 638719916788919876 / Renamed ("file2.txt", 00:01:21 v #1212 > > ("file_2.txt", Some "b2")) 00:01:21 v #1213 > > │ 2523327 / 638719916791443203 / Changed ("file_1.txt", Some 00:01:21 v #1214 > > "c1") 00:01:21 v #1215 > > │ 395 / 638719916791443598 / Changed ("file_1.txt", Some "c1") 00:01:21 v #1216 > > │ 4762 / 638719916791448360 / Changed ("file_2.txt", Some "c2") 00:01:21 v #1217 > > │ 200 / 638719916791448560 / Changed ("file_2.txt", Some "c2") 00:01:21 v #1218 > > │ 2530437 / 638719916793978997 / Deleted "file_1.txt" 00:01:21 v #1219 > > │ 996 / 638719916793979993 / Deleted "file_2.txt" 00:01:21 v #1220 > > │ [Created ("file1.txt", Some "a1"); Changed ("file1.txt", Some 00:01:21 v #1221 > > "a1"); Created ("file2.txt", Some "a2"); 00:01:21 v #1222 > > │ Changed ("file2.txt", Some "a2"); Changed ("file1.txt", Some 00:01:21 v #1223 > > "b1"); Changed ("file2.txt", Some "b2"); 00:01:21 v #1224 > > │ Renamed ("file1.txt", ("file_1.txt", Some "b1")); Renamed 00:01:21 v #1225 > > ("file2.txt", ("file_2.txt", Some "b2")); 00:01:21 v #1226 > > │ Changed ("file_1.txt", Some "c1"); Changed ("file_2.txt", 00:01:21 v #1227 > > Some "c2"); Deleted "file_1.txt"; Deleted "file_2.txt"] 00:01:21 v #1228 > > │ 00:01:21 v #1229 > > │ Some () 00:01:21 v #1230 > > │ 00:01:21 v #1231 > > │ 00:01:21 v #1232 > > 00:01:21 v #1233 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 v #1234 > > │ #### slow (test) 00:01:21 v #1235 > > 00:01:21 v #1236 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:21 v #1237 > > //// test 00:01:21 v #1238 > > 00:01:21 v #1239 > > let inline write path = async { 00:01:21 v #1240 > > let n = 2 00:01:21 v #1241 > > 00:01:21 v #1242 > > let contents = 00:01:21 v #1243 > > [[ 1 .. n ]] 00:01:21 v #1244 > > |> List.map (string >> String.replicate 1_000_000) 00:01:21 v #1245 > > 00:01:21 v #1246 > > for i = 1 to n do 00:01:21 v #1247 > > do! $"{contents.[[i - 1]]}a" |> SpiralFileSystem.write_all_text_async 00:01:21 v #1248 > > (path </> $"file{i}.txt") 00:01:21 v #1249 > > 00:01:21 v #1250 > > do! Async.Sleep 1500 00:01:21 v #1251 > > 00:01:21 v #1252 > > for i = 1 to n do 00:01:21 v #1253 > > do! $"{contents.[[i - 1]]}b" |> SpiralFileSystem.write_all_text_async 00:01:21 v #1254 > > (path </> $"file{i}.txt") 00:01:21 v #1255 > > 00:01:21 v #1256 > > do! Async.Sleep 1500 00:01:21 v #1257 > > 00:01:21 v #1258 > > for i = 1 to n do 00:01:21 v #1259 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:21 v #1260 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:21 v #1261 > > 00:01:21 v #1262 > > do! Async.Sleep 1500 00:01:21 v #1263 > > 00:01:21 v #1264 > > for i = 1 to n do 00:01:21 v #1265 > > do! $"{contents.[[i - 1]]}c" |> SpiralFileSystem.write_all_text_async 00:01:21 v #1266 > > (path </> $"file_{i}.txt") 00:01:21 v #1267 > > 00:01:21 v #1268 > > do! Async.Sleep 1500 00:01:21 v #1269 > > 00:01:21 v #1270 > > for i = 1 to n do 00:01:21 v #1271 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:21 v #1272 > > Async.Ignore 00:01:21 v #1273 > > 00:01:21 v #1274 > > do! Async.Sleep 1500 00:01:21 v #1275 > > } 00:01:21 v #1276 > > 00:01:21 v #1277 > > let inline run () = 00:01:21 v #1278 > > let events = 00:01:21 v #1279 > > testEventsRaw watchDirectory write 00:01:21 v #1280 > > |> List.map (function 00:01:21 v #1281 > > | FileSystemChange.Changed (path, Some content) -> 00:01:21 v #1282 > > FileSystemChange.Changed (path, content |> Seq.distinct |> 00:01:21 v #1283 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:21 v #1284 > > | FileSystemChange.Created (path, Some content) -> 00:01:21 v #1285 > > FileSystemChange.Created (path, content |> Seq.distinct |> 00:01:21 v #1286 > > Seq.map string |> SpiralSm.concat "" |> Some) 00:01:21 v #1287 > > | FileSystemChange.Renamed (oldPath, (newPath, Some content)) -> 00:01:21 v #1288 > > FileSystemChange.Renamed ( 00:01:21 v #1289 > > oldPath, 00:01:21 v #1290 > > (newPath, content |> Seq.distinct |> Seq.map string |> 00:01:21 v #1291 > > SpiralSm.concat "" |> Some) 00:01:21 v #1292 > > ) 00:01:21 v #1293 > > | event -> event 00:01:21 v #1294 > > ) 00:01:21 v #1295 > > 00:01:21 v #1296 > > events 00:01:21 v #1297 > > |> _sequenceEqual [[ 00:01:21 v #1298 > > FileSystemChange.Created ("file1.txt", Some "1a") 00:01:21 v #1299 > > FileSystemChange.Changed ("file1.txt", Some "1a") 00:01:21 v #1300 > > FileSystemChange.Created ("file2.txt", Some "2a") 00:01:21 v #1301 > > FileSystemChange.Changed ("file2.txt", Some "2a") 00:01:21 v #1302 > > 00:01:21 v #1303 > > FileSystemChange.Changed ("file1.txt", Some "1b") 00:01:21 v #1304 > > FileSystemChange.Changed ("file2.txt", Some "2b") 00:01:21 v #1305 > > 00:01:21 v #1306 > > FileSystemChange.Renamed ("file1.txt", ("file_1.txt", Some "1b")) 00:01:21 v #1307 > > FileSystemChange.Renamed ("file2.txt", ("file_2.txt", Some "2b")) 00:01:21 v #1308 > > 00:01:21 v #1309 > > FileSystemChange.Changed ("file_1.txt", Some "1c") 00:01:21 v #1310 > > FileSystemChange.Changed ("file_2.txt", Some "2c") 00:01:21 v #1311 > > 00:01:21 v #1312 > > FileSystemChange.Deleted "file_1.txt" 00:01:21 v #1313 > > FileSystemChange.Deleted "file_2.txt" 00:01:21 v #1314 > > ]] 00:01:21 v #1315 > > 00:01:21 v #1316 > > run 00:01:21 v #1317 > > |> retry_fn 5 00:01:21 v #1318 > > |> _assertEqual (Some ()) 00:01:31 v #1319 > > 00:01:31 v #1320 > > ── [ 10.45s - stdout ] ───────────────────────────────────────────────────────── 00:01:31 v #1321 > > │ Some () 00:01:31 v #1322 > > │ 00:01:31 v #1323 > > │ 00:00:12 d #3 FileSystem.watchWithFilter / Disposing 00:01:31 v #1324 > > watch stream / filter: FileName, LastWrite 00:01:31 v #1325 > > │ 00:00:14 d #4 FileSystem.testEventsRaw / eventsLog: 00:01:31 v #1326 > > │ 0 / 638719916809844134 / Created 00:01:31 v #1327 > > │ ("file1.txt", 00:01:31 v #1328 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1329 > > │ 3308 / 638719916809847442 / Changed 00:01:31 v #1330 > > │ 00:01:31 v #1331 > > ("file1.txt"...11111111111111111111111111111111111111111111111a") 00:01:31 v #1332 > > │ 267 / 638719916809847709 / Changed 00:01:31 v #1333 > > │ 00:01:31 v #1334 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1335 > > │ 65 / 638719916809847774 / Changed 00:01:31 v #1336 > > │ ("file1.txt", 00:01:31 v #1337 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1338 > > │ 56 / 638719916809847830 / Changed 00:01:31 v #1339 > > │ ("file1.txt", 00:01:31 v #1340 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1341 > > │ 270 / 638719916809848100 / Changed 00:01:31 v #1342 > > │ 00:01:31 v #1343 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1344 > > │ 78 / 638719916809848178 / Changed 00:01:31 v #1345 > > │ ("file1.txt", 00:01:31 v #1346 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1347 > > │ 482 / 638719916809848660 / Changed 00:01:31 v #1348 > > │ 00:01:31 v #1349 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1350 > > │ 64 / 638719916809848724 / Changed 00:01:31 v #1351 > > │ ("file1.txt", 00:01:31 v #1352 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1353 > > │ 289 / 638719916809849013 / Changed 00:01:31 v #1354 > > │ 00:01:31 v #1355 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1356 > > │ 68 / 638719916809849081 / Changed 00:01:31 v #1357 > > │ ("file1.txt", 00:01:31 v #1358 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1359 > > │ 65 / 638719916809849146 / Changed 00:01:31 v #1360 > > │ ("file1.txt", 00:01:31 v #1361 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1362 > > │ 622 / 638719916809849768 / Changed 00:01:31 v #1363 > > │ 00:01:31 v #1364 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1365 > > │ 53 / 638719916809849821 / Changed 00:01:31 v #1366 > > │ ("file1.txt", 00:01:31 v #1367 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1368 > > │ 264 / 638719916809850085 / Changed 00:01:31 v #1369 > > │ 00:01:31 v #1370 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1371 > > │ 92 / 638719916809850177 / Changed 00:01:31 v #1372 > > │ ("file1.txt", 00:01:31 v #1373 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1374 > > │ 175 / 638719916809850352 / Changed 00:01:31 v #1375 > > │ 00:01:31 v #1376 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1377 > > │ 116 / 638719916809850468 / Changed 00:01:31 v #1378 > > │ 00:01:31 v #1379 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1380 > > │ 83 / 638719916809850551 / Changed 00:01:31 v #1381 > > │ ("file1.txt", 00:01:31 v #1382 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1383 > > │ 521 / 638719916809851072 / Changed 00:01:31 v #1384 > > │ 00:01:31 v #1385 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1386 > > │ 55 / 638719916809851127 / Changed 00:01:31 v #1387 > > │ ("file1.txt", 00:01:31 v #1388 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1389 > > │ 41 / 638719916809851168 / Changed 00:01:31 v #1390 > > │ ("file1.txt", 00:01:31 v #1391 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1392 > > │ 600 / 638719916809851768 / Changed 00:01:31 v #1393 > > │ 00:01:31 v #1394 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1395 > > │ 79 / 638719916809851847 / Changed 00:01:31 v #1396 > > │ ("file1.txt", 00:01:31 v #1397 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1398 > > │ 232 / 638719916809852079 / Changed 00:01:31 v #1399 > > │ 00:01:31 v #1400 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1401 > > │ 215 / 638719916809852294 / Changed 00:01:31 v #1402 > > │ 00:01:31 v #1403 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1404 > > │ 215 / 638719916809852509 / Changed 00:01:31 v #1405 > > │ 00:01:31 v #1406 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1407 > > │ 163 / 638719916809852672 / Changed 00:01:31 v #1408 > > │ 00:01:31 v #1409 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1410 > > │ 128 / 638719916809852800 / Changed 00:01:31 v #1411 > > │ 00:01:31 v #1412 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1413 > > │ 266 / 638719916809853066 / Changed 00:01:31 v #1414 > > │ 00:01:31 v #1415 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1416 > > │ 77 / 638719916809853143 / Changed 00:01:31 v #1417 > > │ ("file1.txt", 00:01:31 v #1418 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1419 > > │ 328 / 638719916809853471 / Changed 00:01:31 v #1420 > > │ 00:01:31 v #1421 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1422 > > │ 50 / 638719916809853521 / Changed 00:01:31 v #1423 > > │ ("file1.txt", 00:01:31 v #1424 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1425 > > │ 193 / 638719916809853714 / Changed 00:01:31 v #1426 > > │ 00:01:31 v #1427 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1428 > > │ 236 / 638719916809853950 / Changed 00:01:31 v #1429 > > │ 00:01:31 v #1430 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1431 > > │ 53 / 638719916809854003 / Changed 00:01:31 v #1432 > > │ ("file1.txt", 00:01:31 v #1433 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1434 > > │ 211 / 638719916809854214 / Changed 00:01:31 v #1435 > > │ 00:01:31 v #1436 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1437 > > │ 204 / 638719916809854418 / Changed 00:01:31 v #1438 > > │ 00:01:31 v #1439 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1440 > > │ 203 / 638719916809854621 / Changed 00:01:31 v #1441 > > │ 00:01:31 v #1442 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1443 > > │ 49 / 638719916809854670 / Changed 00:01:31 v #1444 > > │ ("file1.txt", 00:01:31 v #1445 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1446 > > │ 222 / 638719916809854892 / Changed 00:01:31 v #1447 > > │ 00:01:31 v #1448 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1449 > > │ 175 / 638719916809855067 / Changed 00:01:31 v #1450 > > │ 00:01:31 v #1451 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1452 > > │ 48 / 638719916809855115 / Changed 00:01:31 v #1453 > > │ ("file1.txt", 00:01:31 v #1454 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1455 > > │ 214 / 638719916809855329 / Changed 00:01:31 v #1456 > > │ 00:01:31 v #1457 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1458 > > │ 185 / 638719916809855514 / Changed 00:01:31 v #1459 > > │ 00:01:31 v #1460 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1461 > > │ 63 / 638719916809855577 / Changed 00:01:31 v #1462 > > │ ("file1.txt", 00:01:31 v #1463 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1464 > > │ 268 / 638719916809855845 / Changed 00:01:31 v #1465 > > │ 00:01:31 v #1466 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1467 > > │ 49 / 638719916809855894 / Changed 00:01:31 v #1468 > > │ ("file1.txt", 00:01:31 v #1469 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1470 > > │ 192 / 638719916809856086 / Changed 00:01:31 v #1471 > > │ 00:01:31 v #1472 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1473 > > │ 30 / 638719916809856116 / Changed 00:01:31 v #1474 > > │ ("file1.txt", 00:01:31 v #1475 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1476 > > │ 200 / 638719916809856316 / Changed 00:01:31 v #1477 > > │ 00:01:31 v #1478 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1479 > > │ 209 / 638719916809856525 / Changed 00:01:31 v #1480 > > │ 00:01:31 v #1481 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1482 > > │ 60 / 638719916809856585 / Changed 00:01:31 v #1483 > > │ ("file1.txt", 00:01:31 v #1484 > > │ ...11111111111111111111111111111111111111111111111a") 00:01:31 v #1485 > > │ 223 / 638719916809856808 / Changed 00:01:31 v #1486 > > │ 00:01:31 v #1487 > > ("file1.txt",...11111111111111111111111111111111111111111111111a") 00:01:31 v #1488 > > │ 14488 / 638719916809871296 / Created 00:01:31 v #1489 > > │ 00:01:31 v #1490 > > ("file2.txt...22222222222222222222222222222222222222222222222a") 00:01:31 v #1491 > > │ 189 / 638719916809871485 / Changed 00:01:31 v #1492 > > │ 00:01:31 v #1493 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1494 > > │ 378 / 638719916809871863 / Changed 00:01:31 v #1495 > > │ 00:01:31 v #1496 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1497 > > │ 363 / 638719916809872226 / Changed 00:01:31 v #1498 > > │ 00:01:31 v #1499 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1500 > > │ 63 / 638719916809872289 / Changed 00:01:31 v #1501 > > │ ("file2.txt", 00:01:31 v #1502 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1503 > > │ 76 / 638719916809872365 / Changed 00:01:31 v #1504 > > │ ("file2.txt", 00:01:31 v #1505 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1506 > > │ 143 / 638719916809872508 / Changed 00:01:31 v #1507 > > │ 00:01:31 v #1508 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1509 > > │ 121 / 638719916809872629 / Changed 00:01:31 v #1510 > > │ 00:01:31 v #1511 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1512 > > │ 72 / 638719916809872701 / Changed 00:01:31 v #1513 > > │ ("file2.txt", 00:01:31 v #1514 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1515 > > │ 219 / 638719916809872920 / Changed 00:01:31 v #1516 > > │ 00:01:31 v #1517 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1518 > > │ 34 / 638719916809872954 / Changed 00:01:31 v #1519 > > │ ("file2.txt", 00:01:31 v #1520 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1521 > > │ 123 / 638719916809873077 / Changed 00:01:31 v #1522 > > │ 00:01:31 v #1523 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1524 > > │ 30 / 638719916809873107 / Changed 00:01:31 v #1525 > > │ ("file2.txt", 00:01:31 v #1526 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1527 > > │ 191 / 638719916809873298 / Changed 00:01:31 v #1528 > > │ 00:01:31 v #1529 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1530 > > │ 138 / 638719916809873436 / Changed 00:01:31 v #1531 > > │ 00:01:31 v #1532 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1533 > > │ 30 / 638719916809873466 / Changed 00:01:31 v #1534 > > │ ("file2.txt", 00:01:31 v #1535 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1536 > > │ 260 / 638719916809873726 / Changed 00:01:31 v #1537 > > │ 00:01:31 v #1538 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1539 > > │ 126 / 638719916809873852 / Changed 00:01:31 v #1540 > > │ 00:01:31 v #1541 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1542 > > │ 29 / 638719916809873881 / Changed 00:01:31 v #1543 > > │ ("file2.txt", 00:01:31 v #1544 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1545 > > │ 193 / 638719916809874074 / Changed 00:01:31 v #1546 > > │ 00:01:31 v #1547 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1548 > > │ 42 / 638719916809874116 / Changed 00:01:31 v #1549 > > │ ("file2.txt", 00:01:31 v #1550 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1551 > > │ 285 / 638719916809874401 / Changed 00:01:31 v #1552 > > │ 00:01:31 v #1553 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1554 > > │ 99 / 638719916809874500 / Changed 00:01:31 v #1555 > > │ ("file2.txt", 00:01:31 v #1556 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1557 > > │ 188 / 638719916809874688 / Changed 00:01:31 v #1558 > > │ 00:01:31 v #1559 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1560 > > │ 49 / 638719916809874737 / Changed 00:01:31 v #1561 > > │ ("file2.txt", 00:01:31 v #1562 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1563 > > │ 327 / 638719916809875064 / Changed 00:01:31 v #1564 > > │ 00:01:31 v #1565 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1566 > > │ 69 / 638719916809875133 / Changed 00:01:31 v #1567 > > │ ("file2.txt", 00:01:31 v #1568 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1569 > > │ 293 / 638719916809875426 / Changed 00:01:31 v #1570 > > │ 00:01:31 v #1571 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1572 > > │ 100 / 638719916809875526 / Changed 00:01:31 v #1573 > > │ 00:01:31 v #1574 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1575 > > │ 178 / 638719916809875704 / Changed 00:01:31 v #1576 > > │ 00:01:31 v #1577 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1578 > > │ 56 / 638719916809875760 / Changed 00:01:31 v #1579 > > │ ("file2.txt", 00:01:31 v #1580 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1581 > > │ 261 / 638719916809876021 / Changed 00:01:31 v #1582 > > │ 00:01:31 v #1583 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1584 > > │ 66 / 638719916809876087 / Changed 00:01:31 v #1585 > > │ ("file2.txt", 00:01:31 v #1586 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1587 > > │ 316 / 638719916809876403 / Changed 00:01:31 v #1588 > > │ 00:01:31 v #1589 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1590 > > │ 45 / 638719916809876448 / Changed 00:01:31 v #1591 > > │ ("file2.txt", 00:01:31 v #1592 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1593 > > │ 50 / 638719916809876498 / Changed 00:01:31 v #1594 > > │ ("file2.txt", 00:01:31 v #1595 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1596 > > │ 543 / 638719916809877041 / Changed 00:01:31 v #1597 > > │ 00:01:31 v #1598 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1599 > > │ 63 / 638719916809877104 / Changed 00:01:31 v #1600 > > │ ("file2.txt", 00:01:31 v #1601 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1602 > > │ 195 / 638719916809877299 / Changed 00:01:31 v #1603 > > │ 00:01:31 v #1604 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1605 > > │ 53 / 638719916809877352 / Changed 00:01:31 v #1606 > > │ ("file2.txt", 00:01:31 v #1607 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1608 > > │ 211 / 638719916809877563 / Changed 00:01:31 v #1609 > > │ 00:01:31 v #1610 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1611 > > │ 127 / 638719916809877690 / Changed 00:01:31 v #1612 > > │ 00:01:31 v #1613 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1614 > > │ 169 / 638719916809877859 / Changed 00:01:31 v #1615 > > │ 00:01:31 v #1616 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1617 > > │ 59 / 638719916809877918 / Changed 00:01:31 v #1618 > > │ ("file2.txt", 00:01:31 v #1619 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1620 > > │ 223 / 638719916809878141 / Changed 00:01:31 v #1621 > > │ 00:01:31 v #1622 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1623 > > │ 42 / 638719916809878183 / Changed 00:01:31 v #1624 > > │ ("file2.txt", 00:01:31 v #1625 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1626 > > │ 203 / 638719916809878386 / Changed 00:01:31 v #1627 > > │ 00:01:31 v #1628 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1629 > > │ 28 / 638719916809878414 / Changed 00:01:31 v #1630 > > │ ("file2.txt", 00:01:31 v #1631 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1632 > > │ 195 / 638719916809878609 / Changed 00:01:31 v #1633 > > │ 00:01:31 v #1634 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1635 > > │ 249 / 638719916809878858 / Changed 00:01:31 v #1636 > > │ 00:01:31 v #1637 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1638 > > │ 224 / 638719916809879082 / Changed 00:01:31 v #1639 > > │ 00:01:31 v #1640 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1641 > > │ 45 / 638719916809879127 / Changed 00:01:31 v #1642 > > │ ("file2.txt", 00:01:31 v #1643 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1644 > > │ 219 / 638719916809879346 / Changed 00:01:31 v #1645 > > │ 00:01:31 v #1646 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1647 > > │ 178 / 638719916809879524 / Changed 00:01:31 v #1648 > > │ 00:01:31 v #1649 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1650 > > │ 51 / 638719916809879575 / Changed 00:01:31 v #1651 > > │ ("file2.txt", 00:01:31 v #1652 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1653 > > │ 209 / 638719916809879784 / Changed 00:01:31 v #1654 > > │ 00:01:31 v #1655 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1656 > > │ 1575 / 638719916809881359 / Changed 00:01:31 v #1657 > > │ 00:01:31 v #1658 > > ("file2.txt"...22222222222222222222222222222222222222222222222a") 00:01:31 v #1659 > > │ 103 / 638719916809881462 / Changed 00:01:31 v #1660 > > │ 00:01:31 v #1661 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1662 > > │ 408 / 638719916809881870 / Changed 00:01:31 v #1663 > > │ 00:01:31 v #1664 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1665 > > │ 194 / 638719916809882064 / Changed 00:01:31 v #1666 > > │ 00:01:31 v #1667 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1668 > > │ 161 / 638719916809882225 / Changed 00:01:31 v #1669 > > │ 00:01:31 v #1670 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1671 > > │ 135 / 638719916809882360 / Changed 00:01:31 v #1672 > > │ 00:01:31 v #1673 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1674 > > │ 136 / 638719916809882496 / Changed 00:01:31 v #1675 > > │ 00:01:31 v #1676 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1677 > > │ 161 / 638719916809882657 / Changed 00:01:31 v #1678 > > │ 00:01:31 v #1679 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1680 > > │ 160 / 638719916809882817 / Changed 00:01:31 v #1681 > > │ 00:01:31 v #1682 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1683 > > │ 163 / 638719916809882980 / Changed 00:01:31 v #1684 > > │ 00:01:31 v #1685 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1686 > > │ 140 / 638719916809883120 / Changed 00:01:31 v #1687 > > │ 00:01:31 v #1688 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1689 > > │ 147 / 638719916809883267 / Changed 00:01:31 v #1690 > > │ 00:01:31 v #1691 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1692 > > │ 132 / 638719916809883399 / Changed 00:01:31 v #1693 > > │ 00:01:31 v #1694 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1695 > > │ 134 / 638719916809883533 / Changed 00:01:31 v #1696 > > │ 00:01:31 v #1697 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1698 > > │ 1306 / 638719916809884839 / Changed 00:01:31 v #1699 > > │ 00:01:31 v #1700 > > ("file2.txt"...22222222222222222222222222222222222222222222222a") 00:01:31 v #1701 > > │ 382 / 638719916809885221 / Changed 00:01:31 v #1702 > > │ 00:01:31 v #1703 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1704 > > │ 66 / 638719916809885287 / Changed 00:01:31 v #1705 > > │ ("file2.txt", 00:01:31 v #1706 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1707 > > │ 153 / 638719916809885440 / Changed 00:01:31 v #1708 > > │ 00:01:31 v #1709 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1710 > > │ 166 / 638719916809885606 / Changed 00:01:31 v #1711 > > │ 00:01:31 v #1712 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1713 > > │ 150 / 638719916809885756 / Changed 00:01:31 v #1714 > > │ 00:01:31 v #1715 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1716 > > │ 165 / 638719916809885921 / Changed 00:01:31 v #1717 > > │ 00:01:31 v #1718 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1719 > > │ 49 / 638719916809885970 / Changed 00:01:31 v #1720 > > │ ("file2.txt", 00:01:31 v #1721 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1722 > > │ 209 / 638719916809886179 / Changed 00:01:31 v #1723 > > │ 00:01:31 v #1724 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1725 > > │ 161 / 638719916809886340 / Changed 00:01:31 v #1726 > > │ 00:01:31 v #1727 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1728 > > │ 152 / 638719916809886492 / Changed 00:01:31 v #1729 > > │ 00:01:31 v #1730 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1731 > > │ 164 / 638719916809886656 / Changed 00:01:31 v #1732 > > │ 00:01:31 v #1733 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1734 > > │ 186 / 638719916809886842 / Changed 00:01:31 v #1735 > > │ 00:01:31 v #1736 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1737 > > │ 165 / 638719916809887007 / Changed 00:01:31 v #1738 > > │ 00:01:31 v #1739 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1740 > > │ 164 / 638719916809887171 / Changed 00:01:31 v #1741 > > │ 00:01:31 v #1742 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1743 > > │ 153 / 638719916809887324 / Changed 00:01:31 v #1744 > > │ 00:01:31 v #1745 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1746 > > │ 248 / 638719916809887572 / Changed 00:01:31 v #1747 > > │ 00:01:31 v #1748 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1749 > > │ 295 / 638719916809887867 / Changed 00:01:31 v #1750 > > │ 00:01:31 v #1751 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1752 > > │ 232 / 638719916809888099 / Changed 00:01:31 v #1753 > > │ 00:01:31 v #1754 > > ("file2.txt",...22222222222222222222222222222222222222222222222a") 00:01:31 v #1755 > > │ 45 / 638719916809888144 / Changed 00:01:31 v #1756 > > │ ("file2.txt", 00:01:31 v #1757 > > │ ...22222222222222222222222222222222222222222222222a") 00:01:31 v #1758 > > │ 15070908 / 638719916824959052 / Changed 00:01:31 v #1759 > > │ 00:01:31 v #1760 > > ("file1....11111111111111111111111111111111111111111111111b") 00:01:31 v #1761 > > │ 405 / 638719916824959457 / Changed 00:01:31 v #1762 > > │ 00:01:31 v #1763 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1764 > > │ 2661 / 638719916824962118 / Changed 00:01:31 v #1765 > > │ 00:01:31 v #1766 > > ("file1.txt"...11111111111111111111111111111111111111111111111b") 00:01:31 v #1767 > > │ 115 / 638719916824962233 / Changed 00:01:31 v #1768 > > │ 00:01:31 v #1769 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1770 > > │ 44 / 638719916824962277 / Changed 00:01:31 v #1771 > > │ ("file1.txt", 00:01:31 v #1772 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1773 > > │ 223 / 638719916824962500 / Changed 00:01:31 v #1774 > > │ 00:01:31 v #1775 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1776 > > │ 38 / 638719916824962538 / Changed 00:01:31 v #1777 > > │ ("file1.txt", 00:01:31 v #1778 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1779 > > │ 231 / 638719916824962769 / Changed 00:01:31 v #1780 > > │ 00:01:31 v #1781 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1782 > > │ 54 / 638719916824962823 / Changed 00:01:31 v #1783 > > │ ("file1.txt", 00:01:31 v #1784 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1785 > > │ 76 / 638719916824962899 / Changed 00:01:31 v #1786 > > │ ("file1.txt", 00:01:31 v #1787 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1788 > > │ 53 / 638719916824962952 / Changed 00:01:31 v #1789 > > │ ("file1.txt", 00:01:31 v #1790 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1791 > > │ 295 / 638719916824963247 / Changed 00:01:31 v #1792 > > │ 00:01:31 v #1793 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1794 > > │ 53 / 638719916824963300 / Changed 00:01:31 v #1795 > > │ ("file1.txt", 00:01:31 v #1796 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1797 > > │ 150 / 638719916824963450 / Changed 00:01:31 v #1798 > > │ 00:01:31 v #1799 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1800 > > │ 207 / 638719916824963657 / Changed 00:01:31 v #1801 > > │ 00:01:31 v #1802 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1803 > > │ 45 / 638719916824963702 / Changed 00:01:31 v #1804 > > │ ("file1.txt", 00:01:31 v #1805 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1806 > > │ 204 / 638719916824963906 / Changed 00:01:31 v #1807 > > │ 00:01:31 v #1808 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1809 > > │ 272 / 638719916824964178 / Changed 00:01:31 v #1810 > > │ 00:01:31 v #1811 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1812 > > │ 57 / 638719916824964235 / Changed 00:01:31 v #1813 > > │ ("file1.txt", 00:01:31 v #1814 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1815 > > │ 43 / 638719916824964278 / Changed 00:01:31 v #1816 > > │ ("file1.txt", 00:01:31 v #1817 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1818 > > │ 188 / 638719916824964466 / Changed 00:01:31 v #1819 > > │ 00:01:31 v #1820 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1821 > > │ 1257 / 638719916824965723 / Changed 00:01:31 v #1822 > > │ 00:01:31 v #1823 > > ("file1.txt"...11111111111111111111111111111111111111111111111b") 00:01:31 v #1824 > > │ 76 / 638719916824965799 / Changed 00:01:31 v #1825 > > │ ("file1.txt", 00:01:31 v #1826 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1827 > > │ 265 / 638719916824966064 / Changed 00:01:31 v #1828 > > │ 00:01:31 v #1829 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1830 > > │ 58 / 638719916824966122 / Changed 00:01:31 v #1831 > > │ ("file1.txt", 00:01:31 v #1832 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1833 > > │ 158 / 638719916824966280 / Changed 00:01:31 v #1834 > > │ 00:01:31 v #1835 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1836 > > │ 154 / 638719916824966434 / Changed 00:01:31 v #1837 > > │ 00:01:31 v #1838 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1839 > > │ 140 / 638719916824966574 / Changed 00:01:31 v #1840 > > │ 00:01:31 v #1841 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1842 > > │ 44 / 638719916824966618 / Changed 00:01:31 v #1843 > > │ ("file1.txt", 00:01:31 v #1844 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1845 > > │ 284 / 638719916824966902 / Changed 00:01:31 v #1846 > > │ 00:01:31 v #1847 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1848 > > │ 88 / 638719916824966990 / Changed 00:01:31 v #1849 > > │ ("file1.txt", 00:01:31 v #1850 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1851 > > │ 342 / 638719916824967332 / Changed 00:01:31 v #1852 > > │ 00:01:31 v #1853 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1854 > > │ 35 / 638719916824967367 / Changed 00:01:31 v #1855 > > │ ("file1.txt", 00:01:31 v #1856 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1857 > > │ 131 / 638719916824967498 / Changed 00:01:31 v #1858 > > │ 00:01:31 v #1859 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1860 > > │ 167 / 638719916824967665 / Changed 00:01:31 v #1861 > > │ 00:01:31 v #1862 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1863 > > │ 44 / 638719916824967709 / Changed 00:01:31 v #1864 > > │ ("file1.txt", 00:01:31 v #1865 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1866 > > │ 198 / 638719916824967907 / Changed 00:01:31 v #1867 > > │ 00:01:31 v #1868 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1869 > > │ 212 / 638719916824968119 / Changed 00:01:31 v #1870 > > │ 00:01:31 v #1871 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1872 > > │ 51 / 638719916824968170 / Changed 00:01:31 v #1873 > > │ ("file1.txt", 00:01:31 v #1874 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1875 > > │ 186 / 638719916824968356 / Changed 00:01:31 v #1876 > > │ 00:01:31 v #1877 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1878 > > │ 50 / 638719916824968406 / Changed 00:01:31 v #1879 > > │ ("file1.txt", 00:01:31 v #1880 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1881 > > │ 227 / 638719916824968633 / Changed 00:01:31 v #1882 > > │ 00:01:31 v #1883 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1884 > > │ 245 / 638719916824968878 / Changed 00:01:31 v #1885 > > │ 00:01:31 v #1886 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1887 > > │ 52 / 638719916824968930 / Changed 00:01:31 v #1888 > > │ ("file1.txt", 00:01:31 v #1889 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1890 > > │ 198 / 638719916824969128 / Changed 00:01:31 v #1891 > > │ 00:01:31 v #1892 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1893 > > │ 51 / 638719916824969179 / Changed 00:01:31 v #1894 > > │ ("file1.txt", 00:01:31 v #1895 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1896 > > │ 159 / 638719916824969338 / Changed 00:01:31 v #1897 > > │ 00:01:31 v #1898 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1899 > > │ 48 / 638719916824969386 / Changed 00:01:31 v #1900 > > │ ("file1.txt", 00:01:31 v #1901 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1902 > > │ 155 / 638719916824969541 / Changed 00:01:31 v #1903 > > │ 00:01:31 v #1904 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1905 > > │ 259 / 638719916824969800 / Changed 00:01:31 v #1906 > > │ 00:01:31 v #1907 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1908 > > │ 170 / 638719916824969970 / Changed 00:01:31 v #1909 > > │ 00:01:31 v #1910 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1911 > > │ 168 / 638719916824970138 / Changed 00:01:31 v #1912 > > │ 00:01:31 v #1913 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1914 > > │ 48 / 638719916824970186 / Changed 00:01:31 v #1915 > > │ ("file1.txt", 00:01:31 v #1916 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1917 > > │ 415 / 638719916824970601 / Changed 00:01:31 v #1918 > > │ 00:01:31 v #1919 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1920 > > │ 79 / 638719916824970680 / Changed 00:01:31 v #1921 > > │ ("file1.txt", 00:01:31 v #1922 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1923 > > │ 184 / 638719916824970864 / Changed 00:01:31 v #1924 > > │ 00:01:31 v #1925 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1926 > > │ 48 / 638719916824970912 / Changed 00:01:31 v #1927 > > │ ("file1.txt", 00:01:31 v #1928 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1929 > > │ 196 / 638719916824971108 / Changed 00:01:31 v #1930 > > │ 00:01:31 v #1931 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1932 > > │ 47 / 638719916824971155 / Changed 00:01:31 v #1933 > > │ ("file1.txt", 00:01:31 v #1934 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1935 > > │ 37 / 638719916824971192 / Changed 00:01:31 v #1936 > > │ ("file1.txt", 00:01:31 v #1937 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1938 > > │ 279 / 638719916824971471 / Changed 00:01:31 v #1939 > > │ 00:01:31 v #1940 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1941 > > │ 1674 / 638719916824973145 / Changed 00:01:31 v #1942 > > │ 00:01:31 v #1943 > > ("file1.txt"...11111111111111111111111111111111111111111111111b") 00:01:31 v #1944 > > │ 122 / 638719916824973267 / Changed 00:01:31 v #1945 > > │ 00:01:31 v #1946 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1947 > > │ 52 / 638719916824973319 / Changed 00:01:31 v #1948 > > │ ("file1.txt", 00:01:31 v #1949 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #1950 > > │ 234 / 638719916824973553 / Changed 00:01:31 v #1951 > > │ 00:01:31 v #1952 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1953 > > │ 196 / 638719916824973749 / Changed 00:01:31 v #1954 > > │ 00:01:31 v #1955 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1956 > > │ 194 / 638719916824973943 / Changed 00:01:31 v #1957 > > │ 00:01:31 v #1958 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1959 > > │ 160 / 638719916824974103 / Changed 00:01:31 v #1960 > > │ 00:01:31 v #1961 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1962 > > │ 225 / 638719916824974328 / Changed 00:01:31 v #1963 > > │ 00:01:31 v #1964 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1965 > > │ 219 / 638719916824974547 / Changed 00:01:31 v #1966 > > │ 00:01:31 v #1967 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1968 > > │ 142 / 638719916824974689 / Changed 00:01:31 v #1969 > > │ 00:01:31 v #1970 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1971 > > │ 165 / 638719916824974854 / Changed 00:01:31 v #1972 > > │ 00:01:31 v #1973 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1974 > > │ 138 / 638719916824974992 / Changed 00:01:31 v #1975 > > │ 00:01:31 v #1976 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1977 > > │ 508 / 638719916824975500 / Changed 00:01:31 v #1978 > > │ 00:01:31 v #1979 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1980 > > │ 175 / 638719916824975675 / Changed 00:01:31 v #1981 > > │ 00:01:31 v #1982 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1983 > > │ 183 / 638719916824975858 / Changed 00:01:31 v #1984 > > │ 00:01:31 v #1985 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1986 > > │ 221 / 638719916824976079 / Changed 00:01:31 v #1987 > > │ 00:01:31 v #1988 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1989 > > │ 183 / 638719916824976262 / Changed 00:01:31 v #1990 > > │ 00:01:31 v #1991 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1992 > > │ 248 / 638719916824976510 / Changed 00:01:31 v #1993 > > │ 00:01:31 v #1994 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1995 > > │ 191 / 638719916824976701 / Changed 00:01:31 v #1996 > > │ 00:01:31 v #1997 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #1998 > > │ 166 / 638719916824976867 / Changed 00:01:31 v #1999 > > │ 00:01:31 v #2000 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2001 > > │ 50 / 638719916824976917 / Changed 00:01:31 v #2002 > > │ ("file1.txt", 00:01:31 v #2003 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #2004 > > │ 191 / 638719916824977108 / Changed 00:01:31 v #2005 > > │ 00:01:31 v #2006 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2007 > > │ 158 / 638719916824977266 / Changed 00:01:31 v #2008 > > │ 00:01:31 v #2009 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2010 > > │ 124 / 638719916824977390 / Changed 00:01:31 v #2011 > > │ 00:01:31 v #2012 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2013 > > │ 240 / 638719916824977630 / Changed 00:01:31 v #2014 > > │ 00:01:31 v #2015 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2016 > > │ 47 / 638719916824977677 / Changed 00:01:31 v #2017 > > │ ("file1.txt", 00:01:31 v #2018 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #2019 > > │ 40 / 638719916824977717 / Changed 00:01:31 v #2020 > > │ ("file1.txt", 00:01:31 v #2021 > > │ ...11111111111111111111111111111111111111111111111b") 00:01:31 v #2022 > > │ 770 / 638719916824978487 / Changed 00:01:31 v #2023 > > │ 00:01:31 v #2024 > > ("file1.txt",...11111111111111111111111111111111111111111111111b") 00:01:31 v #2025 > > │ 32553 / 638719916825011040 / Changed 00:01:31 v #2026 > > │ 00:01:31 v #2027 > > ("file2.txt...22222222222222222222222222222222222222222222222b") 00:01:31 v #2028 > > │ 156 / 638719916825011196 / Changed 00:01:31 v #2029 > > │ 00:01:31 v #2030 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2031 > > │ 637 / 638719916825011833 / Changed 00:01:31 v #2032 > > │ 00:01:31 v #2033 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2034 > > │ 103 / 638719916825011936 / Changed 00:01:31 v #2035 > > │ 00:01:31 v #2036 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2037 > > │ 194 / 638719916825012130 / Changed 00:01:31 v #2038 > > │ 00:01:31 v #2039 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2040 > > │ 43 / 638719916825012173 / Changed 00:01:31 v #2041 > > │ ("file2.txt", 00:01:31 v #2042 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2043 > > │ 283 / 638719916825012456 / Changed 00:01:31 v #2044 > > │ 00:01:31 v #2045 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2046 > > │ 53 / 638719916825012509 / Changed 00:01:31 v #2047 > > │ ("file2.txt", 00:01:31 v #2048 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2049 > > │ 42 / 638719916825012551 / Changed 00:01:31 v #2050 > > │ ("file2.txt", 00:01:31 v #2051 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2052 > > │ 314 / 638719916825012865 / Changed 00:01:31 v #2053 > > │ 00:01:31 v #2054 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2055 > > │ 410 / 638719916825013275 / Changed 00:01:31 v #2056 > > │ 00:01:31 v #2057 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2058 > > │ 280 / 638719916825013555 / Changed 00:01:31 v #2059 > > │ 00:01:31 v #2060 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2061 > > │ 50 / 638719916825013605 / Changed 00:01:31 v #2062 > > │ ("file2.txt", 00:01:31 v #2063 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2064 > > │ 1696 / 638719916825015301 / Changed 00:01:31 v #2065 > > │ 00:01:31 v #2066 > > ("file2.txt"...22222222222222222222222222222222222222222222222b") 00:01:31 v #2067 > > │ 94 / 638719916825015395 / Changed 00:01:31 v #2068 > > │ ("file2.txt", 00:01:31 v #2069 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2070 > > │ 250 / 638719916825015645 / Changed 00:01:31 v #2071 > > │ 00:01:31 v #2072 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2073 > > │ 35014 / 638719916825050659 / Changed 00:01:31 v #2074 > > │ 00:01:31 v #2075 > > ("file2.txt...22222222222222222222222222222222222222222222222b") 00:01:31 v #2076 > > │ 105 / 638719916825050764 / Changed 00:01:31 v #2077 > > │ 00:01:31 v #2078 > > ("file2.txt",...22222222222222222222222222222222222222222222222b") 00:01:31 v #2079 > > │ 46 / 638719916825050810 / Changed 00:01:31 v #2080 > > │ ("file2.txt", 00:01:31 v #2081 > > │ ...22222222222222222222222222222222222222222222222b") 00:01:31 v #2082 > > │ 24338 / 638719916825075148 / Changed 00:01:31 v #2083 > > │ 00:01:31 v #2084 > > ("file2.txt...22222222222222222222222222222222222222222222222b") 00:01:31 v #2085 > > │ 15004121 / 638719916840079269 / Renamed 00:01:31 v #2086 > > │ 00:01:31 v #2087 > > ("file1....1111111111111111111111111111111111111111111111b")) 00:01:31 v #2088 > > │ 437 / 638719916840079706 / Renamed 00:01:31 v #2089 > > │ 00:01:31 v #2090 > > ("file2.txt",...2222222222222222222222222222222222222222222222b")) 00:01:31 v #2091 > > │ 15054008 / 638719916855133714 / Changed 00:01:31 v #2092 > > │ 00:01:31 v #2093 > > ("file_1...11111111111111111111111111111111111111111111111c") 00:01:31 v #2094 > > │ 649 / 638719916855134363 / Changed 00:01:31 v #2095 > > │ 00:01:31 v #2096 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2097 > > │ 1033 / 638719916855135396 / Changed 00:01:31 v #2098 > > │ 00:01:31 v #2099 > > ("file_1.txt...11111111111111111111111111111111111111111111111c") 00:01:31 v #2100 > > │ 113 / 638719916855135509 / Changed 00:01:31 v #2101 > > │ 00:01:31 v #2102 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2103 > > │ 253 / 638719916855135762 / Changed 00:01:31 v #2104 > > │ 00:01:31 v #2105 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2106 > > │ 373 / 638719916855136135 / Changed 00:01:31 v #2107 > > │ 00:01:31 v #2108 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2109 > > │ 1101 / 638719916855137236 / Changed 00:01:31 v #2110 > > │ 00:01:31 v #2111 > > ("file_1.txt...11111111111111111111111111111111111111111111111c") 00:01:31 v #2112 > > │ 62 / 638719916855137298 / Changed 00:01:31 v #2113 > > │ 00:01:31 v #2114 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2115 > > │ 204 / 638719916855137502 / Changed 00:01:31 v #2116 > > │ 00:01:31 v #2117 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2118 > > │ 164 / 638719916855137666 / Changed 00:01:31 v #2119 > > │ 00:01:31 v #2120 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2121 > > │ 155 / 638719916855137821 / Changed 00:01:31 v #2122 > > │ 00:01:31 v #2123 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2124 > > │ 310 / 638719916855138131 / Changed 00:01:31 v #2125 > > │ 00:01:31 v #2126 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2127 > > │ 184 / 638719916855138315 / Changed 00:01:31 v #2128 > > │ 00:01:31 v #2129 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2130 > > │ 159 / 638719916855138474 / Changed 00:01:31 v #2131 > > │ 00:01:31 v #2132 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2133 > > │ 148 / 638719916855138622 / Changed 00:01:31 v #2134 > > │ 00:01:31 v #2135 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2136 > > │ 244 / 638719916855138866 / Changed 00:01:31 v #2137 > > │ 00:01:31 v #2138 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2139 > > │ 168 / 638719916855139034 / Changed 00:01:31 v #2140 > > │ 00:01:31 v #2141 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2142 > > │ 162 / 638719916855139196 / Changed 00:01:31 v #2143 > > │ 00:01:31 v #2144 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2145 > > │ 175 / 638719916855139371 / Changed 00:01:31 v #2146 > > │ 00:01:31 v #2147 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2148 > > │ 173 / 638719916855139544 / Changed 00:01:31 v #2149 > > │ 00:01:31 v #2150 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2151 > > │ 151 / 638719916855139695 / Changed 00:01:31 v #2152 > > │ 00:01:31 v #2153 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2154 > > │ 114 / 638719916855139809 / Changed 00:01:31 v #2155 > > │ 00:01:31 v #2156 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2157 > > │ 195 / 638719916855140004 / Changed 00:01:31 v #2158 > > │ 00:01:31 v #2159 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2160 > > │ 44 / 638719916855140048 / Changed 00:01:31 v #2161 > > │ 00:01:31 v #2162 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2163 > > │ 214 / 638719916855140262 / Changed 00:01:31 v #2164 > > │ 00:01:31 v #2165 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2166 > > │ 3436 / 638719916855143698 / Changed 00:01:31 v #2167 > > │ 00:01:31 v #2168 > > ("file_1.txt...11111111111111111111111111111111111111111111111c") 00:01:31 v #2169 > > │ 309 / 638719916855144007 / Changed 00:01:31 v #2170 > > │ 00:01:31 v #2171 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2172 > > │ 263 / 638719916855144270 / Changed 00:01:31 v #2173 > > │ 00:01:31 v #2174 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2175 > > │ 128 / 638719916855144398 / Changed 00:01:31 v #2176 > > │ 00:01:31 v #2177 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2178 > > │ 207 / 638719916855144605 / Changed 00:01:31 v #2179 > > │ 00:01:31 v #2180 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2181 > > │ 62 / 638719916855144667 / Changed 00:01:31 v #2182 > > │ 00:01:31 v #2183 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2184 > > │ 154 / 638719916855144821 / Changed 00:01:31 v #2185 > > │ 00:01:31 v #2186 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2187 > > │ 157 / 638719916855144978 / Changed 00:01:31 v #2188 > > │ 00:01:31 v #2189 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2190 > > │ 153 / 638719916855145131 / Changed 00:01:31 v #2191 > > │ 00:01:31 v #2192 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2193 > > │ 165 / 638719916855145296 / Changed 00:01:31 v #2194 > > │ 00:01:31 v #2195 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2196 > > │ 235 / 638719916855145531 / Changed 00:01:31 v #2197 > > │ 00:01:31 v #2198 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2199 > > │ 347 / 638719916855145878 / Changed 00:01:31 v #2200 > > │ 00:01:31 v #2201 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2202 > > │ 155 / 638719916855146033 / Changed 00:01:31 v #2203 > > │ 00:01:31 v #2204 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2205 > > │ 152 / 638719916855146185 / Changed 00:01:31 v #2206 > > │ 00:01:31 v #2207 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2208 > > │ 154 / 638719916855146339 / Changed 00:01:31 v #2209 > > │ 00:01:31 v #2210 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2211 > > │ 154 / 638719916855146493 / Changed 00:01:31 v #2212 > > │ 00:01:31 v #2213 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2214 > > │ 151 / 638719916855146644 / Changed 00:01:31 v #2215 > > │ 00:01:31 v #2216 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2217 > > │ 129 / 638719916855146773 / Changed 00:01:31 v #2218 > > │ 00:01:31 v #2219 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2220 > > │ 132 / 638719916855146905 / Changed 00:01:31 v #2221 > > │ 00:01:31 v #2222 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2223 > > │ 147 / 638719916855147052 / Changed 00:01:31 v #2224 > > │ 00:01:31 v #2225 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2226 > > │ 131 / 638719916855147183 / Changed 00:01:31 v #2227 > > │ 00:01:31 v #2228 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2229 > > │ 126 / 638719916855147309 / Changed 00:01:31 v #2230 > > │ 00:01:31 v #2231 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2232 > > │ 138 / 638719916855147447 / Changed 00:01:31 v #2233 > > │ 00:01:31 v #2234 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2235 > > │ 146 / 638719916855147593 / Changed 00:01:31 v #2236 > > │ 00:01:31 v #2237 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2238 > > │ 54 / 638719916855147647 / Changed 00:01:31 v #2239 > > │ 00:01:31 v #2240 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2241 > > │ 173 / 638719916855147820 / Changed 00:01:31 v #2242 > > │ 00:01:31 v #2243 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2244 > > │ 291 / 638719916855148111 / Changed 00:01:31 v #2245 > > │ 00:01:31 v #2246 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2247 > > │ 371 / 638719916855148482 / Changed 00:01:31 v #2248 > > │ 00:01:31 v #2249 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2250 > > │ 192 / 638719916855148674 / Changed 00:01:31 v #2251 > > │ 00:01:31 v #2252 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2253 > > │ 172 / 638719916855148846 / Changed 00:01:31 v #2254 > > │ 00:01:31 v #2255 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2256 > > │ 143 / 638719916855148989 / Changed 00:01:31 v #2257 > > │ 00:01:31 v #2258 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2259 > > │ 149 / 638719916855149138 / Changed 00:01:31 v #2260 > > │ 00:01:31 v #2261 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2262 > > │ 353 / 638719916855149491 / Changed 00:01:31 v #2263 > > │ 00:01:31 v #2264 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2265 > > │ 187 / 638719916855149678 / Changed 00:01:31 v #2266 > > │ 00:01:31 v #2267 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2268 > > │ 48 / 638719916855149726 / Changed 00:01:31 v #2269 > > │ 00:01:31 v #2270 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2271 > > │ 177 / 638719916855149903 / Changed 00:01:31 v #2272 > > │ 00:01:31 v #2273 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2274 > > │ 133 / 638719916855150036 / Changed 00:01:31 v #2275 > > │ 00:01:31 v #2276 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2277 > > │ 146 / 638719916855150182 / Changed 00:01:31 v #2278 > > │ 00:01:31 v #2279 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2280 > > │ 164 / 638719916855150346 / Changed 00:01:31 v #2281 > > │ 00:01:31 v #2282 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2283 > > │ 178 / 638719916855150524 / Changed 00:01:31 v #2284 > > │ 00:01:31 v #2285 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2286 > > │ 159 / 638719916855150683 / Changed 00:01:31 v #2287 > > │ 00:01:31 v #2288 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2289 > > │ 204 / 638719916855150887 / Changed 00:01:31 v #2290 > > │ 00:01:31 v #2291 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2292 > > │ 44 / 638719916855150931 / Changed 00:01:31 v #2293 > > │ 00:01:31 v #2294 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2295 > > │ 247 / 638719916855151178 / Changed 00:01:31 v #2296 > > │ 00:01:31 v #2297 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2298 > > │ 236 / 638719916855151414 / Changed 00:01:31 v #2299 > > │ 00:01:31 v #2300 > > ("file_1.txt"...11111111111111111111111111111111111111111111111c") 00:01:31 v #2301 > > │ 42 / 638719916855151456 / Changed 00:01:31 v #2302 > > │ 00:01:31 v #2303 > > ("file_1.txt",...11111111111111111111111111111111111111111111111c") 00:01:31 v #2304 > > │ 49642 / 638719916855201098 / Changed 00:01:31 v #2305 > > │ 00:01:31 v #2306 > > ("file_2.tx...22222222222222222222222222222222222222222222222c") 00:01:31 v #2307 > > │ 232 / 638719916855201330 / Changed 00:01:31 v #2308 > > │ 00:01:31 v #2309 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2310 > > │ 55 / 638719916855201385 / Changed 00:01:31 v #2311 > > │ 00:01:31 v #2312 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c") 00:01:31 v #2313 > > │ 381 / 638719916855201766 / Changed 00:01:31 v #2314 > > │ 00:01:31 v #2315 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2316 > > │ 250 / 638719916855202016 / Changed 00:01:31 v #2317 > > │ 00:01:31 v #2318 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2319 > > │ 103 / 638719916855202119 / Changed 00:01:31 v #2320 > > │ 00:01:31 v #2321 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2322 > > │ 199 / 638719916855202318 / Changed 00:01:31 v #2323 > > │ 00:01:31 v #2324 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2325 > > │ 210 / 638719916855202528 / Changed 00:01:31 v #2326 > > │ 00:01:31 v #2327 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2328 > > │ 113 / 638719916855202641 / Changed 00:01:31 v #2329 > > │ 00:01:31 v #2330 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2331 > > │ 284 / 638719916855202925 / Changed 00:01:31 v #2332 > > │ 00:01:31 v #2333 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2334 > > │ 78 / 638719916855203003 / Changed 00:01:31 v #2335 > > │ 00:01:31 v #2336 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c") 00:01:31 v #2337 > > │ 186 / 638719916855203189 / Changed 00:01:31 v #2338 > > │ 00:01:31 v #2339 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2340 > > │ 229 / 638719916855203418 / Changed 00:01:31 v #2341 > > │ 00:01:31 v #2342 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2343 > > │ 214 / 638719916855203632 / Changed 00:01:31 v #2344 > > │ 00:01:31 v #2345 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2346 > > │ 197 / 638719916855203829 / Changed 00:01:31 v #2347 > > │ 00:01:31 v #2348 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2349 > > │ 277 / 638719916855204106 / Changed 00:01:31 v #2350 > > │ 00:01:31 v #2351 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2352 > > │ 79 / 638719916855204185 / Changed 00:01:31 v #2353 > > │ 00:01:31 v #2354 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c") 00:01:31 v #2355 > > │ 221 / 638719916855204406 / Changed 00:01:31 v #2356 > > │ 00:01:31 v #2357 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2358 > > │ 205 / 638719916855204611 / Changed 00:01:31 v #2359 > > │ 00:01:31 v #2360 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2361 > > │ 232 / 638719916855204843 / Changed 00:01:31 v #2362 > > │ 00:01:31 v #2363 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2364 > > │ 72 / 638719916855204915 / Changed 00:01:31 v #2365 > > │ 00:01:31 v #2366 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c") 00:01:31 v #2367 > > │ 273 / 638719916855205188 / Changed 00:01:31 v #2368 > > │ 00:01:31 v #2369 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2370 > > │ 221 / 638719916855205409 / Changed 00:01:31 v #2371 > > │ 00:01:31 v #2372 > > ("file_2.txt"...22222222222222222222222222222222222222222222222c") 00:01:31 v #2373 > > │ 90 / 638719916855205499 / Changed 00:01:31 v #2374 > > │ 00:01:31 v #2375 > > ("file_2.txt",...22222222222222222222222222222222222222222222222c") 00:01:31 v #2376 > > │ 24740 / 638719916855230239 / Changed 00:01:31 v #2377 > > │ 00:01:31 v #2378 > > ("file_2.tx...22222222222222222222222222222222222222222222222c") 00:01:31 v #2379 > > │ 15016058 / 638719916870246297 / Deleted "file_1.txt" 00:01:31 v #2380 > > │ 7574 / 638719916870253871 / Deleted "file_2.txt" 00:01:31 v #2381 > > │ [Created ("file1.txt", Some "1a"); Changed ("file1.txt", Some 00:01:31 v #2382 > > "1a"); Created ("file2.txt", Some "2a"); 00:01:31 v #2383 > > │ Changed ("file2.txt", Some "2a"); Changed ("file1.txt", Some 00:01:31 v #2384 > > "1b"); Changed ("file2.txt", Some "2b"); 00:01:31 v #2385 > > │ Renamed ("file1.txt", ("file_1.txt", Some "1b")); Renamed 00:01:31 v #2386 > > ("file2.txt", ("file_2.txt", Some "2b")); 00:01:31 v #2387 > > │ Changed ("file_1.txt", Some "1c"); Changed ("file_2.txt", 00:01:31 v #2388 > > Some "2c"); Deleted "file_1.txt"; Deleted "file_2.txt"] 00:01:31 v #2389 > > │ 00:01:31 v #2390 > > │ Some () 00:01:31 v #2391 > > │ 00:01:31 v #2392 > > │ 00:01:31 v #2393 > > 00:01:31 v #2394 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:31 v #2395 > > │ ### testEventsSorted (test) 00:01:31 v #2396 > > 00:01:31 v #2397 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:31 v #2398 > > //// test 00:01:31 v #2399 > > 00:01:31 v #2400 > > let inline sortEvent event = 00:01:31 v #2401 > > match event with 00:01:31 v #2402 > > | FileSystemChange.Failure _ -> 0 00:01:31 v #2403 > > | FileSystemChange.Created _ -> 1 00:01:31 v #2404 > > | FileSystemChange.Changed _ -> 2 00:01:31 v #2405 > > | FileSystemChange.Renamed (_oldPath, _) -> 3 00:01:31 v #2406 > > | FileSystemChange.Deleted _ -> 4 00:01:31 v #2407 > > 00:01:31 v #2408 > > let inline formatEvents events = 00:01:31 v #2409 > > events 00:01:31 v #2410 > > |> Seq.toList 00:01:31 v #2411 > > |> List.sortBy (snd >> sortEvent) 00:01:31 v #2412 > > |> List.choose (fun (ticks, event) -> 00:01:31 v #2413 > > match event with 00:01:31 v #2414 > > | FileSystemChange.Failure _ -> 00:01:31 v #2415 > > None 00:01:31 v #2416 > > | FileSystemChange.Changed (path, _) -> 00:01:31 v #2417 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:31 v #2418 > > FileSystemChangeType.Changed) 00:01:31 v #2419 > > | FileSystemChange.Created (path, _) -> 00:01:31 v #2420 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:31 v #2421 > > FileSystemChangeType.Created) 00:01:31 v #2422 > > | FileSystemChange.Deleted path -> 00:01:31 v #2423 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:31 v #2424 > > FileSystemChangeType.Deleted) 00:01:31 v #2425 > > | FileSystemChange.Renamed (_oldPath, (path, _)) -> 00:01:31 v #2426 > > Some (ticks, System.IO.Path.GetFileName path, nameof 00:01:31 v #2427 > > FileSystemChangeType.Renamed) 00:01:31 v #2428 > > ) 00:01:31 v #2429 > > |> List.sortBy (fun (_, path, _) -> path) 00:01:31 v #2430 > > |> List.distinctBy (fun (_, path, event) -> path, event) 00:01:31 v #2431 > > 00:01:31 v #2432 > > let inline testEventsSorted 00:01:31 v #2433 > > (watchFn : string -> FSharp.Control.AsyncSeq<int64 * FileSystemChange> * 00:01:31 v #2434 > > IDisposable) 00:01:31 v #2435 > > write 00:01:31 v #2436 > > = 00:01:31 v #2437 > > let struct (tempDir, tempDisposable) = 00:01:31 v #2438 > > "FileSystem.testEventsSorted" 00:01:31 v #2439 > > |> SpiralCrypto.hash_text 00:01:31 v #2440 > > |> SpiralFileSystem.create_temp_dir' 00:01:31 v #2441 > > let stream, disposable = watchFn tempDir 00:01:31 v #2442 > > 00:01:31 v #2443 > > let events = System.Collections.Concurrent.ConcurrentBag () 00:01:31 v #2444 > > 00:01:31 v #2445 > > let inline iter () = 00:01:31 v #2446 > > stream 00:01:31 v #2447 > > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun event -> async { 00:01:31 v #2448 > > events.Add event }) 00:01:31 v #2449 > > 00:01:31 v #2450 > > let run = async { 00:01:31 v #2451 > > let! _ = iter () |> Async.StartChild 00:01:31 v #2452 > > do! Async.Sleep 250 00:01:31 v #2453 > > return! write tempDir 00:01:31 v #2454 > > } 00:01:31 v #2455 > > 00:01:31 v #2456 > > try 00:01:31 v #2457 > > run 00:01:31 v #2458 > > |> Async.runWithTimeout 5000 00:01:31 v #2459 > > |> _assertEqual (Some ()) 00:01:31 v #2460 > > finally 00:01:31 v #2461 > > disposable.Dispose () 00:01:31 v #2462 > > tempDisposable.Dispose () 00:01:31 v #2463 > > 00:01:31 v #2464 > > let events = formatEvents events 00:01:31 v #2465 > > 00:01:31 v #2466 > > let eventMap = 00:01:31 v #2467 > > events 00:01:31 v #2468 > > |> List.map (fun (ticks, path, event) -> path, (event, ticks)) 00:01:31 v #2469 > > |> List.groupBy fst 00:01:31 v #2470 > > |> List.map (fun (path, events) -> 00:01:31 v #2471 > > let event, _ticks = 00:01:31 v #2472 > > events 00:01:31 v #2473 > > |> List.map snd 00:01:31 v #2474 > > |> List.sortByDescending snd 00:01:31 v #2475 > > |> List.head 00:01:31 v #2476 > > 00:01:31 v #2477 > > path, event 00:01:31 v #2478 > > ) 00:01:31 v #2479 > > |> Map.ofList 00:01:31 v #2480 > > 00:01:31 v #2481 > > let eventList = 00:01:31 v #2482 > > events 00:01:31 v #2483 > > |> List.map (fun (_ticks, path, event) -> path, event) 00:01:31 v #2484 > > 00:01:31 v #2485 > > eventMap, eventList 00:01:31 v #2486 > > 00:01:31 v #2487 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:31 v #2488 > > │ #### create and delete (test) 00:01:31 v #2489 > > 00:01:31 v #2490 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:31 v #2491 > > //// test 00:01:31 v #2492 > > 00:01:31 v #2493 > > let inline write path = async { 00:01:31 v #2494 > > let n = 3 00:01:31 v #2495 > > 00:01:31 v #2496 > > for i = 1 to n do 00:01:31 v #2497 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:31 v #2498 > > $"file{i}.txt") 00:01:31 v #2499 > > 00:01:31 v #2500 > > for i = 1 to n do 00:01:31 v #2501 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:01:31 v #2502 > > Async.Ignore 00:01:31 v #2503 > > 00:01:31 v #2504 > > do! Async.Sleep 150 00:01:31 v #2505 > > } 00:01:31 v #2506 > > 00:01:31 v #2507 > > let inline run () = 00:01:31 v #2508 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:31 v #2509 > > write 00:01:31 v #2510 > > 00:01:31 v #2511 > > [[ 00:01:31 v #2512 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:31 v #2513 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:31 v #2514 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2515 > > 00:01:31 v #2516 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:31 v #2517 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:31 v #2518 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2519 > > 00:01:31 v #2520 > > "file3.txt", nameof FileSystemChangeType.Created 00:01:31 v #2521 > > "file3.txt", nameof FileSystemChangeType.Changed 00:01:31 v #2522 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2523 > > ]] 00:01:31 v #2524 > > |> _sequenceEqual eventList 00:01:31 v #2525 > > 00:01:31 v #2526 > > [[ 00:01:31 v #2527 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2528 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2529 > > "file3.txt", nameof FileSystemChangeType.Deleted 00:01:31 v #2530 > > ]] 00:01:31 v #2531 > > |> Map.ofList 00:01:31 v #2532 > > |> _sequenceEqual eventMap 00:01:31 v #2533 > > 00:01:31 v #2534 > > run 00:01:31 v #2535 > > |> retry_fn 3 00:01:31 v #2536 > > |> _assertEqual (Some ()) 00:01:32 v #2537 > > 00:01:32 v #2538 > > ── [ 1.02s - stdout ] ────────────────────────────────────────────────────────── 00:01:32 v #2539 > > │ Some () 00:01:32 v #2540 > > │ 00:01:32 v #2541 > > │ 00:00:15 d #5 FileSystem.watchWithFilter / Disposing 00:01:32 v #2542 > > watch stream / filter: FileName, LastWrite 00:01:32 v #2543 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); 00:01:32 v #2544 > > ("file1.txt", "Deleted"); ("file2.txt", "Created"); 00:01:32 v #2545 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted"); 00:01:32 v #2546 > > ("file3.txt", "Created"); ("file3.txt", "Changed"); 00:01:32 v #2547 > > │ ("file3.txt", "Deleted")] 00:01:32 v #2548 > > │ 00:01:32 v #2549 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted"); 00:01:32 v #2550 > > ("file3.txt", "Deleted")] 00:01:32 v #2551 > > │ 00:01:32 v #2552 > > │ Some () 00:01:32 v #2553 > > │ 00:01:32 v #2554 > > │ 00:01:32 v #2555 > > 00:01:32 v #2556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:32 v #2557 > > │ #### change (test) 00:01:32 v #2558 > > 00:01:32 v #2559 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:32 v #2560 > > //// test 00:01:32 v #2561 > > 00:01:32 v #2562 > > let inline write path = async { 00:01:32 v #2563 > > let n = 2 00:01:32 v #2564 > > 00:01:32 v #2565 > > for i = 1 to n do 00:01:32 v #2566 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:32 v #2567 > > $"file{i}.txt") 00:01:32 v #2568 > > 00:01:32 v #2569 > > for i = 1 to n do 00:01:32 v #2570 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:01:32 v #2571 > > $"file{i}.txt") 00:01:32 v #2572 > > 00:01:32 v #2573 > > for i = 1 to n do 00:01:32 v #2574 > > do! SpiralFileSystem.delete_file_async (path </> $"file{i}.txt") |> 00:01:32 v #2575 > > Async.Ignore 00:01:32 v #2576 > > 00:01:32 v #2577 > > do! Async.Sleep 150 00:01:32 v #2578 > > } 00:01:32 v #2579 > > 00:01:32 v #2580 > > let inline run () = 00:01:32 v #2581 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:32 v #2582 > > write 00:01:32 v #2583 > > 00:01:32 v #2584 > > [[ 00:01:32 v #2585 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:32 v #2586 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:32 v #2587 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:32 v #2588 > > 00:01:32 v #2589 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:32 v #2590 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:32 v #2591 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:32 v #2592 > > ]] 00:01:32 v #2593 > > |> _sequenceEqual eventList 00:01:32 v #2594 > > 00:01:32 v #2595 > > [[ 00:01:32 v #2596 > > "file1.txt", nameof FileSystemChangeType.Deleted 00:01:32 v #2597 > > "file2.txt", nameof FileSystemChangeType.Deleted 00:01:32 v #2598 > > ]] 00:01:32 v #2599 > > |> Map.ofList 00:01:32 v #2600 > > |> _sequenceEqual eventMap 00:01:32 v #2601 > > 00:01:32 v #2602 > > run 00:01:32 v #2603 > > |> retry_fn 3 00:01:32 v #2604 > > |> _assertEqual (Some ()) 00:01:33 v #2605 > > 00:01:33 v #2606 > > ── [ 1.07s - stdout ] ────────────────────────────────────────────────────────── 00:01:33 v #2607 > > │ Some () 00:01:33 v #2608 > > │ 00:01:33 v #2609 > > │ 00:00:16 d #6 FileSystem.watchWithFilter / Disposing 00:01:33 v #2610 > > watch stream / filter: FileName, LastWrite 00:01:33 v #2611 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); 00:01:33 v #2612 > > ("file1.txt", "Deleted"); ("file2.txt", "Created"); 00:01:33 v #2613 > > │ ("file2.txt", "Changed"); ("file2.txt", "Deleted")] 00:01:33 v #2614 > > │ 00:01:33 v #2615 > > │ map [("file1.txt", "Deleted"); ("file2.txt", "Deleted")] 00:01:33 v #2616 > > │ 00:01:33 v #2617 > > │ Some () 00:01:33 v #2618 > > │ 00:01:33 v #2619 > > │ 00:01:33 v #2620 > > 00:01:33 v #2621 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:33 v #2622 > > │ #### rename (test) 00:01:33 v #2623 > > 00:01:33 v #2624 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:33 v #2625 > > //// test 00:01:33 v #2626 > > 00:01:33 v #2627 > > let inline write path = async { 00:01:33 v #2628 > > let n = 2 00:01:33 v #2629 > > 00:01:33 v #2630 > > for i = 1 to n do 00:01:33 v #2631 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:33 v #2632 > > $"file{i}.txt") 00:01:33 v #2633 > > 00:01:33 v #2634 > > for i = 1 to n do 00:01:33 v #2635 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:33 v #2636 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:33 v #2637 > > 00:01:33 v #2638 > > for i = 1 to n do 00:01:33 v #2639 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:33 v #2640 > > Async.Ignore 00:01:33 v #2641 > > 00:01:33 v #2642 > > do! Async.Sleep 150 00:01:33 v #2643 > > } 00:01:33 v #2644 > > 00:01:33 v #2645 > > let inline run () = 00:01:33 v #2646 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:33 v #2647 > > write 00:01:33 v #2648 > > 00:01:33 v #2649 > > [[ 00:01:33 v #2650 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:33 v #2651 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:33 v #2652 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:33 v #2653 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:33 v #2654 > > 00:01:33 v #2655 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:01:33 v #2656 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:33 v #2657 > > 00:01:33 v #2658 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:01:33 v #2659 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:33 v #2660 > > ]] 00:01:33 v #2661 > > |> _sequenceEqual eventList 00:01:33 v #2662 > > 00:01:33 v #2663 > > [[ 00:01:33 v #2664 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:33 v #2665 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:33 v #2666 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:33 v #2667 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:33 v #2668 > > ]] 00:01:33 v #2669 > > |> Map.ofList 00:01:33 v #2670 > > |> _sequenceEqual eventMap 00:01:33 v #2671 > > 00:01:33 v #2672 > > run 00:01:33 v #2673 > > |> retry_fn 3 00:01:33 v #2674 > > |> _assertEqual (Some ()) 00:01:35 v #2675 > > 00:01:35 v #2676 > > ── [ 1.13s - stdout ] ────────────────────────────────────────────────────────── 00:01:35 v #2677 > > │ Some () 00:01:35 v #2678 > > │ 00:01:35 v #2679 > > │ 00:00:17 d #7 FileSystem.watchWithFilter / Disposing 00:01:35 v #2680 > > watch stream / filter: FileName, LastWrite 00:01:35 v #2681 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); 00:01:35 v #2682 > > ("file2.txt", "Created"); ("file2.txt", "Changed"); 00:01:35 v #2683 > > │ ("file_1.txt", "Renamed"); ("file_1.txt", "Deleted"); 00:01:35 v #2684 > > ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")] 00:01:35 v #2685 > > │ 00:01:35 v #2686 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); 00:01:35 v #2687 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Deleted")] 00:01:35 v #2688 > > │ 00:01:35 v #2689 > > │ Some () 00:01:35 v #2690 > > │ 00:01:35 v #2691 > > │ 00:01:35 v #2692 > > 00:01:35 v #2693 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #2694 > > │ #### full (test) 00:01:35 v #2695 > > 00:01:35 v #2696 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:35 v #2697 > > //// test 00:01:35 v #2698 > > 00:01:35 v #2699 > > let inline write path = async { 00:01:35 v #2700 > > let n = 2 00:01:35 v #2701 > > 00:01:35 v #2702 > > for i = 1 to n do 00:01:35 v #2703 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:35 v #2704 > > $"file{i}.txt") 00:01:35 v #2705 > > 00:01:35 v #2706 > > for i = 1 to n do 00:01:35 v #2707 > > do! "" |> SpiralFileSystem.write_all_text_async (path </> 00:01:35 v #2708 > > $"file{i}.txt") 00:01:35 v #2709 > > 00:01:35 v #2710 > > for i = 1 to n do 00:01:35 v #2711 > > do! path </> $"file{i}.txt" |> SpiralFileSystem.move_file_async (path 00:01:35 v #2712 > > </> $"file_{i}.txt") |> Async.Ignore 00:01:35 v #2713 > > 00:01:35 v #2714 > > for i = 1 to n do 00:01:35 v #2715 > > do! $"{i}" |> SpiralFileSystem.write_all_text_async (path </> 00:01:35 v #2716 > > $"file_{i}.txt") 00:01:35 v #2717 > > 00:01:35 v #2718 > > for i = 1 to n do 00:01:35 v #2719 > > do! SpiralFileSystem.delete_file_async (path </> $"file_{i}.txt") |> 00:01:35 v #2720 > > Async.Ignore 00:01:35 v #2721 > > 00:01:35 v #2722 > > do! Async.Sleep 150 00:01:35 v #2723 > > } 00:01:35 v #2724 > > 00:01:35 v #2725 > > let inline run () = 00:01:35 v #2726 > > let eventMap, eventList = testEventsSorted (watchDirectory (fun _ -> false)) 00:01:35 v #2727 > > write 00:01:35 v #2728 > > 00:01:35 v #2729 > > [[ 00:01:35 v #2730 > > "file1.txt", nameof FileSystemChangeType.Created 00:01:35 v #2731 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2732 > > "file2.txt", nameof FileSystemChangeType.Created 00:01:35 v #2733 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2734 > > 00:01:35 v #2735 > > "file_1.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2736 > > "file_1.txt", nameof FileSystemChangeType.Renamed 00:01:35 v #2737 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:35 v #2738 > > 00:01:35 v #2739 > > "file_2.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2740 > > "file_2.txt", nameof FileSystemChangeType.Renamed 00:01:35 v #2741 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:35 v #2742 > > ]] 00:01:35 v #2743 > > |> _sequenceEqual eventList 00:01:35 v #2744 > > 00:01:35 v #2745 > > [[ 00:01:35 v #2746 > > "file1.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2747 > > "file2.txt", nameof FileSystemChangeType.Changed 00:01:35 v #2748 > > "file_1.txt", nameof FileSystemChangeType.Deleted 00:01:35 v #2749 > > "file_2.txt", nameof FileSystemChangeType.Deleted 00:01:35 v #2750 > > ]] 00:01:35 v #2751 > > |> Map.ofList 00:01:35 v #2752 > > |> _sequenceEqual eventMap 00:01:35 v #2753 > > 00:01:35 v #2754 > > run 00:01:35 v #2755 > > |> retry_fn 3 00:01:35 v #2756 > > |> _assertEqual (Some ()) 00:01:36 v #2757 > > 00:01:36 v #2758 > > ── [ 1.28s - stdout ] ────────────────────────────────────────────────────────── 00:01:36 v #2759 > > │ Some () 00:01:36 v #2760 > > │ 00:01:36 v #2761 > > │ 00:00:19 d #8 FileSystem.watchWithFilter / Disposing 00:01:36 v #2762 > > watch stream / filter: FileName, LastWrite 00:01:36 v #2763 > > │ [("file1.txt", "Created"); ("file1.txt", "Changed"); 00:01:36 v #2764 > > ("file2.txt", "Created"); ("file2.txt", "Changed"); 00:01:36 v #2765 > > │ ("file_1.txt", "Changed"); ("file_1.txt", "Renamed"); 00:01:36 v #2766 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Changed"); 00:01:36 v #2767 > > │ ("file_2.txt", "Renamed"); ("file_2.txt", "Deleted")] 00:01:36 v #2768 > > │ 00:01:36 v #2769 > > │ map [("file1.txt", "Changed"); ("file2.txt", "Changed"); 00:01:36 v #2770 > > ("file_1.txt", "Deleted"); ("file_2.txt", "Deleted")] 00:01:36 v #2771 > > │ 00:01:36 v #2772 > > │ Some () 00:01:36 v #2773 > > │ 00:01:36 v #2774 > > │ 00:01:36 v #2775 > 00:00:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 83473 } 00:01:36 v #2776 > 00:00:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:37 v #2777 > 00:00:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.ipynb to html 00:01:37 v #2778 > 00:00:32 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:37 v #2779 > 00:00:32 v #7 ! validate(nb) 00:01:37 v #2780 > 00:00:32 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:37 v #2781 > 00:00:32 v #9 ! return _pygments_highlight( 00:01:38 v #2782 > 00:00:33 v #10 ! [NbConvertApp] Writing 418151 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html 00:01:38 v #2783 > 00:00:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:01:38 v #2784 > 00:00:33 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:01:38 v #2785 > 00:00:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/FileSystem.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:38 v #2786 > 00:00:33 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:38 v #2787 > 00:00:33 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:38 v #2788 > 00:00:33 d #16 spiral.run / dib / { exit_code = 0; result_length = 84436 } 00:01:38 d #2789 runtime.execute_with_options_async / { exit_code = 0; output_length = 90921 } 00:01:38 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3 00:01:38 d #2790 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:38 v #2791 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Runtime.dib", "--retries", "3"])) } 00:01:38 v #2792 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:01:39 v #2793 > > 00:01:39 v #2794 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:39 v #2795 > > │ # Runtime (Polyglot) 00:01:42 v #2796 > > 00:01:42 v #2797 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:42 v #2798 > > #r 00:01:42 v #2799 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:01:42 v #2800 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:01:42 v #2801 > > #r 00:01:42 v #2802 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:01:42 v #2803 > > 0/System.Reactive.dll" 00:01:42 v #2804 > > #r 00:01:42 v #2805 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:01:42 v #2806 > > netstandard2.0/System.Reactive.Linq.dll" 00:01:42 v #2807 > > #r 00:01:42 v #2808 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:01:52 v #2809 > > 00:01:52 v #2810 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2811 > > #if !INTERACTIVE 00:01:52 v #2812 > > open Lib 00:01:52 v #2813 > > #endif 00:01:52 v #2814 > > 00:01:52 v #2815 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2816 > > open Common 00:01:52 v #2817 > > 00:01:52 v #2818 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2819 > > //// test 00:01:52 v #2820 > > 00:01:52 v #2821 > > open SpiralFileSystem.Operators 00:01:52 v #2822 > > 00:01:52 v #2823 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:52 v #2824 > > │ ## parseArgs 00:01:52 v #2825 > > 00:01:52 v #2826 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2827 > > let inline parseArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:01:52 v #2828 > > let assemblyName = 00:01:52 v #2829 > > System.Reflection.Assembly.GetEntryAssembly().GetName().Name 00:01:52 v #2830 > > let errorHandler : Argu.IExiter = 00:01:52 v #2831 > > if [[ "Microsoft.DotNet.Interactive.App"; "dotnet-repl" ]] |> 00:01:52 v #2832 > > List.contains assemblyName 00:01:52 v #2833 > > then Argu.ExceptionExiter () 00:01:52 v #2834 > > else Argu.ProcessExiter (function Argu.ErrorCode.HelpText -> None | _ -> 00:01:52 v #2835 > > Some System.ConsoleColor.Red) 00:01:52 v #2836 > > 00:01:52 v #2837 > > let parser = 00:01:52 v #2838 > > Argu.ArgumentParser.Create<'T> ( 00:01:52 v #2839 > > programName = $"{assemblyName}{SpiralPlatform.get_executable_suffix 00:01:52 v #2840 > > ()}", 00:01:52 v #2841 > > errorHandler = errorHandler 00:01:52 v #2842 > > ) 00:01:52 v #2843 > > 00:01:52 v #2844 > > parser.ParseCommandLine args 00:01:52 v #2845 > > 00:01:52 v #2846 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2847 > > //// test 00:01:52 v #2848 > > 00:01:52 v #2849 > > [[<RequireQualifiedAccess>]] 00:01:52 v #2850 > > type Arguments = 00:01:52 v #2851 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:01:52 v #2852 > > Argu.ArguAttributes.Last>]] 00:01:52 v #2853 > > Paths of paths : string list 00:01:52 v #2854 > > 00:01:52 v #2855 > > interface Argu.IArgParserTemplate with 00:01:52 v #2856 > > member s.Usage = 00:01:52 v #2857 > > match s with 00:01:52 v #2858 > > | Paths _ -> nameof Paths 00:01:52 v #2859 > > 00:01:52 v #2860 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2861 > > //// test 00:01:52 v #2862 > > 00:01:52 v #2863 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:01:52 v #2864 > > 00:01:52 v #2865 > > ── [ 85.62ms - return value ] ────────────────────────────────────────────────── 00:01:52 v #2866 > > │ "USAGE: dotnet-repl [--help] <paths>... 00:01:52 v #2867 > > │ 00:01:52 v #2868 > > │ PATHS: 00:01:52 v #2869 > > │ 00:01:52 v #2870 > > │ <paths>... Paths 00:01:52 v #2871 > > │ 00:01:52 v #2872 > > │ OPTIONS: 00:01:52 v #2873 > > │ 00:01:52 v #2874 > > │ --help display this list of options. 00:01:52 v #2875 > > │ " 00:01:52 v #2876 > > │ 00:01:52 v #2877 > > 00:01:52 v #2878 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2879 > > //// test 00:01:52 v #2880 > > 00:01:52 v #2881 > > fun () -> parseArgs<Arguments> [[||]] |> ignore 00:01:52 v #2882 > > |> _throwsC (fun ex _ -> 00:01:52 v #2883 > > SpiralSm.format_exception ex 00:01:52 v #2884 > > |> _stringContains "Argu.ArguParseException: ERROR: missing parameter 00:01:52 v #2885 > > '<paths>...'." 00:01:52 v #2886 > > ) 00:01:52 v #2887 > > 00:01:52 v #2888 > > ── [ 41.34ms - stdout ] ──────────────────────────────────────────────────────── 00:01:52 v #2889 > > │ <fun:it@3-3> 00:01:52 v #2890 > > │ 00:01:52 v #2891 > > │ "Argu.ArguParseException: ERROR: missing parameter 00:01:52 v #2892 > > '<paths>...'. 00:01:52 v #2893 > > │ USAGE: dotnet-repl [--help] <paths>... 00:01:52 v #2894 > > │ 00:01:52 v #2895 > > │ PATHS: 00:01:52 v #2896 > > │ 00:01:52 v #2897 > > │ <paths>... Paths 00:01:52 v #2898 > > │ 00:01:52 v #2899 > > │ OPTIONS: 00:01:52 v #2900 > > │ 00:01:52 v #2901 > > │ --help display this list of options. 00:01:52 v #2902 > > │ " 00:01:52 v #2903 > > │ 00:01:52 v #2904 > > │ 00:01:52 v #2905 > > 00:01:52 v #2906 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2907 > > let inline parseAllArgs<'T when 'T :> Argu.IArgParserTemplate> args = 00:01:52 v #2908 > > args 00:01:52 v #2909 > > |> parseArgs<'T> 00:01:52 v #2910 > > |> fun results -> results.GetAllResults () 00:01:52 v #2911 > > 00:01:52 v #2912 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2913 > > //// test 00:01:52 v #2914 > > 00:01:52 v #2915 > > [[<RequireQualifiedAccess>]] 00:01:52 v #2916 > > type Arguments = 00:01:52 v #2917 > > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce; 00:01:52 v #2918 > > Argu.ArguAttributes.Last>]] 00:01:52 v #2919 > > Paths of paths : string list 00:01:52 v #2920 > > 00:01:52 v #2921 > > interface Argu.IArgParserTemplate with 00:01:52 v #2922 > > member s.Usage = 00:01:52 v #2923 > > match s with 00:01:52 v #2924 > > | Paths _ -> nameof Paths 00:01:52 v #2925 > > 00:01:52 v #2926 > > parseAllArgs<Arguments> [[| "a b"; "c" |]] 00:01:52 v #2927 > > |> _assertEqual [[ Arguments.Paths [[ "a b"; "c" ]] ]] 00:01:52 v #2928 > > 00:01:52 v #2929 > > ── [ 77.34ms - stdout ] ──────────────────────────────────────────────────────── 00:01:52 v #2930 > > │ [Paths ["a b"; "c"]] 00:01:52 v #2931 > > │ 00:01:52 v #2932 > > │ 00:01:52 v #2933 > > 00:01:52 v #2934 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2935 > > let inline parseArgsMap<'T when 'T :> Argu.IArgParserTemplate> args = 00:01:52 v #2936 > > args 00:01:52 v #2937 > > |> parseAllArgs<'T> 00:01:52 v #2938 > > |> List.groupBy CommonFSharp.getUnionCaseName<'T> 00:01:52 v #2939 > > |> Map.ofList 00:01:52 v #2940 > > 00:01:52 v #2941 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:52 v #2942 > > //// test 00:01:52 v #2943 > > 00:01:52 v #2944 > > parseArgsMap<Arguments> [[| "a b"; "c" |]] 00:01:52 v #2945 > > |> _assertEqual ( 00:01:52 v #2946 > > [[ nameof Arguments.Paths, [[ Arguments.Paths [[ "a b"; "c" ]] ]] ]] 00:01:52 v #2947 > > |> Map.ofList 00:01:52 v #2948 > > ) 00:01:52 v #2949 > > 00:01:52 v #2950 > > ── [ 35.70ms - stdout ] ──────────────────────────────────────────────────────── 00:01:52 v #2951 > > │ map [("Paths", [Paths ["a b"; "c"]])] 00:01:52 v #2952 > > │ 00:01:52 v #2953 > > │ 00:01:53 v #2954 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5715 } 00:01:53 v #2955 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:53 v #2956 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.ipynb to html 00:01:53 v #2957 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:53 v #2958 > 00:00:15 v #7 ! validate(nb) 00:01:54 v #2959 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:54 v #2960 > 00:00:15 v #9 ! return _pygments_highlight( 00:01:54 v #2961 > 00:00:15 v #10 ! [NbConvertApp] Writing 292952 bytes to /home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html 00:01:54 v #2962 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:01:54 v #2963 > 00:00:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:01:54 v #2964 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/fsharp/Runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:01:54 v #2965 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:54 v #2966 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:54 v #2967 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 6672 } 00:01:54 d #2968 runtime.execute_with_options_async / { exit_code = 0; output_length = 9656 } 00:01:54 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3 00:01:54 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib 00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib 00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Common.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Async.dib 00:00:00 d #2 parseDibCode / output: Fs / file: CommonFSharp.dib 00:00:00 d #4 parseDibCode / output: Fs / file: AsyncSeq.dib 00:00:00 d #5 writeDibCode / output: Fs / path: FileSystem.dib 00:00:00 d #5 writeDibCode / output: Fs / path: Runtime.dib 00:00:00 d #6 parseDibCode / output: Fs / file: Runtime.dib 00:00:00 d #6 parseDibCode / output: Fs / file: FileSystem.dib
In [ ]:
{ pwsh ../apps/spiral/wasm/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path spiral_wasm.dib"; options = { command = ../../../deps/spiral/workspace/target/release/spiral dib --path spiral_wasm.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "spiral_wasm.dib"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # spiral_wasm 00:00:05 v #13 > > 00:00:05 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > open rust.rust_operators 00:00:05 v #16 > > open rust 00:00:05 v #17 > > open sm'_operators 00:00:08 v #18 > > 00:00:08 v #19 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #20 > > │ ## spiral_wasm 00:00:08 v #21 > > 00:00:08 v #22 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #23 > > │ ### get_args 00:00:08 v #24 > > 00:00:08 v #25 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #26 > > inl get_args () = 00:00:08 v #27 > > { 00:00:08 v #28 > > exception = "exception", 'e' 00:00:08 v #29 > > trace_level = "trace_level", 't' 00:00:08 v #30 > > wasm = "wasm", 'w' 00:00:08 v #31 > > } 00:00:08 v #32 > > 00:00:08 v #33 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #34 > > │ ### get_command 00:00:08 v #35 > > 00:00:08 v #36 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #37 > > let get_command () = 00:00:08 v #38 > > ##"command" 00:00:08 v #39 > > |> runtime.new_command 00:00:08 v #40 > > |> runtime.command_args_override_self true 00:00:08 v #41 > > |> runtime.command_init_arg (get_args () .exception) ( 00:00:08 v #42 > > runtime.arg_num_args_range ( 00:00:08 v #43 > > runtime.new_value_range 00:00:08 v #44 > > true 00:00:08 v #45 > > (am'.End eval) 00:00:08 v #46 > > (am'.End fun _ => (1i32 |> convert : unativeint)) 00:00:08 v #47 > > ) 00:00:08 v #48 > > >> runtime.arg_require_equals true 00:00:08 v #49 > > >> runtime.arg_default_missing_value "" 00:00:08 v #50 > > ) 00:00:08 v #51 > > |> runtime.command_init_arg (get_args () .trace_level) ( 00:00:08 v #52 > > real runtime.arg_union `trace_level ignore 00:00:08 v #53 > > ) 00:00:08 v #54 > > |> runtime.command_init_arg (get_args () .wasm) ( 00:00:08 v #55 > > runtime.arg_required true 00:00:08 v #56 > > ) 00:00:09 v #57 > > 00:00:09 v #58 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #59 > > │ ### run 00:00:09 v #60 > > 00:00:09 v #61 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #62 > > let rec run 00:00:09 v #63 > > (matches : runtime.arg_matches) 00:00:09 v #64 > > : async.future_pin ( 00:00:09 v #65 > > resultm.result' 00:00:09 v #66 > > u8 00:00:09 v #67 > > resultm.anyhow_error 00:00:09 v #68 > > ) 00:00:09 v #69 > > = 00:00:09 v #70 > > fun () => 00:00:09 v #71 > > inl wasm_path = 00:00:09 v #72 > > matches 00:00:09 v #73 > > |> runtime.matches_get_one (get_args () .wasm |> fst) 00:00:09 v #74 > > |> optionm'.unbox 00:00:09 v #75 > > |> optionm.value 00:00:09 v #76 > > |> sm'.from_std_string 00:00:09 v #77 > > 00:00:09 v #78 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path } 00:00:09 v #79 > > 00:00:09 v #80 > > inl wasm = wasm_path |> file_system.read |> resultm.try' 00:00:09 v #81 > > 00:00:09 v #82 > > let fn (retry : u8) = 00:00:09 v #83 > > fun () => 00:00:09 v #84 > > inl worker = near_workspaces.sandbox_worker () |> resultm.try' 00:00:09 v #85 > > inl contract = worker |> near_workspaces.dev_deploy wasm |> 00:00:09 v #86 > > async.await |> resultm.try' 00:00:09 v #87 > > 00:00:09 v #88 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:09 v #89 > > worker contract } 00:00:09 v #90 > > 00:00:09 v #91 > > inl result = 00:00:09 v #92 > > contract 00:00:09 v #93 > > |> near_workspaces.call "state_main" 00:00:09 v #94 > > |> near_workspaces.gas (near_workspaces.from_tgas 300) 00:00:09 v #95 > > |> near_workspaces.transact 00:00:09 v #96 > > |> async.await 00:00:09 v #97 > > |> resultm.try' 00:00:09 v #98 > > 00:00:09 v #99 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry 00:00:09 v #100 > > result } 00:00:09 v #101 > > 00:00:09 v #102 > > result 00:00:09 v #103 > > |> near_workspaces.logs 00:00:09 v #104 > > |> am'.vec_map sm'.ref_to_std_string 00:00:09 v #105 > > |> am'.vec_for_each console.write_line 00:00:09 v #106 > > 00:00:09 v #107 > > trace_raw Info (fun () => " ") 00:00:09 v #108 > > result |> near_workspaces.print_usd retry 00:00:09 v #109 > > 00:00:09 v #110 > > inl result2 = result |> near_workspaces.into_result 00:00:09 v #111 > > 00:00:09 v #112 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 00:00:09 v #113 > > } 00:00:09 v #114 > > 00:00:09 v #115 > > inl receipt_failures = result |> 00:00:09 v #116 > > near_workspaces.receipt_failures 00:00:09 v #117 > > inl receipt_failures_len = receipt_failures |> am'.vec_len |> 00:00:09 v #118 > > i32 00:00:09 v #119 > > 00:00:09 v #120 > > trace Verbose 00:00:09 v #121 > > fun () => "spiral_wasm.run" 00:00:09 v #122 > > fun () => { receipt_failures_len receipt_failures } 00:00:09 v #123 > > 00:00:09 v #124 > > inl receipt_outcomes = result |> 00:00:09 v #125 > > near_workspaces.receipt_outcomes 00:00:09 v #126 > > inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> 00:00:09 v #127 > > i32 00:00:09 v #128 > > 00:00:09 v #129 > > trace Verbose 00:00:09 v #130 > > fun () => "spiral_wasm.run" 00:00:09 v #131 > > fun () => { receipt_outcomes_len receipt_outcomes } 00:00:09 v #132 > > 00:00:09 v #133 > > inl json = result |> near_workspaces.json 00:00:09 v #134 > > 00:00:09 v #135 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { json } 00:00:09 v #136 > > 00:00:09 v #137 > > inl borsh = result |> near_workspaces.borsh 00:00:09 v #138 > > 00:00:09 v #139 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh } 00:00:09 v #140 > > 00:00:09 v #141 > > inl error = { receipt_outcomes_len retry receipt_failures } |> 00:00:09 v #142 > > sm'.format 00:00:09 v #143 > > if receipt_failures_len > 0 00:00:09 v #144 > > then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box 00:00:09 v #145 > > elif receipt_outcomes_len > 1 00:00:09 v #146 > > then (Ok None : _ _ resultm.anyhow_error) |> resultm.box 00:00:09 v #147 > > else error |> resultm.anyhow_error |> resultm.err 00:00:09 v #148 > > |> async.new_future_move 00:00:09 v #149 > > 00:00:09 v #150 > > let rec loop (retry : u8) = 00:00:09 v #151 > > inl max = 15 00:00:09 v #152 > > inl init (error : _ string) = 00:00:09 v #153 > > fun () => 00:00:09 v #154 > > { retry error } 00:00:09 v #155 > > |> async.new_future_move 00:00:09 v #156 > > fun () => 00:00:09 v #157 > > inl result = 00:00:09 v #158 > > fn retry 00:00:09 v #159 > > |> async.await 00:00:09 v #160 > > |> resultm.map_error' sm'.format' 00:00:09 v #161 > > |> resultm.unbox 00:00:09 v #162 > > match result with 00:00:09 v #163 > > | Ok (None) => 00:00:09 v #164 > > init None 00:00:09 v #165 > > |> async.await 00:00:09 v #166 > > |> Ok 00:00:09 v #167 > > | Ok (Some error) => 00:00:09 v #168 > > trace Critical (fun () => "spiral_wasm.run / Ok (Some 00:00:09 v #169 > > error)") fun () => { retry error } 00:00:09 v #170 > > init (Some error) 00:00:09 v #171 > > |> async.await 00:00:09 v #172 > > |> Error 00:00:09 v #173 > > | Error error when retry >= max => 00:00:09 v #174 > > trace Warning (fun () => "spiral_wasm.run / Error error") 00:00:09 v #175 > > fun () => { retry error } 00:00:09 v #176 > > trace_raw Warning (fun () => "\n") 00:00:09 v #177 > > init None 00:00:09 v #178 > > |> async.await 00:00:09 v #179 > > |> Ok 00:00:09 v #180 > > | Error error => 00:00:09 v #181 > > trace Warning (fun () => "spiral_wasm.run / Error error") 00:00:09 v #182 > > fun () => { retry error } 00:00:09 v #183 > > trace_raw Warning (fun () => "\n") 00:00:09 v #184 > > loop (retry + 1) |> async.await 00:00:09 v #185 > > |> async.new_future_move 00:00:09 v #186 > > inl retries = loop 1 |> async.await 00:00:09 v #187 > > 00:00:09 v #188 > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retries } 00:00:09 v #189 > > 00:00:09 v #190 > > match retries with 00:00:09 v #191 > > | Ok { retry } => Ok retry |> resultm.box 00:00:09 v #192 > > | Error { retry error } => { retries error } |> sm'.format |> 00:00:09 v #193 > > resultm.anyhow_error |> resultm.err 00:00:09 v #194 > > 00:00:09 v #195 > > |> async.new_future_move 00:00:09 v #196 > > 00:00:09 v #197 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #198 > > │ ### main 00:00:09 v #199 > > 00:00:09 v #200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #201 > > ///! _ 00:00:09 v #202 > > 00:00:09 v #203 > > inl main (args : array_base string) = 00:00:09 v #204 > > inl command = get_command () 00:00:09 v #205 > > inl arg_matches = command |> runtime.command_get_matches 00:00:09 v #206 > > 00:00:09 v #207 > > inl trace_level = 00:00:09 v #208 > > arg_matches 00:00:09 v #209 > > |> runtime.matches_get_one (get_args () .trace_level |> fst) 00:00:09 v #210 > > |> optionm'.unbox 00:00:09 v #211 > > |> optionm.map ( 00:00:09 v #212 > > sm'.from_std_string 00:00:09 v #213 > > >> reflection.union_try_pick 00:00:09 v #214 > > ) 00:00:09 v #215 > > |> optionm'.flatten 00:00:09 v #216 > > |> optionm'.default_value Verbose 00:00:09 v #217 > > 00:00:09 v #218 > > inl trace_state = get_trace_state_or_init (Some trace_level) 00:00:09 v #219 > > 00:00:09 v #220 > > trace Verbose 00:00:09 v #221 > > fun () => "spiral_wasm.main" 00:00:09 v #222 > > fun () => { args } 00:00:09 v #223 > > 00:00:09 v #224 > > inl exception = 00:00:09 v #225 > > arg_matches 00:00:09 v #226 > > |> runtime.matches_get_one (get_args () .exception |> fst) 00:00:09 v #227 > > |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >> 00:00:09 v #228 > > sm'.trim_end [[ '\\' ]]) 00:00:09 v #229 > > |> optionm'.unbox 00:00:09 v #230 > > 00:00:09 v #231 > > inl result = 00:00:09 v #232 > > arg_matches 00:00:09 v #233 > > |> run 00:00:09 v #234 > > |> async.block_on_tokio 00:00:09 v #235 > > |> resultm.map_error' sm'.format' 00:00:09 v #236 > > 00:00:09 v #237 > > match result |> resultm.unbox, exception with 00:00:09 v #238 > > | Ok retries, Some exception => 00:00:09 v #239 > > ($'$"spiral_wasm.main / retries: {!retries} / exception: 00:00:09 v #240 > > \'{!exception}\'"' : string) 00:00:09 v #241 > > |> resultm.err |> resultm.unwrap' 00:00:09 v #242 > > | Error _error, Some ("") => 00:00:09 v #243 > > () 00:00:09 v #244 > > | Error error, Some exception when error |> sm'.from_std_string |> 00:00:09 v #245 > > sm'.contains exception => 00:00:09 v #246 > > () 00:00:09 v #247 > > | Error error, Some exception => 00:00:09 v #248 > > ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"' 00:00:09 v #249 > > : string) 00:00:09 v #250 > > |> resultm.err |> resultm.unwrap' 00:00:09 v #251 > > | Ok _retries, _ => 00:00:09 v #252 > > () 00:00:09 v #253 > > | Error _error, _ => 00:00:09 v #254 > > result |> resultm.unwrap' |> ignore 00:00:09 v #255 > > 00:00:09 v #256 > > 0i32 00:00:09 v #257 > > 00:00:09 v #258 > > inl main () = 00:00:09 v #259 > > $'let main args = !main args' : () 00:00:11 v #260 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8619 } 00:00:11 v #261 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:11 v #262 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.ipynb to html 00:00:11 v #263 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:11 v #264 > 00:00:10 v #7 ! validate(nb) 00:00:12 v #265 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:12 v #266 > 00:00:10 v #9 ! return _pygments_highlight( 00:00:12 v #267 > 00:00:11 v #10 ! [NbConvertApp] Writing 306884 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html 00:00:12 v #268 > 00:00:11 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 } 00:00:12 v #269 > 00:00:11 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 } 00:00:12 v #270 > 00:00:11 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:12 v #271 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:12 v #272 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:12 v #273 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 9596 } 00:00:12 d #274 runtime.execute_with_options_async / { exit_code = 0; output_length = 12824 } 00:00:12 d #3 main / executeCommand / exitCode: 0 / command: ../../../deps/spiral/workspace/target/release/spiral dib --path spiral_wasm.dib 00:00:12 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #27 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # spiral_wasm\nopen rust.rust_operators\nopen rust\nopen sm\u0027_operat...\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/wasm/spiral_wasm.spi"}} / result: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #12 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #16 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #17 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #22 Supervisor.buildFile / AsyncSeq.scan / path: spiral_wasm.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>] #endif type clap_builder_ValueRange = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [... #endif #if FABLE_COMPILER_TYPESCRIPT match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #else match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif // run_target_args' is_unit () | _ -> () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () 00:00:05 d #23 Supervisor.buildFile / takeWhileInclusive / path: spiral_wasm.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Command")>] #endif type clap_Command = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::builder::ValueRange")>] #endif type clap_builder_ValueRange = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("clap::Arg")>] #endif type clap_Arg = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [... #endif #if FABLE_COMPILER_TYPESCRIPT match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif #else match v344 with Ok x -> x | Error e -> failwith $"resultm.unwrap' / e: {e}" #endif // run_target_args' is_unit () | _ -> () 0 let v0 : ((string []) -> int32) = closure0() let main args = v0 args () 00:00:05 d #24 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 227980 targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @fsoikin Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj... Project and references (14 source files) parsed in 3118ms Started Fable compilation... Fable compilation finished in 8617ms ./lib/spiral/sm.fsx(548,0): (548,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(2419,0): (2419,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(6923,0): (6923,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(16504,0): (16504,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Updating crates.io index Downloading crates ... Downloaded async-stream-impl v0.3.6 Downloaded atty v0.2.14 Downloaded async-recursion v1.1.1 Downloaded tokio-io-timeout v1.2.0 Downloaded actix-rt v2.10.0 Downloaded zvariant_utils v1.0.1 Downloaded near-token v0.2.1 Downloaded near-gas v0.2.5 Downloaded memmap2 v0.5.10 Downloaded plain v0.2.3 Downloaded opaque-debug v0.3.1 Downloaded nom-supreme v0.6.0 Downloaded prost v0.12.6 Downloaded newline-converter v0.3.0 Downloaded primitive-types v0.10.1 Downloaded password-hash v0.4.2 Downloaded proc-macro-crate v1.3.1 Downloaded pbkdf2 v0.11.0 Downloaded textwrap v0.16.1 Downloaded opentelemetry_sdk v0.22.1 Downloaded reqwest v0.12.9 Downloaded fluent-uri v0.1.4 Downloaded scroll v0.11.0 Downloaded rustix v0.37.27 Downloaded owo-colors v3.5.0 Downloaded ordered-float v4.5.0 Downloaded opentelemetry v0.22.0 Downloaded http v0.2.12 Downloaded num-bigint v0.3.3 Downloaded pdb v0.7.0 Downloaded goblin v0.5.4 Downloaded opentelemetry-proto v0.5.0 Downloaded portable-atomic v1.10.0 Downloaded color-spantrace v0.2.1 Downloaded axum v0.6.20 Downloaded tokio v1.42.0 Downloaded protobuf v2.28.0 Downloaded gimli v0.28.1 Downloaded linux-raw-sys v0.3.8 Downloaded nix v0.26.4 Downloaded curve25519-dalek v4.1.3 Downloaded hyper v0.14.31 Downloaded h2 v0.3.26 Downloaded sha3 v0.10.8 Downloaded rustix v0.38.42 Downloaded hyper v1.5.1 Downloaded crossterm v0.25.0 Downloaded libc v0.2.168 Downloaded inquire v0.7.5 Downloaded bip39 v2.1.0 Downloaded cc v1.2.4 Downloaded indicatif v0.17.9 Downloaded prost-derive v0.12.6 Downloaded prettyplease v0.1.25 Downloaded scroll v0.10.2 Downloaded cargo-near v0.6.4 Downloaded color-eyre v0.6.3 Downloaded backtrace v0.3.71 Downloaded ed25519-dalek v2.1.1 Downloaded gimli v0.26.2 Downloaded opentelemetry-semantic-conventions v0.14.0 Downloaded opentelemetry-otlp v0.15.0 Downloaded ureq v2.12.1 Downloaded indexmap v1.9.3 Downloaded darling_core v0.20.10 Downloaded actix v0.13.5 Downloaded secret-service v3.1.0 Downloaded zbus_macros v3.15.2 Downloaded borsh v1.5.3 Downloaded encode_unicode v1.0.0 Downloaded bs58 v0.4.0 Downloaded csv v1.3.1 Downloaded blake2 v0.10.6 Downloaded arbitrary v1.4.1 Downloaded rustversion v1.0.18 Downloaded bitcoin_hashes v0.13.0 Downloaded near-cli-rs v0.11.1 Downloaded hyper-rustls v0.27.3 Downloaded easy-ext v1.0.2 Downloaded derivative v2.2.0 Downloaded joinery v2.1.0 Downloaded interactive-clap v0.2.10 Downloaded indent_write v2.2.0 Downloaded enumflags2_derive v0.7.10 Downloaded easy-ext v0.2.9 Downloaded darling v0.20.10 Downloaded csv-core v0.1.11 Downloaded crypto-mac v0.9.1 Downloaded borsh-derive v1.5.3 Downloaded reed-solomon-erasure v4.0.2 Downloaded serde_repr v0.1.19 Downloaded near-sandbox-utils v0.9.0 Downloaded axum-core v0.3.4 Downloaded prettytable v0.10.0 Downloaded scroll_derive v0.11.1 Downloaded num v0.4.3 Downloaded io-lifetimes v1.0.11 Downloaded futures-lite v1.13.0 Downloaded colored v2.2.0 Downloaded bs58 v0.5.1 Downloaded ordered-stream v0.2.0 Downloaded serde_with v3.11.0 Downloaded serde_json v1.0.133 Downloaded fallible-iterator v0.2.0 Downloaded elementtree v0.7.0 Downloaded digest v0.9.0 Downloaded debugid v0.7.3 Downloaded curve25519-dalek-derive v0.1.1 Downloaded cargo-util v0.1.2 Downloaded prometheus v0.13.4 Downloaded serde v1.0.216 Downloaded secp256k1 v0.27.0 Downloaded phf_shared v0.10.0 Downloaded near-sdk v5.6.0 Downloaded wasmparser v0.211.1 Downloaded syn v2.0.90 Downloaded http-body v0.4.6 Downloaded hex-conservative v0.1.2 Downloaded event-listener v2.5.3 Downloaded enumflags2 v0.7.10 Downloaded ed25519 v2.2.3 Downloaded dirs v5.0.1 Downloaded convert_case v0.5.0 Downloaded serde_derive v1.0.216 Downloaded open v5.3.1 Downloaded new_debug_unreachable v1.0.6 Downloaded near-primitives v0.23.0 Downloaded zbus v3.15.2 Downloaded tracing-opentelemetry v0.23.0 Downloaded symbolic-common v8.8.0 Downloaded json_comments v0.2.2 Downloaded hex v0.3.2 Downloaded heck v0.4.1 Downloaded fuzzy-matcher v0.3.7 Downloaded fastrand v1.9.0 Downloaded dmsort v1.0.2 Downloaded bitcoin-internals v0.2.0 Downloaded anyhow v1.0.94 Downloaded addr2line v0.21.0 Downloaded proc-macro-crate v3.2.0 Downloaded serde_with_macros v3.11.0 Downloaded num-rational v0.3.2 Downloaded wasmparser v0.83.0 Downloaded unicode-normalization v0.1.22 Downloaded symbolic-debuginfo v8.8.0 Downloaded json-patch v2.0.0 Downloaded fixed-hash v0.7.0 Downloaded async-trait v0.1.83 Downloaded polling v2.8.0 Downloaded pin-project v1.1.7 Downloaded names v0.14.0 Downloaded miniz_oxide v0.7.4 Downloaded keyring v2.3.3 Downloaded zvariant v3.15.2 Downloaded uuid v0.8.2 Downloaded uriparse v0.6.4 Downloaded tonic v0.11.0 Downloaded num-rational v0.4.2 Downloaded num-complex v0.4.6 Downloaded pin-project-internal v1.1.7 Downloaded near-workspaces v0.11.1 Downloaded near-token v0.3.0 Downloaded secp256k1-sys v0.8.1 Downloaded near-time v0.23.0 Downloaded near-sdk-macros v5.6.0 Downloaded near-performance-metrics v0.23.0 Downloaded near-parameters v0.23.0 Downloaded near-o11y v0.23.0 Downloaded near-jsonrpc-client v0.10.1 Downloaded near-gas v0.3.0 Downloaded near-fmt v0.23.0 Downloaded near-crypto v0.23.0 Downloaded near-chain-configs v0.23.0 Downloaded near-async v0.23.0 Downloaded linux-keyutils v0.2.4 Downloaded libloading v0.8.6 Downloaded keccak v0.1.5 Downloaded tracing-indicatif v0.3.8 Downloaded tracing-appender v0.2.3 Downloaded tokio-retry v0.3.0 Downloaded tokio-macros v2.4.0 Downloaded string_cache v0.8.7 Downloaded signal-hook-mio v0.2.4 Downloaded sha2 v0.9.9 Downloaded jsonptr v0.4.7 Downloaded interactive-clap-derive v0.2.10 Downloaded hyper-timeout v0.4.1 Downloaded hmac v0.9.0 Downloaded fs2 v0.4.3 Downloaded enum-map-derive v0.17.0 Downloaded enum-map v2.7.3 Downloaded near-sandbox-utils v0.12.0 Downloaded derive_arbitrary v1.4.1 Downloaded brownstone v1.1.0 Downloaded binary-install v0.2.0 Downloaded near_schemafy_lib v0.7.0 Downloaded near_schemafy_core v0.7.0 Downloaded near-sys v0.2.2 Downloaded near-socialdb-client v0.3.2 Downloaded near-sandbox-utils v0.8.0 Downloaded near-rpc-error-macro v0.23.0 Downloaded near-rpc-error-core v0.23.0 Downloaded near-primitives-core v0.23.0 Downloaded near-jsonrpc-primitives v0.23.0 Downloaded near-config-utils v0.23.0 Downloaded near-async-derive v0.23.0 Downloaded near-account-id v1.0.0 Downloaded near-abi-client-macros v0.1.1 Downloaded near-abi-client-impl v0.1.1 Downloaded near-abi-client v0.1.1 Downloaded near-abi v0.4.3 Downloaded memoffset v0.7.1 Downloaded zstd-safe v5.0.2+zstd.1.5.2 Downloaded zip v0.5.13 Downloaded zbus_names v2.6.1 Downloaded xml-rs v0.8.24 Downloaded waker-fn v1.2.0 Downloaded vt100 v0.15.2 Downloaded unicode-linebreak v0.1.5 Downloaded uint v0.9.5 Downloaded socket2 v0.4.10 Downloaded darling_macro v0.20.10 Downloaded crypto-hash v0.3.4 Downloaded zstd v0.11.2+zstd.1.5.2 Downloaded tempfile v3.14.0 Downloaded async-stream v0.3.6 Downloaded async-fs v1.6.0 Downloaded near-stdx v0.23.0 Downloaded zvariant_derive v3.15.2 Downloaded urlencoding v2.1.3 Downloaded tracing-error v0.2.1 Downloaded smawk v0.3.2 Downloaded smart-default v0.6.0 Downloaded signal-hook v0.3.17 Downloaded shellexpand v3.1.0 Downloaded constant_time_eq v0.1.5 Downloaded block-buffer v0.9.0 Downloaded async-lock v2.8.0 Downloaded async-io v1.13.0 Downloaded async-executor v1.13.1 Downloaded xdg-home v1.3.0 Downloaded term v0.7.0 Downloaded strum_macros v0.24.3 Downloaded smart-default v0.7.1 Downloaded serde_yaml v0.9.34+deprecated Downloaded ident_case v1.0.1 Downloaded Inflector v0.11.4 Downloaded sync_wrapper v0.1.2 Downloaded strum v0.24.1 Downloaded slipped10 v0.4.6 Downloaded actix_derive v0.6.2 Downloaded actix-macros v0.2.4 Downloaded adler v1.0.2 Downloaded async-broadcast v0.5.1 Downloaded openssl-src v300.4.1+3.4.0 Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling libc v0.2.168 Compiling cfg-if v1.0.0 Compiling autocfg v1.4.0 Compiling serde v1.0.216 Compiling version_check v0.9.5 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling shlex v1.3.0 Compiling memchr v2.7.4 Compiling jobserver v0.1.32 Compiling cc v1.2.4 Compiling pin-project-lite v0.2.15 Compiling once_cell v1.20.2 Compiling generic-array v0.14.7 Compiling smallvec v1.13.2 Compiling itoa v1.0.14 Compiling typenum v1.17.0 Compiling futures-core v0.3.31 Compiling pkg-config v0.3.31 Compiling lock_api v0.4.12 Compiling parking_lot_core v0.9.10 Compiling scopeguard v1.2.0 Compiling bytes v1.9.0 Compiling byteorder v1.5.0 Compiling log v0.4.22 Compiling parking_lot v0.12.3 Compiling getrandom v0.2.15 Compiling signal-hook-registry v1.4.2 Compiling equivalent v1.0.1 Compiling hashbrown v0.15.2 Compiling toml_datetime v0.6.8 Compiling slab v0.4.9 Compiling futures-io v0.3.31 Compiling tracing-core v0.1.33 Compiling synstructure v0.13.1 Compiling indexmap v2.7.0 Compiling futures-sink v0.3.31 Compiling socket2 v0.5.8 Compiling mio v1.0.3 Compiling subtle v2.6.1 Compiling rand_core v0.6.4 Compiling crypto-common v0.1.6 Compiling futures-channel v0.3.31 Compiling futures-task v0.3.31 Compiling pin-utils v0.1.0 Compiling num-traits v0.2.19 Compiling anyhow v1.0.94 Compiling block-buffer v0.10.4 Compiling cfg_aliases v0.2.1 Compiling fnv v1.0.7 Compiling syn v1.0.109 Compiling digest v0.10.7 Compiling winnow v0.6.20 Compiling serde_derive v1.0.216 Compiling zerofrom-derive v0.1.5 Compiling yoke-derive v0.7.5 Compiling tracing-attributes v0.1.28 Compiling tokio-macros v2.4.0 Compiling zerovec-derive v0.10.3 Compiling tokio v1.42.0 Compiling tracing v0.1.41 Compiling displaydoc v0.2.5 Compiling futures-macro v0.3.31 Compiling futures-util v0.3.31 Compiling zerocopy-derive v0.7.35 Compiling zerocopy v0.7.35 Compiling toml_edit v0.22.22 Compiling zstd-sys v2.0.13+zstd.1.5.6 Compiling rustversion v1.0.18 Compiling crossbeam-utils v0.8.21 Compiling cpufeatures v0.2.16 Compiling ryu v1.0.18 Compiling icu_provider_macros v1.5.0 Compiling lazy_static v1.5.0 Compiling bitflags v2.6.0 Compiling proc-macro-crate v3.2.0 Compiling thiserror v1.0.69 Compiling ppv-lite86 v0.2.20 Compiling borsh-derive v1.5.3 Compiling thiserror-impl v1.0.69 Compiling rand_chacha v0.3.1 Compiling serde_json v1.0.133 Compiling rand v0.8.5 Compiling borsh v1.5.3 Compiling aho-corasick v1.1.3 Compiling regex-syntax v0.8.5 Compiling stable_deref_trait v1.2.0 Compiling tokio-util v0.7.13 Compiling regex-automata v0.4.9 Compiling sha2 v0.10.8 Compiling semver v1.0.24 Compiling percent-encoding v2.3.1 Compiling zerofrom v0.1.5 Compiling bitflags v1.3.2 Compiling yoke v0.7.5 Compiling num-integer v0.1.46 Compiling httparse v1.9.5 Compiling zerovec v0.10.4 Compiling regex v1.11.1 Compiling hex v0.4.3 Compiling ring v0.17.8 Compiling try-lock v0.2.5 Compiling tower-service v0.3.3 Compiling want v0.3.1 Compiling async-trait v0.1.83 Compiling static_assertions v1.1.0 Compiling tinystr v0.7.6 Compiling http v0.2.12 Compiling thread_local v1.1.8 Compiling regex-syntax v0.6.29 Compiling writeable v0.5.5 Compiling utf8parse v0.2.2 Compiling litemap v0.7.4 Compiling powerfmt v0.2.0 Compiling deranged v0.3.11 Compiling icu_locid v1.5.0 Compiling regex-automata v0.1.10 Compiling openssl-src v300.4.1+3.4.0 Compiling num_cpus v1.16.0 Compiling time-core v0.1.2 Compiling num-conv v0.1.0 Compiling overload v0.1.1 Compiling vcpkg v0.2.15 Compiling time v0.3.37 Compiling nu-ansi-term v0.46.0 Compiling futures-executor v0.3.31 Compiling openssl-sys v0.9.104 Compiling matchers v0.1.0 Compiling icu_provider v1.5.0 Compiling http-body v0.4.6 Compiling rustc_version v0.4.1 Compiling crossbeam-channel v0.5.14 Compiling sharded-slab v0.1.7 Compiling serde_repr v0.1.19 Compiling pin-project-internal v1.1.7 Compiling tracing-log v0.2.0 Compiling bzip2-sys v0.1.11+1.0.8 Compiling num-bigint v0.3.3 Compiling indexmap v1.9.3 Compiling icu_locid_transform_data v1.5.0 Compiling atomic-waker v1.1.2 Compiling base64 v0.21.7 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling pin-project v1.1.7 Compiling icu_locid_transform v1.5.0 Compiling tracing-subscriber v0.3.19 Compiling curve25519-dalek v4.1.3 Compiling h2 v0.3.26 Compiling icu_collections v1.5.0 Compiling near-account-id v1.0.0 Compiling axum-core v0.3.4 Compiling num-rational v0.3.2 Compiling icu_properties_data v1.5.0 Compiling convert_case v0.4.0 Compiling either v1.13.0 Compiling httpdate v1.0.3 Compiling strsim v0.11.1 Compiling tower-layer v0.3.3 Compiling ident_case v1.0.1 Compiling mime v0.3.17 Compiling crunchy v0.2.2 Compiling base64 v0.22.1 Compiling hashbrown v0.12.3 Compiling darling_core v0.20.10 Compiling hyper v0.14.31 Compiling itertools v0.12.1 Compiling derive_more v0.99.18 Compiling icu_properties v1.5.1 Compiling axum v0.6.20 Compiling tokio-stream v0.1.17 Compiling curve25519-dalek-derive v0.1.1 Compiling derive_arbitrary v1.4.1 Compiling enum-map-derive v0.17.0 Compiling secp256k1-sys v0.8.1 Compiling utf8_iter v1.0.4 Compiling icu_normalizer_data v1.5.0 Compiling rustls-pki-types v1.10.1 Compiling urlencoding v2.1.3 Compiling schemars v0.8.21 Compiling write16 v1.0.0 Compiling heck v0.4.1 Compiling signature v2.2.0 Compiling bs58 v0.4.0 Compiling utf16_iter v1.0.5 Compiling rustls v0.23.20 Compiling heck v0.5.0 Compiling icu_normalizer v1.5.0 Compiling strum_macros v0.24.3 Compiling ed25519 v2.2.3 Compiling opentelemetry v0.22.0 Compiling arbitrary v1.4.1 Compiling enum-map v2.7.3 Compiling prost-derive v0.12.6 Compiling darling_macro v0.20.10 Compiling tower v0.4.13 Compiling anstyle-parse v0.2.6 Compiling concurrent-queue v2.5.0 Compiling tokio-io-timeout v1.2.0 Compiling ordered-float v4.5.0 Compiling async-stream-impl v0.3.6 Compiling serde_derive_internals v0.29.1 Compiling block-padding v0.3.3 Compiling parking v2.2.1 Compiling matchit v0.7.3 Compiling foreign-types-shared v0.1.1 Compiling sync_wrapper v0.1.2 Compiling is_terminal_polyfill v1.70.1 Compiling anstyle-query v1.1.2 Compiling anstyle v1.0.10 Compiling colorchoice v1.0.3 Compiling openssl v0.10.68 Compiling glob v0.3.1 Compiling anstream v0.6.18 Compiling schemars_derive v0.8.21 Compiling opentelemetry_sdk v0.22.1 Compiling foreign-types v0.3.2 Compiling async-stream v0.3.6 Compiling inout v0.1.3 Compiling hyper-timeout v0.4.1 Compiling prost v0.12.6 Compiling uint v0.9.5 Compiling darling v0.20.10 Compiling near-primitives-core v0.23.0 Compiling ed25519-dalek v2.1.1 Compiling strum v0.24.1 Compiling idna_adapter v1.2.0 Compiling fixed-hash v0.7.0 Compiling form_urlencoded v1.2.1 Compiling openssl-macros v0.1.1 Compiling http v1.2.0 Compiling winnow v0.5.40 Compiling rustix v0.38.42 Compiling protobuf v2.28.0 Compiling json_comments v0.2.2 Compiling fastrand v2.3.0 Compiling near-config-utils v0.23.0 Compiling tonic v0.11.0 Compiling toml_edit v0.19.15 Compiling primitive-types v0.10.1 Compiling idna v1.0.3 Compiling secp256k1 v0.27.0 Compiling cipher v0.4.4 Compiling actix-rt v2.10.0 Compiling actix_derive v0.6.2 Compiling actix-macros v0.2.4 Compiling blake2 v0.10.6 Compiling hmac v0.12.1 Compiling proc-macro-error-attr v1.0.4 Compiling adler2 v2.0.0 Compiling near-stdx v0.23.0 Compiling arrayvec v0.7.6 Compiling clap_lex v0.7.4 Compiling zstd-safe v7.2.1 Compiling linux-raw-sys v0.4.14 Compiling prometheus v0.13.4 Compiling clap_builder v4.5.23 Compiling near-crypto v0.23.0 Compiling miniz_oxide v0.8.0 Compiling actix v0.13.5 Compiling url v2.5.4 Compiling proc-macro-crate v1.3.1 Compiling opentelemetry-proto v0.5.0 Compiling http-body v1.0.1 Compiling event-listener v5.3.1 Compiling clap_derive v4.5.18 Compiling futures v0.3.31 Compiling sha1 v0.10.6 Compiling zvariant_utils v1.0.1 Compiling proc-macro-error v1.0.4 Compiling crc32fast v1.4.2 Compiling opentelemetry-semantic-conventions v0.14.0 Compiling event-listener v2.5.3 Compiling iana-time-zone v0.1.61 Compiling native-tls v0.2.12 Compiling unsafe-libyaml v0.2.11 Compiling reed-solomon-erasure v4.0.2 Compiling unicode-width v0.1.14 Compiling io-lifetimes v1.0.11 Compiling serde_yaml v0.9.34+deprecated Compiling chrono v0.4.39 Compiling opentelemetry-otlp v0.15.0 Compiling flate2 v1.0.35 Compiling clap v4.5.23 Compiling event-listener-strategy v0.5.3 Compiling aes v0.8.4 Compiling h2 v0.4.7 Compiling serde_with_macros v3.11.0 Compiling tracing-opentelemetry v0.23.0 Compiling tracing-appender v0.2.3 Compiling near-time v0.23.0 Compiling near-rpc-error-core v0.23.0 Compiling enumflags2_derive v0.7.10 Compiling futures-lite v2.5.0 Compiling dirs-sys-next v0.1.2 Compiling polling v2.8.0 Compiling memoffset v0.7.1 Compiling async-task v4.7.1 Compiling openssl-probe v0.1.5 Compiling dyn-clone v1.0.17 Compiling fastrand v1.9.0 Compiling keccak v0.1.5 Compiling spin v0.9.8 Compiling siphasher v0.3.11 Compiling rustix v0.37.27 Compiling untrusted v0.9.0 Compiling waker-fn v1.2.0 Compiling futures-lite v1.13.0 Compiling sha3 v0.10.8 Compiling itertools v0.10.5 Compiling dirs-next v2.0.0 Compiling enumflags2 v0.7.10 Compiling near-rpc-error-macro v0.23.0 Compiling hyper v1.5.1 Compiling near-o11y v0.23.0 Compiling serde_with v3.11.0 Compiling zstd v0.13.2 Compiling async-channel v2.3.1 Compiling near-parameters v0.23.0 Compiling async-lock v2.8.0 Compiling zvariant_derive v3.15.2 Compiling near-performance-metrics v0.23.0 Compiling piper v0.2.4 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling filetime v0.2.25 Compiling async-fs v1.6.0 Compiling async-io v1.13.0 Compiling base64ct v1.6.0 Compiling easy-ext v0.2.9 Compiling linux-raw-sys v0.3.8 Compiling signal-hook v0.3.17 Compiling near-primitives v0.23.0 Compiling password-hash v0.4.2 Compiling near-async v0.23.0 Compiling zvariant v3.15.2 Compiling blocking v1.6.1 Compiling interactive-clap-derive v0.2.10 Compiling hyper-util v0.1.10 Compiling rustls-webpki v0.102.8 Compiling Inflector v0.11.4 Compiling http-body-util v0.1.2 Compiling num-bigint v0.4.6 Compiling backtrace v0.3.71 Compiling socket2 v0.4.10 Compiling vte_generate_state_changes v0.1.2 Compiling ahash v0.8.11 Compiling gimli v0.28.1 Compiling bitcoin-internals v0.2.0 Compiling adler v1.0.2 Compiling zeroize v1.8.1 Compiling portable-atomic v1.10.0 Compiling eyre v0.6.12 Compiling addr2line v0.21.0 Compiling miniz_oxide v0.7.4 Compiling vte v0.11.1 Compiling num-rational v0.4.2 Compiling near-chain-configs v0.23.0 Compiling pbkdf2 v0.11.0 Compiling nix v0.26.4 Compiling zstd v0.11.2+zstd.1.5.2 Compiling interactive-clap v0.2.10 Compiling zbus_names v2.6.1 Compiling xattr v1.3.1 Compiling bzip2 v0.4.4 Compiling webpki-roots v0.26.7 Compiling async-executor v1.13.1 Compiling async-broadcast v0.5.1 Compiling zbus_macros v3.15.2 Compiling serde_urlencoded v0.7.1 Compiling rustls-pemfile v2.2.0 Compiling tracing-error v0.2.1 Compiling num-iter v0.1.45 Compiling derivative v2.2.0 Compiling num-complex v0.4.6 Compiling async-recursion v1.1.1 Compiling digest v0.9.0 Compiling mio v0.8.11 Compiling ordered-stream v0.2.0 Compiling sync_wrapper v1.0.2 Compiling xdg-home v1.3.0 Compiling object v0.32.2 Compiling encoding_rs v0.8.35 Compiling option-ext v0.2.0 Compiling tinyvec_macros v0.1.1 Compiling ipnet v2.10.1 Compiling uuid v0.8.2 Compiling constant_time_eq v0.1.5 Compiling owo-colors v3.5.0 Compiling radium v0.7.0 Compiling rustc-demangle v0.1.24 Compiling indenter v0.3.3 Compiling ureq v2.12.1 Compiling color-spantrace v0.2.1 Compiling zip v0.6.6 Compiling tinyvec v1.8.0 Compiling dirs-sys v0.4.1 Compiling zbus v3.15.2 Compiling signal-hook-mio v0.2.4 Compiling num v0.4.3 Compiling tar v0.4.43 Compiling near-jsonrpc-primitives v0.23.0 Compiling vt100 v0.15.2 Compiling near-abi v0.4.3 Compiling phf_shared v0.10.0 Compiling uriparse v0.6.4 Compiling console v0.15.8 Compiling near_schemafy_core v0.7.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.8 Compiling scroll_derive v0.11.1 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling is-docker v0.2.0 Compiling csv-core v0.1.11 Compiling fs2 v0.4.3 Compiling unicode-segmentation v1.12.0 Compiling new_debug_unreachable v1.0.6 Compiling same-file v1.0.6 Compiling hex-conservative v0.1.2 Compiling fallible-iterator v0.2.0 Compiling is_executable v0.1.2 Compiling precomputed-hash v0.1.1 Compiling camino v1.1.9 Compiling tap v1.0.1 Compiling hex v0.3.2 Compiling opaque-debug v0.3.1 Compiling minimal-lexical v0.2.1 Compiling number_prefix v0.4.0 Compiling rust_decimal v1.36.0 Compiling unicode-width v0.2.0 Compiling near-sandbox-utils v0.8.0 Compiling indicatif v0.17.9 Compiling binary-install v0.2.0 Compiling nom v7.1.3 Compiling sha2 v0.9.9 Compiling wyz v0.5.1 Compiling string_cache v0.8.7 Compiling bitcoin_hashes v0.13.0 Compiling walkdir v2.5.0 Compiling newline-converter v0.3.0 Compiling csv v1.3.1 Compiling scroll v0.11.0 Compiling is-wsl v0.4.0 Compiling hmac v0.9.0 Compiling secret-service v3.1.0 Compiling near_schemafy_lib v0.7.0 Compiling hashbrown v0.14.5 Compiling crossterm v0.25.0 Compiling dirs v5.0.1 Compiling unicode-normalization v0.1.22 Compiling color-eyre v0.6.3 Compiling debugid v0.7.3 Compiling near-token v0.2.1 Compiling term v0.7.0 Compiling tempfile v3.14.0 Compiling brownstone v1.1.0 Compiling fuzzy-matcher v0.3.7 Compiling linux-keyutils v0.2.4 Compiling fxhash v0.2.1 Compiling hybrid-array v0.2.3 Compiling memmap2 v0.5.10 Compiling is-terminal v0.4.13 Compiling encode_unicode v1.0.0 Compiling plain v0.2.3 Compiling scroll v0.10.2 Compiling prettyplease v0.1.25 Compiling funty v2.0.0 Compiling xml-rs v0.8.24 Compiling bs58 v0.5.1 Compiling names v0.14.0 Compiling indent_write v2.2.0 Compiling joinery v2.1.0 Compiling shell-escape v0.1.5 Compiling pathdiff v0.2.3 Compiling home v0.5.9 Compiling smawk v0.3.2 Compiling unicode-linebreak v0.1.5 Compiling textwrap v0.16.1 Compiling open v5.3.1 Compiling nom-supreme v0.6.0 Compiling elementtree v0.7.0 Compiling bitvec v1.0.1 Compiling pdb v0.7.0 Compiling prettytable v0.10.0 Compiling goblin v0.5.4 Compiling symbolic-common v8.8.0 Compiling inquire v0.7.5 Compiling keyring v2.3.3 Compiling bip39 v2.1.0 Compiling shellexpand v3.1.0 Compiling near-abi-client-impl v0.1.1 Compiling wasmparser v0.211.1 Compiling slipped10 v0.4.6 Compiling toml v0.8.19 Compiling tracing-indicatif v0.3.8 Compiling gimli v0.26.2 Compiling near-gas v0.2.5 Compiling zip v0.5.13 Compiling env_filter v0.1.2 Compiling cargo-platform v0.1.9 Compiling linked-hash-map v0.5.6 Compiling smart-default v0.7.1 Compiling near-sandbox-utils v0.9.0 Compiling near-sdk-macros v5.6.0 Compiling lazycell v1.3.0 Compiling shell-words v1.1.0 Compiling wasmparser v0.83.0 Compiling dmsort v1.0.2 Compiling humantime v2.1.0 Compiling easy-ext v1.0.2 Compiling env_logger v0.11.5 Compiling symbolic-debuginfo v8.8.0 Compiling cargo_metadata v0.18.1 Compiling near-abi-client-macros v0.1.1 Compiling near-workspaces v0.11.1 Compiling block-buffer v0.11.0-rc.3 Compiling crypto-common v0.2.0-rc.1 Compiling strum_macros v0.26.4 Compiling jsonptr v0.4.7 Compiling colored v2.2.0 Compiling atty v0.2.14 Compiling libloading v0.8.6 Compiling const-oid v0.10.0-rc.3 Compiling dunce v1.0.5 Compiling near-sandbox-utils v0.12.0 Compiling strum v0.26.3 Compiling convert_case v0.5.0 Compiling digest v0.11.0-pre.9 Compiling near-abi-client v0.1.1 Compiling json-patch v2.0.0 Compiling tokio-retry v0.3.0 Compiling near-token v0.3.0 Compiling near-gas v0.3.0 Compiling uuid v1.11.0 Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup) Compiling futures-timer v3.0.3 Compiling near-sys v0.2.2 Compiling near-sdk v5.6.0 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling sha2 v0.11.0-pre.4 Compiling inline_colorization v0.1.6 Compiling crypto-hash v0.3.4 Compiling cargo-util v0.1.2 Compiling tokio-native-tls v0.3.1 Compiling hyper-tls v0.6.0 Compiling reqwest v0.12.9 Compiling near-jsonrpc-client v0.10.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/wasm) Finished `release` profile [optimized] target(s) in 4m 43s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path math.dib --retries 5"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/math/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # math 00:00:05 v #13 > > 00:00:05 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > open testing 00:00:05 v #16 > > open rust.rust_operators 00:00:05 v #17 > > open rust 00:00:08 v #18 > > 00:00:08 v #19 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #20 > > │ ## complex 00:00:08 v #21 > > 00:00:08 v #22 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #23 > > nominal complex t = 00:00:08 v #24 > > `( 00:00:08 v #25 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:08 v #26 > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype 00:00:08 v #27 > > num_complex_Complex<'T> = class end" 00:00:08 v #28 > > $'' : $'num_complex_Complex<`t>' 00:00:08 v #29 > > ) 00:00:08 v #30 > > 00:00:08 v #31 > > inl complex forall t. ((re : t), (im : t)) : complex t = 00:00:08 v #32 > > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') 00:00:09 v #33 > > 00:00:09 v #34 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #35 > > //// test 00:00:09 v #36 > > ///! rust -d num-complex 00:00:09 v #37 > > 00:00:09 v #38 > > complex (0f64, 0f64) 00:00:09 v #39 > > |> sm'.format' 00:00:09 v #40 > > |> sm'.from_std_string 00:00:09 v #41 > > |> _assert_eq "0+0i" 00:00:21 v #42 > > 00:00:21 v #43 > > ── [ 12.91s - return value ] ─────────────────────────────────────────────────── 00:00:21 v #44 > > │ __assert_eq / actual: "0+0i" / expected: "0+0i" 00:00:21 v #45 > > │ 00:00:21 v #46 > > 00:00:21 v #47 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #48 > > │ ## re 00:00:21 v #49 > > 00:00:21 v #50 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:21 v #51 > > inl re forall t. (c : complex t) : t = 00:00:21 v #52 > > !\\(c, $'"$0.re"') 00:00:22 v #53 > > 00:00:22 v #54 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #55 > > │ ## im 00:00:22 v #56 > > 00:00:22 v #57 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #58 > > inl im forall t. (c : complex t) : t = 00:00:22 v #59 > > !\\(c, $'"$0.im"') 00:00:22 v #60 > > 00:00:22 v #61 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #62 > > │ ## complex_unbox 00:00:22 v #63 > > 00:00:22 v #64 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #65 > > inl complex_unbox forall t. (c : complex t) = 00:00:22 v #66 > > re c, im c 00:00:22 v #67 > > 00:00:22 v #68 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #69 > > │ ## (~.^) 00:00:22 v #70 > > 00:00:22 v #71 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #72 > > inl (~.^) c = complex c 00:00:22 v #73 > > 00:00:22 v #74 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #75 > > │ ## complex_eq 00:00:22 v #76 > > 00:00:22 v #77 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #78 > > inl complex_eq forall t. (a : complex t) (b : complex t) : bool = 00:00:22 v #79 > > !\\((a, b), $'"$0 == $1"') 00:00:23 v #80 > > 00:00:23 v #81 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #82 > > │ ## (.=) 00:00:23 v #83 > > 00:00:23 v #84 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #85 > > inl (.=) a b = complex_eq a b 00:00:23 v #86 > > 00:00:23 v #87 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #88 > > │ ## equable complex 00:00:23 v #89 > > 00:00:23 v #90 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #91 > > instance equable complex t = complex_eq 00:00:23 v #92 > > 00:00:23 v #93 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #94 > > │ ## complex_add 00:00:23 v #95 > > 00:00:23 v #96 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #97 > > inl complex_add forall t. (a : complex t) (b : complex t) : complex t = 00:00:23 v #98 > > !\\((a, b), $'"$0 + $1"') 00:00:23 v #99 > > 00:00:23 v #100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #101 > > │ ## (.+) 00:00:23 v #102 > > 00:00:23 v #103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #104 > > inl (.+) a b = complex_add a b 00:00:23 v #105 > > 00:00:23 v #106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #107 > > │ ## complex_sub 00:00:23 v #108 > > 00:00:23 v #109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #110 > > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t = 00:00:23 v #111 > > !\\((a, b), $'"$0 - $1"') 00:00:24 v #112 > > 00:00:24 v #113 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #114 > > │ ## (.-) 00:00:24 v #115 > > 00:00:24 v #116 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #117 > > inl (.-) a b = complex_sub a b 00:00:24 v #118 > > 00:00:24 v #119 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #120 > > │ ## complex_mult 00:00:24 v #121 > > 00:00:24 v #122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #123 > > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t = 00:00:24 v #124 > > !\\((a, b), $'"$0 * $1"') 00:00:24 v #125 > > 00:00:24 v #126 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #127 > > │ ## (.*) 00:00:24 v #128 > > 00:00:24 v #129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #130 > > inl (.*) a b = complex_mult a b 00:00:24 v #131 > > 00:00:24 v #132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #133 > > │ ## complex_div 00:00:24 v #134 > > 00:00:24 v #135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #136 > > inl complex_div forall t. (a : complex t) (b : complex t) : complex t = 00:00:24 v #137 > > !\\((a, b), $'"$0 / $1"') 00:00:24 v #138 > > 00:00:24 v #139 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #140 > > │ ## (./) 00:00:24 v #141 > > 00:00:24 v #142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #143 > > inl (./) a b = complex_div a b 00:00:24 v #144 > > 00:00:24 v #145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #146 > > │ ## powc 00:00:24 v #147 > > 00:00:24 v #148 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:24 v #149 > > inl powc forall t. (s : complex t) (c : complex t) : complex t = 00:00:24 v #150 > > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') 00:00:25 v #151 > > 00:00:25 v #152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #153 > > │ ## (.**) 00:00:25 v #154 > > 00:00:25 v #155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #156 > > inl (.**) a b = powc b a 00:00:25 v #157 > > 00:00:25 v #158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #159 > > │ ## complex_sin 00:00:25 v #160 > > 00:00:25 v #161 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #162 > > inl complex_sin forall t. (c : complex t) : complex t = 00:00:25 v #163 > > !\\(c, $'"$0.sin()"') 00:00:25 v #164 > > 00:00:25 v #165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #166 > > │ ## conj 00:00:25 v #167 > > 00:00:25 v #168 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #169 > > inl conj forall t. (c : complex t) : complex t = 00:00:25 v #170 > > !\\(c, $'"$0.conj()"') 00:00:25 v #171 > > 00:00:25 v #172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #173 > > │ ## zeta 00:00:25 v #174 > > 00:00:25 v #175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #176 > > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex 00:00:25 v #177 > > f64 = 00:00:25 v #178 > > inl rec zeta count gamma s = 00:00:25 v #179 > > if log then 00:00:25 v #180 > > !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\", 00:00:25 v #181 > > $0, $1)"') 00:00:25 v #182 > > if re s > 1 then 00:00:25 v #183 > > (.^(0, 0), (am.init 10000i32 id : a i32 _)) 00:00:25 v #184 > > ||> am.fold fun acc n => 00:00:25 v #185 > > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) 00:00:25 v #186 > > else 00:00:25 v #187 > > inl gamma_term = gamma (.^(1, 0) .- s) 00:00:25 v #188 > > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin 00:00:25 v #189 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:00:25 v #190 > > inl mirror_term = 00:00:25 v #191 > > if re one_minus_s <= 1 00:00:25 v #192 > > then .^(0, 0) 00:00:25 v #193 > > else 00:00:25 v #194 > > if count <= 3 00:00:25 v #195 > > then zeta (count + 1) gamma one_minus_s 00:00:25 v #196 > > else one_minus_s 00:00:25 v #197 > > inl reflection_formula = 00:00:25 v #198 > > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .* 00:00:25 v #199 > > mirror_term 00:00:25 v #200 > > reflection_formula 00:00:25 v #201 > > join zeta 0i32 gamma s 00:00:25 v #202 > > 00:00:25 v #203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #204 > > │ ## bound 00:00:25 v #205 > > 00:00:25 v #206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #207 > > nominal bound t = 00:00:25 v #208 > > `( 00:00:25 v #209 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:25 v #210 > > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class 00:00:25 v #211 > > end" 00:00:25 v #212 > > $'' : $'pyo3_Bound<`t>' 00:00:25 v #213 > > ) 00:00:25 v #214 > > 00:00:25 v #215 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #216 > > │ ## python 00:00:25 v #217 > > 00:00:25 v #218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #219 > > nominal python = 00:00:25 v #220 > > `( 00:00:25 v #221 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:25 v #222 > > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end" 00:00:25 v #223 > > $'' : $'pyo3_Python' 00:00:25 v #224 > > ) 00:00:25 v #225 > > 00:00:25 v #226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:25 v #227 > > │ ## pymodule 00:00:25 v #228 > > 00:00:25 v #229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:25 v #230 > > nominal pymodule = 00:00:25 v #231 > > `( 00:00:25 v #232 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:25 v #233 > > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule 00:00:25 v #234 > > = class end" 00:00:25 v #235 > > $'' : $'pyo3_types_PyModule' 00:00:25 v #236 > > ) 00:00:26 v #237 > > 00:00:26 v #238 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #239 > > │ ## pyany 00:00:26 v #240 > > 00:00:26 v #241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #242 > > nominal pyany = 00:00:26 v #243 > > `( 00:00:26 v #244 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:26 v #245 > > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end" 00:00:26 v #246 > > $'' : $'pyo3_PyAny' 00:00:26 v #247 > > ) 00:00:26 v #248 > > 00:00:26 v #249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #250 > > │ ## pyerr 00:00:26 v #251 > > 00:00:26 v #252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #253 > > nominal pyerr = 00:00:26 v #254 > > `( 00:00:26 v #255 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:00:26 v #256 > > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end" 00:00:26 v #257 > > $'' : $'pyo3_PyErr' 00:00:26 v #258 > > ) 00:00:26 v #259 > > 00:00:26 v #260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #261 > > │ ## eval 00:00:26 v #262 > > 00:00:26 v #263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #264 > > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ = 00:00:26 v #265 > > inl py = join py 00:00:26 v #266 > > inl code = code |> sm'.to_std_string |> sm'.new_c_string 00:00:26 v #267 > > inl empty = "" |> sm'.to_std_string |> sm'.new_c_string 00:00:26 v #268 > > !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, &!empty, &!empty)"') 00:00:26 v #269 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:26 v #270 > > 00:00:26 v #271 > > inl use_pyanymethods () = 00:00:26 v #272 > > global "Fable.Core.RustInterop.emitRustExpr () \");\nuse 00:00:26 v #273 > > pyo3::prelude::PyAnyMethods;\n//\"" 00:00:26 v #274 > > 00:00:26 v #275 > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ = 00:00:26 v #276 > > inl attr = join attr 00:00:26 v #277 > > inl attr = attr |> sm'.as_str 00:00:26 v #278 > > inl module = join module 00:00:26 v #279 > > use_pyanymethods () 00:00:26 v #280 > > !\\(attr, $'"!module.getattr($0)"') 00:00:26 v #281 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:26 v #282 > > 00:00:26 v #283 > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ = 00:00:26 v #284 > > inl args = join args 00:00:26 v #285 > > inl module = join module 00:00:26 v #286 > > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1), 00:00:26 v #287 > > None)"') 00:00:26 v #288 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:26 v #289 > > 00:00:26 v #290 > > inl extract forall t. (result : bound pyany) : _ t _ = 00:00:26 v #291 > > inl result = join result 00:00:26 v #292 > > use_pyanymethods () 00:00:26 v #293 > > !\($'"!result.extract()"') 00:00:26 v #294 > > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' 00:00:26 v #295 > > 00:00:26 v #296 > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string = 00:00:26 v #297 > > inl code = 00:00:26 v #298 > > code 00:00:26 v #299 > > |> module_from_code py 00:00:26 v #300 > > |> resultm.unwrap' 00:00:26 v #301 > > inl fn = 00:00:26 v #302 > > code 00:00:26 v #303 > > |> getattr "fn" 00:00:26 v #304 > > |> resultm.unwrap' 00:00:26 v #305 > > 00:00:26 v #306 > > fn 00:00:26 v #307 > > |> call args 00:00:26 v #308 > > |> resultm.try' 00:00:26 v #309 > > |> extract 00:00:26 v #310 > > |> resultm.try' 00:00:26 v #311 > > |> complex 00:00:26 v #312 > > |> Ok 00:00:26 v #313 > > |> resultm.box 00:00:26 v #314 > > 00:00:26 v #315 > > inl call1_ log py s code = 00:00:26 v #316 > > inl code = join (a code : _ i32 _) |> sm'.concat_array "\n" 00:00:26 v #317 > > 00:00:26 v #318 > > inl s = new_pair (re s) (im s) 00:00:26 v #319 > > inl args = new_pair log s 00:00:26 v #320 > > 00:00:26 v #321 > > eval py code args 00:00:26 v #322 > > 00:00:26 v #323 > > inl call1_ log name py s line = 00:00:26 v #324 > > inl s = join s 00:00:26 v #325 > > join 00:00:26 v #326 > > ;[[ 00:00:26 v #327 > > $'$"import sys"' 00:00:26 v #328 > > $'$"import traceback"' 00:00:26 v #329 > > $'$"import re"' 00:00:26 v #330 > > $'$"count = 0"' 00:00:26 v #331 > > $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"' 00:00:26 v #332 > > $'$"def trace_calls(frame, event, arg):"' 00:00:26 v #333 > > $'$" global count"' 00:00:26 v #334 > > $'$" count += 1"' 00:00:26 v #335 > > $'$" if count < 200:"' 00:00:26 v #336 > > $'$" try:"' 00:00:26 v #337 > > $'$" args = {{ k: v for k, v in frame.f_locals.items() if 00:00:26 v #338 > > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not 00:00:26 v #339 > > callable(v) }}"' 00:00:26 v #340 > > $'$" args_str = \', \'.join([[ 00:00:26 v #341 > > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k, 00:00:26 v #342 > > v in args.items() ]])"' 00:00:26 v #343 > > $'$" print(f\\\"{{event}}({!name}) / f_code.co_name: 00:00:26 v #344 > > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}} 00:00:26 v #345 > > / f_code.co_filename: 00:00:26 v #346 > > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno: 00:00:26 v #347 > > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }} 00:00:26 v #348 > > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else 00:00:26 v #349 > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: 00:00:26 v #350 > > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"' 00:00:26 v #351 > > $'$" except ValueError as e:"' 00:00:26 v #352 > > $'$" print(f\'{!name} / e: {{e}}\', flush=True)"' 00:00:26 v #353 > > $'$" return trace_calls"' 00:00:26 v #354 > > $'$"import mpmath"' 00:00:26 v #355 > > $'$"def fn(log, s):"' 00:00:26 v #356 > > $'$" global count"' 00:00:26 v #357 > > $'$" if log:"' 00:00:26 v #358 > > $'$" print(f\'{!name} / s: {{s}} / count: {{count}}\', 00:00:26 v #359 > > flush=True)"' 00:00:26 v #360 > > $'$" s = complex(*s)"' 00:00:26 v #361 > > $'$" try:"' 00:00:26 v #362 > > $'$" if log: sys.settrace(trace_calls)"' 00:00:26 v #363 > > line 00:00:26 v #364 > > $'$" if log:"' 00:00:26 v #365 > > $'$" sys.settrace(None)"' 00:00:26 v #366 > > $'$" print(f\'{!name} / result: {{s}} / count: 00:00:26 v #367 > > {{count}}\', flush=True)"' 00:00:26 v #368 > > $'$" except ValueError as e:"' 00:00:26 v #369 > > $'$" if s.real == 1:"' 00:00:26 v #370 > > $'$" s = complex(float(\'inf\'), 0)"' 00:00:26 v #371 > > $'$" return (s.real, s.imag)"' 00:00:26 v #372 > > ]] 00:00:26 v #373 > > |> call1_ log py s 00:00:26 v #374 > > 00:00:26 v #375 > > inl gamma_ log py s = 00:00:26 v #376 > > call1_ log "gamma_" py s $'$" s = mpmath.gamma(s)"' 00:00:26 v #377 > > 00:00:26 v #378 > > inl zeta_ log py s = 00:00:26 v #379 > > call1_ log "zeta_" py s $'$" s = mpmath.zeta(s)"' 00:00:26 v #380 > > 00:00:26 v #381 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #382 > > │ ## run_test 00:00:26 v #383 > > 00:00:26 v #384 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #385 > > inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex 00:00:26 v #386 > > f64) -> ()) = 00:00:26 v #387 > > inl fn_ (py : python) : resultm.result' () pyerr = 00:00:26 v #388 > > inl nan () = 00:00:26 v #389 > > !\($'"f64::NAN"') 00:00:26 v #390 > > inl gamma__ = fun (s : complex f64) => 00:00:26 v #391 > > inl result = gamma_ log py s 00:00:26 v #392 > > if log then 00:00:26 v #393 > > inl s = join s 00:00:26 v #394 > > !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s, 00:00:26 v #395 > > !result)"') 00:00:26 v #396 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:26 v #397 > > .^(nan (), nan ()) 00:00:26 v #398 > > inl zeta__ = fun (s : complex f64) => 00:00:26 v #399 > > inl result = zeta_ log py s 00:00:26 v #400 > > 00:00:26 v #401 > > inl z = zeta true gamma__ s 00:00:26 v #402 > > 00:00:26 v #403 > > if log then 00:00:26 v #404 > > inl s = join s 00:00:26 v #405 > > !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z: 00:00:26 v #406 > > {:?}\\\", !s, !result, !z)"') 00:00:26 v #407 > > 00:00:26 v #408 > > // re result - re x |> abs 00:00:26 v #409 > > // |> _assert_lt 0.001 00:00:26 v #410 > > 00:00:26 v #411 > > // im result - im x |> abs 00:00:26 v #412 > > // |> _assert_lt 0.001 00:00:26 v #413 > > 00:00:26 v #414 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value 00:00:26 v #415 > > .^(nan (), nan ()) 00:00:26 v #416 > > join fn (zeta__, gamma__) 00:00:26 v #417 > > 00:00:26 v #418 > > Ok () 00:00:26 v #419 > > |> resultm.box 00:00:26 v #420 > > 00:00:26 v #421 > > join 00:00:26 v #422 > > !\($'"pyo3::prepare_freethreaded_python()"') : () 00:00:26 v #423 > > 00:00:26 v #424 > > !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> 00:00:26 v #425 > > { //"') 00:00:26 v #426 > > 00:00:26 v #427 > > let x' = fn_ (!\($'"py"') : python) 00:00:26 v #428 > > inl x' = join x' 00:00:26 v #429 > > 00:00:26 v #430 > > inl closure_fix = 2u8, 1u8 00:00:26 v #431 > > x' |> rust.fix_closure closure_fix 00:00:26 v #432 > > 00:00:26 v #433 > > (!\($'"__run_test"') : _ () pyerr) 00:00:26 v #434 > > |> resultm.unwrap' 00:00:26 v #435 > > 00:00:26 v #436 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #437 > > │ ## test_zeta_at_known_values_ 00:00:26 v #438 > > 00:00:26 v #439 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #440 > > inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma => 00:00:26 v #441 > > ;[[ 00:00:26 v #442 > > .^(2, 0), pi ** 2 / 6 00:00:26 v #443 > > .^(-1, 0), -1 / 12 00:00:26 v #444 > > ]] 00:00:26 v #445 > > |> fun x => a x : _ i32 _ 00:00:26 v #446 > > |> am.iter fun s, e => 00:00:26 v #447 > > inl result = zeta s 00:00:26 v #448 > > 00:00:26 v #449 > > result |> im |> _assert_eq 0 00:00:26 v #450 > > re result - e |> abs |> _assert_lt 0.0001 00:00:26 v #451 > > 00:00:26 v #452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #453 > > //// test 00:00:26 v #454 > > ///! rust -d num-complex pyo3 00:00:26 v #455 > > 00:00:26 v #456 > > test_zeta_at_known_values_ true 00:00:43 v #457 > > 00:00:43 v #458 > > ── [ 16.73s - return value ] ─────────────────────────────────────────────────── 00:00:43 v #459 > > │ zeta_ / s: (2.0, 0.0) / count: 0 00:00:43 v #460 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:00:43 v #461 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:00:43 v #462 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:43 v #463 > > arg: None 00:00:43 v #464 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:00:43 v #465 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:00:43 v #466 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:43 v #467 > > arg: None 00:00:43 v #468 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:00:43 v #469 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:00:43 v #470 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:43 v #471 > > arg: None 00:00:43 v #472 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:00:43 v #473 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:00:43 v #474 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:43 v #475 > > arg: None 00:00:43 v #476 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:00:43 v #477 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:00:43 v #478 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:43 v #479 > > arg: None 00:00:43 v #480 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:00:43 v #481 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:00:43 v #482 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:00:43 v #483 > > /mpmath/functions/zeta.py / arg: None 00:00:43 v #484 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:00:43 v #485 > > kwargs={}, name='zeta' / f_linen...me: make_mpc / f_locals: / f_lineno: 603 00:00:43 v #486 > > f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 1007 00:00:43 v #487 > > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:43 v #488 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:43 v #489 > > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:43 v #490 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:43 v #491 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:43 v #492 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:43 v #493 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:43 v #494 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:43 v #495 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:43 v #496 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 00:00:43 v #497 > > mpc(real='1.0', imag='0.0') 00:00:43 v #498 > > │ return(gamma_) / f_code.co_name: f / f_locals: 00:00:43 v #499 > > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' 00:00:43 v #500 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:43 v #501 > > 25 / f_back.f_code.co_filename: / arg: mpc(real='1.0', imag='0.0') 00:00:43 v #502 > > │ gamma_ / result: (1.0 + 0.0j) / count: 140 00:00:43 v #503 > > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: 00:00:43 v #504 > > Ok(Complex { re: 1.0, im: 0.0 }) 00:00:43 v #505 > > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 } 00:00:43 v #506 > > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: 00:00:43 v #507 > > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: 00:00:43 v #508 > > NaN } 00:00:43 v #509 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:00:43 v #510 > > │ __assert_lt / actual: 0.0 / expected: 0.0001 00:00:43 v #511 > > │ 00:00:43 v #512 > > 00:00:43 v #513 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:43 v #514 > > │ ## test_zeta_at_2_minus2 00:00:43 v #515 > > 00:00:43 v #516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:43 v #517 > > inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma => 00:00:43 v #518 > > inl s = .^(2, -2) 00:00:43 v #519 > > inl result = zeta s 00:00:43 v #520 > > 00:00:43 v #521 > > (re result - 0.8673) |> abs |> _assert_lt 0.001 00:00:43 v #522 > > (im result - 0.2750) |> abs |> _assert_lt 0.001 00:00:43 v #523 > > 00:00:43 v #524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:43 v #525 > > //// test 00:00:43 v #526 > > ///! rust -d num-complex pyo3 00:00:43 v #527 > > 00:00:43 v #528 > > test_zeta_at_2_minus2 true 00:00:51 v #529 > > 00:00:51 v #530 > > ── [ 7.22s - return value ] ──────────────────────────────────────────────────── 00:00:51 v #531 > > │ zeta_ / s: (2.0, -2.0) / count: 0 00:00:51 v #532 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, 00:00:51 v #533 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:00:51 v #534 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:51 v #535 > > arg: None 00:00:51 v #536 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, 00:00:51 v #537 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:00:51 v #538 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:51 v #539 > > arg: None 00:00:51 v #540 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, 00:00:51 v #541 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:00:51 v #542 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:51 v #543 > > arg: None 00:00:51 v #544 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, 00:00:51 v #545 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:00:51 v #546 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:51 v #547 > > arg: None 00:00:51 v #548 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, 00:00:51 v #549 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:00:51 v #550 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:51 v #551 > > arg: None 00:00:51 v #552 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), 00:00:51 v #553 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:00:51 v #554 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:00:51 v #555 > > /mpmath/functions/zeta.py / arg: None 00:00:51 v #556 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), 00:00:51 v #557 > > kwargs={}, name='zeta' / f_line.../ arg: None 00:00:51 v #558 > > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 00:00:51 v #559 > > / f_lineno: 91 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:00:51 v #560 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:00:51 v #561 > > None 00:00:51 v #562 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 00:00:51 v #563 > > / f_lineno: 93 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:00:51 v #564 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:00:51 v #565 > > None 00:00:51 v #566 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:00:51 v #567 > > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:00:51 v #568 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:00:51 v #569 > > None 00:00:51 v #570 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:00:51 v #571 > > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:00:51 v #572 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:00:51 v #573 > > None 00:00:51 v #574 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:00:51 v #575 > > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:00:51 v #576 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:00:51 v #577 > > 2 00:00:51 v #578 > > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) 00:00:51 v #579 > > count: 1812 00:00:51 v #580 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 } 00:00:51 v #581 > > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: 00:00:51 v #582 > > Ok(Complex { re: 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { 00:00:51 v #583 > > re: NaN, im: NaN } 00:00:51 v #584 > > │ __assert_lt / actual: 5.182963599315027e-5 / expected: 0.001 00:00:51 v #585 > > │ __assert_lt / actual: 0.00012723880785764363 / expected: 00:00:51 v #586 > > 0.001 00:00:51 v #587 > > │ 00:00:51 v #588 > > 00:00:51 v #589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:51 v #590 > > │ ## test_trivial_zero_at_negative_even___ 00:00:51 v #591 > > 00:00:51 v #592 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:51 v #593 > > inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma => 00:00:51 v #594 > > (join listm'.init_series -2f64 -40 -2) 00:00:51 v #595 > > |> listm.iter fun n => 00:00:51 v #596 > > inl s = .^(n, 0) 00:00:51 v #597 > > inl result = zeta s 00:00:51 v #598 > > 00:00:51 v #599 > > result |> re |> _assert_eq 0 00:00:51 v #600 > > result |> im |> _assert_eq 0 00:00:51 v #601 > > 00:00:51 v #602 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:51 v #603 > > //// test 00:00:51 v #604 > > ///! rust -d num-complex pyo3 00:00:51 v #605 > > 00:00:51 v #606 > > test_trivial_zero_at_negative_even___ true 00:00:58 v #607 > > 00:00:58 v #608 > > ── [ 7.62s - return value ] ──────────────────────────────────────────────────── 00:00:58 v #609 > > │ zeta_ / s: (-2.0, 0.0) / count: 0 00:00:58 v #610 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 00:00:58 v #611 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:00:58 v #612 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:58 v #613 > > arg: None 00:00:58 v #614 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 00:00:58 v #615 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:00:58 v #616 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:00:58 v #617 > > arg: None 00:00:58 v #618 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 00:00:58 v #619 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 00:00:58 v #620 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:00:58 v #621 > > f_back.f_code.co_filename: / arg: None 00:00:58 v #622 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 00:00:58 v #623 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 00:00:58 v #624 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:00:58 v #625 > > f_back.f_code.co_filename: / arg: None 00:00:58 v #626 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), 00:00:58 v #627 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 00:00:58 v #628 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:00:58 v #629 > > f_back.f_code.co_filename: / arg: None 00:00:58 v #630 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), 00:00:58 v #631 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:00:58 v #632 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:00:58 v #633 > > /mpmath/functions/zeta.py / arg: None 00:00:58 v #634 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), 00:00:58 v #635 > > kwargs={}, name='zeta' /...lename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:58 v #636 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:58 v #637 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:58 v #638 > > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:58 v #639 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:58 v #640 > > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:58 v #641 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:58 v #642 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:00:58 v #643 > > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: 00:00:58 v #644 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:58 v #645 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 00:00:58 v #646 > > mpc(real='8.1591528324789768e+47', imag='0.0') 00:00:58 v #647 > > │ return(gamma_) / f_code.co_name: f / f_locals: 00:00:58 v #648 > > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' 00:00:58 v #649 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:00:58 v #650 > > 25 / f_back.f_code.co_filename: / arg: mpc(real='8.1591528324789768e+47', 00:00:58 v #651 > > imag='0.0') 00:00:58 v #652 > > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149 00:00:58 v #653 > > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: 00:00:58 v #654 > > Ok(Complex { re: 8.159152832478977e47, im: 0.0 }) 00:00:58 v #655 > > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 } 00:00:58 v #656 > > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: 00:00:58 v #657 > > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, im: NaN } 00:00:58 v #658 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:00:58 v #659 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:00:58 v #660 > > │ 00:00:58 v #661 > > 00:00:58 v #662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:58 v #663 > > │ ## test_non_trivial_zero___ 00:00:58 v #664 > > 00:00:58 v #665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:58 v #666 > > inl test_non_trivial_zero___ log = run_test log fun zeta, gamma => 00:00:58 v #667 > > ;[[ 00:00:58 v #668 > > .^(0.5, 14.134725) 00:00:58 v #669 > > .^(0.5, 21.022040) 00:00:58 v #670 > > .^(0.5, 25.010857) 00:00:58 v #671 > > .^(0.5, 30.424876) 00:00:58 v #672 > > .^(0.5, 32.935062) 00:00:58 v #673 > > .^(0.5, 37.586178) 00:00:58 v #674 > > ]] 00:00:58 v #675 > > |> fun x => a x : _ i32 _ 00:00:58 v #676 > > |> am.iter fun x => 00:00:58 v #677 > > inl result = zeta x 00:00:58 v #678 > > result |> re |> abs |> _assert_lt 0.0001 00:00:58 v #679 > > result |> im |> abs |> _assert_lt 0.0001 00:00:59 v #680 > > 00:00:59 v #681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:59 v #682 > > //// test 00:00:59 v #683 > > ///! rust -d num-complex pyo3 00:00:59 v #684 > > 00:00:59 v #685 > > test_non_trivial_zero___ true 00:01:06 v #686 > > 00:01:06 v #687 > > ── [ 7.65s - return value ] ──────────────────────────────────────────────────── 00:01:06 v #688 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 00:01:06 v #689 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: 00:01:06 v #690 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 00:01:06 v #691 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:06 v #692 > > f_back.f_code.co_filename: / arg: None 00:01:06 v #693 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:06 v #694 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 00:01:06 v #695 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:06 v #696 > > f_back.f_code.co_filename: / arg: None 00:01:06 v #697 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:06 v #698 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:06 v #699 > > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:06 v #700 > > f_back.f_code.co_filename: / arg: None 00:01:06 v #701 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:06 v #702 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:06 v #703 > > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:06 v #704 > > f_back.f_code.co_filename: / arg: None 00:01:06 v #705 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:06 v #706 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:06 v #707 > > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:06 v #708 > > f_back.f_code.co_filename: / arg: None 00:01:06 v #709 > > │ call(zeta_) / f_code.co_name: f / f_locals: 00:01:06 v #710 > > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:06 v #711 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:06 v #712 > > /mpmath/functions/zeta.py / arg: None 00:01:06 v #713 > > │ line(zeta_) / f_code... arg: None 00:01:06 v #714 > > │ line(gamma_) / f_code.co_name: complex_stirling_series 00:01:06 v #715 > > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, 00:01:06 v #716 > > _m=3416353708500640443578529333, tre=855591523614410863719, 00:01:06 v #717 > > tim=64316830603724894628746, ure=-1710577520534459139249, 00:01:06 v #718 > > uim=45518868236127668552, sre=1013002518538853602038572, 00:01:06 v #719 > > sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename: 00:01:06 v #720 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: 00:01:06 v #721 > > /mpmath/libmp/gammazeta.py / arg: None 00:01:06 v #722 > > │ line(gamma_) / f_code.co_name: complex_stirling_series 00:01:06 v #723 > > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, 00:01:06 v #724 > > _m=3416353708500640443578529333, tre=-1816151534455075068, 00:01:06 v #725 > > tim=-45486653225747820096, ure=-1710577520534459139249, 00:01:06 v #726 > > uim=45518868236127668552, sre=1013002518538853602038572, 00:01:06 v #727 > > sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename: 00:01:06 v #728 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: 00:01:06 v #729 > > /mpmath/libmp/gammazeta.py / arg: None 00:01:06 v #730 > > │ gamma_ / result: (-1.32798420042152e-26 + 00:01:06 v #731 > > 5.5751975252688e-26j) / count: 309 00:01:06 v #732 > > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: 00:01:06 v #733 > > Ok(Complex { re: -1.3279842004215153e-26, im: 5.575197525268802e-26 }) 00:01:06 v #734 > > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: 00:01:06 v #735 > > Ok(Complex { re: -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: 00:01:06 v #736 > > Complex { re: -0.0, im: 0.0 } 00:01:06 v #737 > > │ __assert_lt / actual: 8.910186507947958e-8 / expected: 0.0001 00:01:06 v #738 > > │ __assert_lt / actual: 2.943780446402868e-7 / expected: 0.0001 00:01:06 v #739 > > │ 00:01:06 v #740 > > 00:01:06 v #741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:06 v #742 > > │ ## test_real_part_greater_than_one___ 00:01:06 v #743 > > 00:01:06 v #744 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:06 v #745 > > inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma => 00:01:06 v #746 > > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] 00:01:06 v #747 > > (a points : _ i32 _) 00:01:06 v #748 > > |> am.iter fun point => 00:01:06 v #749 > > inl s = .^(point, 0) 00:01:06 v #750 > > inl result = zeta s 00:01:06 v #751 > > result |> re |> _assert_gt 0 00:01:06 v #752 > > result |> im |> _assert_eq 0 00:01:06 v #753 > > 00:01:06 v #754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:06 v #755 > > //// test 00:01:06 v #756 > > ///! rust -d num-complex pyo3 00:01:06 v #757 > > 00:01:06 v #758 > > test_real_part_greater_than_one___ true 00:01:14 v #759 > > 00:01:14 v #760 > > ── [ 7.52s - return value ] ──────────────────────────────────────────────────── 00:01:14 v #761 > > │ zeta_ / s: (2.0, 0.0) / count: 0 00:01:14 v #762 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:01:14 v #763 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:01:14 v #764 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:14 v #765 > > arg: None 00:01:14 v #766 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:01:14 v #767 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:01:14 v #768 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:14 v #769 > > arg: None 00:01:14 v #770 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:01:14 v #771 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:01:14 v #772 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:14 v #773 > > arg: None 00:01:14 v #774 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:01:14 v #775 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:01:14 v #776 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:14 v #777 > > arg: None 00:01:14 v #778 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:01:14 v #779 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:01:14 v #780 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:14 v #781 > > arg: None 00:01:14 v #782 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:01:14 v #783 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:14 v #784 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:14 v #785 > > /mpmath/functions/zeta.py / arg: None 00:01:14 v #786 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:01:14 v #787 > > kwargs={}, name='zeta' / f_linen...f_code.co_filename: /mpmath/ctx_mp_python.py 00:01:14 v #788 > > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py 00:01:14 v #789 > > arg: None 00:01:14 v #790 > > │ line(zeta_) / f_code.co_name: make_mpc / f_locals: 00:01:14 v #791 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:01:14 v #792 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:01:14 v #793 > > │ return(zeta_) / f_code.co_name: make_mpc / f_locals: 00:01:14 v #794 > > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:01:14 v #795 > > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: 00:01:14 v #796 > > mpc(real='1.0000000000000009', imag='0.0') 00:01:14 v #797 > > │ return(zeta_) / f_code.co_name: f / f_locals: 00:01:14 v #798 > > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' 00:01:14 v #799 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:01:14 v #800 > > 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg: 00:01:14 v #801 > > mpc(real='1.0000000000000009', imag='0.0') 00:01:14 v #802 > > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), 00:01:14 v #803 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 00:01:14 v #804 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:14 v #805 > > f_back.f_code.co_filename: / arg: mpc(real='1.0000000000000009', imag='0.0') 00:01:14 v #806 > > │ zeta_ / result: (1.0 + 0.0j) / count: 181 00:01:14 v #807 > > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 } 00:01:14 v #808 > > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: 00:01:14 v #809 > > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN 00:01:14 v #810 > > } 00:01:14 v #811 > > │ __assert_gt / actual: 1.0000000000000009 / expected: 0.0 00:01:14 v #812 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:01:14 v #813 > > │ 00:01:14 v #814 > > 00:01:14 v #815 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:14 v #816 > > │ ## test_zeta_at_1___ 00:01:14 v #817 > > 00:01:14 v #818 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:14 v #819 > > inl test_zeta_at_1___ log = run_test log fun zeta, gamma => 00:01:14 v #820 > > inl s = .^(1, 0) 00:01:14 v #821 > > inl result = zeta s 00:01:14 v #822 > > result |> re |> _assert_eq limit.max 00:01:14 v #823 > > result |> im |> _assert_eq 0 00:01:14 v #824 > > 00:01:14 v #825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:14 v #826 > > //// test 00:01:14 v #827 > > ///! rust -d num-complex pyo3 00:01:14 v #828 > > 00:01:14 v #829 > > test_zeta_at_1___ true 00:01:22 v #830 > > 00:01:22 v #831 > > ── [ 7.54s - return value ] ──────────────────────────────────────────────────── 00:01:22 v #832 > > │ zeta_ / s: (1.0, 0.0) / count: 0 00:01:22 v #833 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, 00:01:22 v #834 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:01:22 v #835 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:22 v #836 > > arg: None 00:01:22 v #837 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, 00:01:22 v #838 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:01:22 v #839 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:22 v #840 > > arg: None 00:01:22 v #841 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, 00:01:22 v #842 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:01:22 v #843 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:22 v #844 > > arg: None 00:01:22 v #845 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, 00:01:22 v #846 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:01:22 v #847 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:22 v #848 > > arg: None 00:01:22 v #849 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, 00:01:22 v #850 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:01:22 v #851 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:22 v #852 > > arg: None 00:01:22 v #853 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), 00:01:22 v #854 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:22 v #855 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:22 v #856 > > /mpmath/functions/zeta.py / arg: None 00:01:22 v #857 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), 00:01:22 v #858 > > kwargs={}, name='zeta' / f_linen...back object at 0x<?>>) 00:01:22 v #859 > > │ return(gamma_) / f_code.co_name: f / f_locals: 00:01:22 v #860 > > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' 00:01:22 v #861 > > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: 00:01:22 v #862 > > 25 / f_back.f_code.co_filename: / arg: None 00:01:22 v #863 > > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, 00:01:22 v #864 > > s=0j / f_lineno: 25 / f_code.co_filename: / f_back.f_lineno: 00:01:22 v #865 > > f_back.f_code.co_filename: / arg: (<class 'ValueError'>, ValueError('gamma 00:01:22 v #866 > > function pole'), <traceback object at 0x<?>>) 00:01:22 v #867 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j 00:01:22 v #868 > > / f_lineno: 29 / f_code.co_filename: / f_back.f_lineno: 00:01:22 v #869 > > f_back.f_code.co_filename: / arg: None 00:01:22 v #870 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j, 00:01:22 v #871 > > e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename: 00:01:22 v #872 > > f_back.f_lineno: / f_back.f_code.co_filename: / arg: None 00:01:22 v #873 > > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j 00:01:22 v #874 > > / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: 00:01:22 v #875 > > f_back.f_code.co_filename: / arg: None 00:01:22 v #876 > > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, 00:01:22 v #877 > > s=0j / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: 00:01:22 v #878 > > f_back.f_code.co_filename: / arg: (0.0, 0.0) 00:01:22 v #879 > > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: 00:01:22 v #880 > > Ok(Complex { re: 0.0, im: 0.0 }) 00:01:22 v #881 > > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex 00:01:22 v #882 > > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 } 00:01:22 v #883 > > │ __assert_eq / actual: inf / expected: inf 00:01:22 v #884 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:01:22 v #885 > > │ 00:01:22 v #886 > > 00:01:22 v #887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 v #888 > > │ ## test_symmetry_across_real_axis___ 00:01:22 v #889 > > 00:01:22 v #890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #891 > > inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma => 00:01:22 v #892 > > inl s = .^(2, 10) 00:01:22 v #893 > > inl result_positive_im = zeta s 00:01:22 v #894 > > inl result_negative_im = zeta .^(re s, -(im s)) 00:01:22 v #895 > > inl conj = result_negative_im |> conj 00:01:22 v #896 > > result_positive_im |> re |> _assert_eq (conj |> re) 00:01:22 v #897 > > result_positive_im |> im |> _assert_eq (conj |> im) 00:01:22 v #898 > > 00:01:22 v #899 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #900 > > //// test 00:01:22 v #901 > > ///! rust -d num-complex pyo3 00:01:22 v #902 > > 00:01:22 v #903 > > test_symmetry_across_real_axis___ true 00:01:29 v #904 > > 00:01:29 v #905 > > ── [ 7.54s - return value ] ──────────────────────────────────────────────────── 00:01:29 v #906 > > │ zeta_ / s: (2.0, 10.0) / count: 0 00:01:29 v #907 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 00:01:29 v #908 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:01:29 v #909 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:29 v #910 > > arg: None 00:01:29 v #911 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 00:01:29 v #912 > > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:01:29 v #913 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:29 v #914 > > arg: None 00:01:29 v #915 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 00:01:29 v #916 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 00:01:29 v #917 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:29 v #918 > > f_back.f_code.co_filename: / arg: None 00:01:29 v #919 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 00:01:29 v #920 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 00:01:29 v #921 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:29 v #922 > > f_back.f_code.co_filename: / arg: None 00:01:29 v #923 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), 00:01:29 v #924 > > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 00:01:29 v #925 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:29 v #926 > > f_back.f_code.co_filename: / arg: None 00:01:29 v #927 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), 00:01:29 v #928 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:29 v #929 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:29 v #930 > > /mpmath/functions/zeta.py / arg: None 00:01:29 v #931 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), 00:01:29 v #932 > > kwargs={}, name='zeta' /.../ f_back.f_code.co_filename: /mpmath/libmp/libmpf.py 00:01:29 v #933 > > / arg: None 00:01:29 v #934 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:01:29 v #935 > > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:01:29 v #936 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:01:29 v #937 > > None 00:01:29 v #938 > > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:01:29 v #939 > > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:01:29 v #940 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:01:29 v #941 > > None 00:01:29 v #942 > > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: 00:01:29 v #943 > > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py 00:01:29 v #944 > > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: 00:01:29 v #945 > > 5 00:01:29 v #946 > > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, 00:01:29 v #947 > > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, 00:01:29 v #948 > > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 00:01:29 v #949 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401 00:01:29 v #950 > > f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None 00:01:29 v #951 > > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) 00:01:29 v #952 > > count: 1174 00:01:29 v #953 > > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 } 00:01:29 v #954 > > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: 00:01:29 v #955 > > Ok(Complex { re: 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { 00:01:29 v #956 > > re: NaN, im: NaN } 00:01:29 v #957 > > │ __assert_eq / actual: 1.1979825006741847 / expected: 00:01:29 v #958 > > 1.1979825006741847 00:01:29 v #959 > > │ __assert_eq / actual: -0.07917049172052575 / expected: 00:01:29 v #960 > > -0.07917049172052575 00:01:29 v #961 > > │ 00:01:29 v #962 > > 00:01:29 v #963 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 v #964 > > │ ## test_behavior_near_origin___ 00:01:29 v #965 > > 00:01:29 v #966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #967 > > inl test_behavior_near_origin___ log = run_test log fun zeta, gamma => 00:01:29 v #968 > > inl s = .^(0.01, 0.01) 00:01:29 v #969 > > inl result = zeta s 00:01:29 v #970 > > result |> re |> _assert_lt limit.max 00:01:29 v #971 > > result |> im |> _assert_lt limit.max 00:01:29 v #972 > > 00:01:29 v #973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #974 > > //// test 00:01:29 v #975 > > ///! rust -d num-complex pyo3 00:01:29 v #976 > > 00:01:29 v #977 > > test_behavior_near_origin___ true 00:01:37 v #978 > > 00:01:37 v #979 > > ── [ 7.45s - return value ] ──────────────────────────────────────────────────── 00:01:37 v #980 > > │ zeta_ / s: (0.01, 0.01) / count: 0 00:01:37 v #981 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: 00:01:37 v #982 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 00:01:37 v #983 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:37 v #984 > > f_back.f_code.co_filename: / arg: None 00:01:37 v #985 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:37 v #986 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 00:01:37 v #987 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:37 v #988 > > f_back.f_code.co_filename: / arg: None 00:01:37 v #989 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:37 v #990 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 00:01:37 v #991 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:37 v #992 > > f_back.f_code.co_filename: / arg: None 00:01:37 v #993 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:37 v #994 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 00:01:37 v #995 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:37 v #996 > > f_back.f_code.co_filename: / arg: None 00:01:37 v #997 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:37 v #998 > > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 00:01:37 v #999 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:37 v #1000 > > f_back.f_code.co_filename: / arg: None 00:01:37 v #1001 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), 00:01:37 v #1002 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:37 v #1003 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:37 v #1004 > > /mpmath/functions/zeta.py / arg: None 00:01:37 v #1005 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0...py 00:01:37 v #1006 > > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py 00:01:37 v #1007 > > arg: None 00:01:37 v #1008 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 00:01:37 v #1009 > > 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, rnd='n', 00:01:37 v #1010 > > type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, -59, 53), 00:01:37 v #1011 > > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, 00:01:37 v #1012 > > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, an=0, 00:01:37 v #1013 > > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, 4458563631096791, 00:01:37 v #1014 > > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, balance_prec=0, 00:01:37 v #1015 > > n_for_stirling=14, need_reduction=True, afix=132131814190692672995328, 00:01:37 v #1016 > > bfix=-94447329657392906240, r=0, zprered=((0, 4458563631096791, -52, 52), (1, 00:01:37 v #1017 > > 5764607523034235, -59, 53)), d=14, rre=56942610883563778729574216337150, 00:01:37 v #1018 > > one=9444732965739290427392, rim=-1820461636508155576115177658065, k=12 00:01:37 v #1019 > > f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:37 v #1020 > > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py 00:01:37 v #1021 > > arg: None 00:01:37 v #1022 > > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) 00:01:37 v #1023 > > count: 383 00:01:37 v #1024 > > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: 00:01:37 v #1025 > > Ok(Complex { re: 1.005770302029023, im: 0.005971782405410201 }) 00:01:37 v #1026 > > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: 00:01:37 v #1027 > > Ok(Complex { re: -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { 00:01:37 v #1028 > > re: 0.0, im: 0.0 } 00:01:37 v #1029 > > │ __assert_lt / actual: -0.5091873433665667 / expected: inf 00:01:37 v #1030 > > │ __assert_lt / actual: -0.00939202213994577 / expected: inf 00:01:37 v #1031 > > │ 00:01:37 v #1032 > > 00:01:37 v #1033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:37 v #1034 > > │ ## test_imaginary_axis 00:01:37 v #1035 > > 00:01:37 v #1036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:37 v #1037 > > inl test_imaginary_axis log = run_test log fun zeta, gamma => 00:01:37 v #1038 > > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) 00:01:37 v #1039 > > |> listm.iter fun s => 00:01:37 v #1040 > > inl s = .^(0, s) 00:01:37 v #1041 > > inl result = zeta s 00:01:37 v #1042 > > result |> re |> _assert_ne 0 00:01:37 v #1043 > > result |> im |> _assert_ne 0 00:01:37 v #1044 > > 00:01:37 v #1045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:37 v #1046 > > //// test 00:01:37 v #1047 > > ///! rust -d num-complex pyo3 00:01:37 v #1048 > > 00:01:37 v #1049 > > test_imaginary_axis true 00:01:45 v #1050 > > 00:01:45 v #1051 > > ── [ 7.83s - return value ] ──────────────────────────────────────────────────── 00:01:45 v #1052 > > │ zeta_ / s: (0.0, 10.0) / count: 0 00:01:45 v #1053 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 00:01:45 v #1054 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:01:45 v #1055 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:45 v #1056 > > arg: None 00:01:45 v #1057 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 00:01:45 v #1058 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:01:45 v #1059 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:45 v #1060 > > arg: None 00:01:45 v #1061 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 00:01:45 v #1062 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:01:45 v #1063 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:45 v #1064 > > arg: None 00:01:45 v #1065 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 00:01:45 v #1066 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:01:45 v #1067 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:45 v #1068 > > arg: None 00:01:45 v #1069 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, 00:01:45 v #1070 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:01:45 v #1071 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:01:45 v #1072 > > arg: None 00:01:45 v #1073 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, 00:01:45 v #1074 > > name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py 00:01:45 v #1075 > > f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py 00:01:45 v #1076 > > arg: None 00:01:45 v #1077 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, 00:01:45 v #1078 > > name='zeta' / f_lineno: 990 / f_code.co_f...g: None 00:01:45 v #1079 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 00:01:45 v #1080 > > 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: /mpmath/libmp/libmpf.py 00:01:45 v #1081 > > f_back.f_lineno: 2031 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:45 v #1082 > > arg: None 00:01:45 v #1083 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 00:01:45 v #1084 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename: 00:01:45 v #1085 > > /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: 00:01:45 v #1086 > > /mpmath/libmp/gammazeta.py / arg: None 00:01:45 v #1087 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 00:01:45 v #1088 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 00:01:45 v #1089 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 00:01:45 v #1090 > > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None 00:01:45 v #1091 > > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, 00:01:45 v #1092 > > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 00:01:45 v #1093 > > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 00:01:45 v #1094 > > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None 00:01:45 v #1095 > > │ gamma_ / result: (-1.51425318049776e-67 + 00:01:45 v #1096 > > 2.79082155561748e-69j) / count: 289 00:01:45 v #1097 > > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: 00:01:45 v #1098 > > Ok(Complex { re: -1.514253180497756e-67, im: 2.7908215556174775e-69 }) 00:01:45 v #1099 > > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: 00:01:45 v #1100 > > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: 00:01:45 v #1101 > > 0.0, im: 0.0 } 00:01:45 v #1102 > > │ __assert_ne / actual: 6.51721042625301 / expected: 0.0 00:01:45 v #1103 > > │ __assert_ne / actual: 0.18128842533791736 / expected: 0.0 00:01:45 v #1104 > > │ 00:01:45 v #1105 > > 00:01:45 v #1106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:45 v #1107 > > │ ## test_critical_strip 00:01:45 v #1108 > > 00:01:45 v #1109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:45 v #1110 > > inl test_critical_strip log = run_test log fun zeta, gamma => 00:01:45 v #1111 > > (join [[ 00:01:45 v #1112 > > .^(0.5, 14.134725) 00:01:45 v #1113 > > .^(0.75, 20.5) 00:01:45 v #1114 > > .^(1.25, 30.1) 00:01:45 v #1115 > > .^(0.25, 40.0) 00:01:45 v #1116 > > .^(1.0, 50.0) 00:01:45 v #1117 > > ]]) 00:01:45 v #1118 > > |> listm.iter fun s => 00:01:45 v #1119 > > inl result = zeta s 00:01:45 v #1120 > > result |> re |> _assert_ne 0 00:01:45 v #1121 > > result |> im |> _assert_ne 0 00:01:45 v #1122 > > 00:01:45 v #1123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:45 v #1124 > > //// test 00:01:45 v #1125 > > ///! rust -d num-complex pyo3 00:01:45 v #1126 > > 00:01:45 v #1127 > > test_critical_strip true 00:01:53 v #1128 > > 00:01:53 v #1129 > > ── [ 7.62s - return value ] ──────────────────────────────────────────────────── 00:01:53 v #1130 > > │ zeta_ / s: (0.5, 14.134725) / count: 0 00:01:53 v #1131 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: 00:01:53 v #1132 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 00:01:53 v #1133 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:53 v #1134 > > f_back.f_code.co_filename: / arg: None 00:01:53 v #1135 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:53 v #1136 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 00:01:53 v #1137 > > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:53 v #1138 > > f_back.f_code.co_filename: / arg: None 00:01:53 v #1139 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:53 v #1140 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:53 v #1141 > > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:53 v #1142 > > f_back.f_code.co_filename: / arg: None 00:01:53 v #1143 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:53 v #1144 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:53 v #1145 > > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:53 v #1146 > > f_back.f_code.co_filename: / arg: None 00:01:53 v #1147 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: 00:01:53 v #1148 > > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 00:01:53 v #1149 > > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 00:01:53 v #1150 > > f_back.f_code.co_filename: / arg: None 00:01:53 v #1151 > > │ call(zeta_) / f_code.co_name: f / f_locals: 00:01:53 v #1152 > > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:01:53 v #1153 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:01:53 v #1154 > > /mpmath/functions/zeta.py / arg: None 00:01:53 v #1155 > > │ line(zeta_) / f_code...210, sim=241793223535862290161314995 00:01:53 v #1156 > > f_lineno: 1648 / f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1157 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1158 > > arg: None 00:01:53 v #1159 > > │ line(gamma_) / f_code.co_name: complex_stirling_series 00:01:53 v #1160 > > f_locals: x=0, y=-241785163922925834941235200, prec=82, 00:01:53 v #1161 > > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, 00:01:53 v #1162 > > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314995 00:01:53 v #1163 > > f_lineno: 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1164 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1165 > > arg: None 00:01:53 v #1166 > > │ line(gamma_) / f_code.co_name: complex_stirling_series 00:01:53 v #1167 > > f_locals: x=0, y=-241785163922925834941235200, prec=82, 00:01:53 v #1168 > > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, 00:01:53 v #1169 > > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314997 00:01:53 v #1170 > > f_lineno: 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1171 > > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py 00:01:53 v #1172 > > arg: None 00:01:53 v #1173 > > │ gamma_ / result: (2.63173210619768e-35 - 00:01:53 v #1174 > > 8.16464935465334e-36j) / count: 262 00:01:53 v #1175 > > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: 00:01:53 v #1176 > > Ok(Complex { re: 2.6317321061976804e-35, im: -8.164649354653339e-36 }) 00:01:53 v #1177 > > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: 00:01:53 v #1178 > > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { 00:01:53 v #1179 > > re: 0.0, im: 0.0 } 00:01:53 v #1180 > > │ __assert_ne / actual: 0.44103873082309397 / expected: 0.0 00:01:53 v #1181 > > │ __assert_ne / actual: 0.281582455029683 / expected: 0.0 00:01:53 v #1182 > > │ 00:01:53 v #1183 > > 00:01:53 v #1184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:53 v #1185 > > │ ## test_reflection_formula_for_specific_value 00:01:53 v #1186 > > 00:01:53 v #1187 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 v #1188 > > inl test_reflection_formula_for_specific_value log = run_test log fun zeta, 00:01:53 v #1189 > > gamma => 00:01:53 v #1190 > > (join [[ 00:01:53 v #1191 > > .^(3, 4) 00:01:53 v #1192 > > .^(2.5, -3.5) 00:01:53 v #1193 > > .^(1.5, 2.5) 00:01:53 v #1194 > > .^(0.5, 14.134725) 00:01:53 v #1195 > > ]]) 00:01:53 v #1196 > > |> listm.iter fun s => 00:01:53 v #1197 > > inl lhs = zeta s 00:01:53 v #1198 > > inl reflection_coefficient = 00:01:53 v #1199 > > (.^(2, 0) .** s) 00:01:53 v #1200 > > .* (.^(pi, 0) .** (s .- .^(1, 0))) 00:01:53 v #1201 > > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) 00:01:53 v #1202 > > .* gamma (.^(1, 0) .- s) 00:01:53 v #1203 > > 00:01:53 v #1204 > > inl one_minus_s = .^(1 - re s, -(im s)) 00:01:53 v #1205 > > inl rhs = reflection_coefficient .* zeta one_minus_s 00:01:53 v #1206 > > 00:01:53 v #1207 > > re lhs - re rhs |> abs |> _assert_lt 0.0001 00:01:53 v #1208 > > im lhs - im rhs |> abs |> _assert_lt 0.0001 00:01:53 v #1209 > > 00:01:53 v #1210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:53 v #1211 > > //// test 00:01:53 v #1212 > > ///! rust -d num-complex pyo3 00:01:53 v #1213 > > 00:01:53 v #1214 > > test_reflection_formula_for_specific_value true 00:02:01 v #1215 > > 00:02:01 v #1216 > > ── [ 7.90s - return value ] ──────────────────────────────────────────────────── 00:02:01 v #1217 > > │ zeta_ / s: (3.0, 4.0) / count: 0 00:02:01 v #1218 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, 00:02:01 v #1219 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:02:01 v #1220 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:01 v #1221 > > arg: None 00:02:01 v #1222 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, 00:02:01 v #1223 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:02:01 v #1224 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:01 v #1225 > > arg: None 00:02:01 v #1226 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, 00:02:01 v #1227 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:02:01 v #1228 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:01 v #1229 > > arg: None 00:02:01 v #1230 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, 00:02:01 v #1231 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:02:01 v #1232 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:01 v #1233 > > arg: None 00:02:01 v #1234 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, 00:02:01 v #1235 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:02:01 v #1236 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:01 v #1237 > > arg: None 00:02:01 v #1238 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), 00:02:01 v #1239 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:02:01 v #1240 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:02:01 v #1241 > > /mpmath/functions/zeta.py / arg: None 00:02:01 v #1242 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), 00:02:01 v #1243 > > kwargs={}, name='zeta' / f_linen...045 / f_code.co_filename: 00:02:01 v #1244 > > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / f_back.f_code.co_filename: 00:02:01 v #1245 > > /mpmath/ctx_mp_python.py / arg: None 00:02:01 v #1246 > > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, 00:02:01 v #1247 > > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, 00:02:01 v #1248 > > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, 00:02:01 v #1249 > > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, 00:02:01 v #1250 > > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), 00:02:01 v #1251 > > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15, 00:02:01 v #1252 > > need_reduction=True, afix=2115620184325601055735808, 00:02:01 v #1253 > > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0, 00:02:01 v #1254 > > 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845, 00:02:01 v #1255 > > one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / f_lineno: 00:02:01 v #1256 > > 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 00:02:01 v #1257 > > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None 00:02:01 v #1258 > > │ gamma_ / result: (-1.4455538437607e-10 - 00:02:01 v #1259 > > 5.52278876877407e-10j) / count: 318 00:02:01 v #1260 > > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: 00:02:01 v #1261 > > Ok(Complex { re: -1.4455538437606964e-10, im: -5.522788768774066e-10 }) 00:02:01 v #1262 > > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: 00:02:01 v #1263 > > Ok(Complex { re: 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: 00:02:01 v #1264 > > Complex { re: 0.0, im: 0.0 } 00:02:01 v #1265 > > │ __assert_lt / actual: 4.433688083284228e-22 / expected: 00:02:01 v #1266 > > 0.0001 00:02:01 v #1267 > > │ __assert_lt / actual: 1.3234889800848443e-22 / expected: 00:02:01 v #1268 > > 0.0001 00:02:01 v #1269 > > │ 00:02:01 v #1270 > > 00:02:01 v #1271 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:01 v #1272 > > │ ## test_euler_product_formula 00:02:01 v #1273 > > 00:02:01 v #1274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:01 v #1275 > > inl test_euler_product_formula log = run_test log fun zeta, gamma => 00:02:01 v #1276 > > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] 00:02:01 v #1277 > > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; 00:02:01 v #1278 > > 53; 59; 61; 67; 71 ]] 00:02:01 v #1279 > > s_values 00:02:01 v #1280 > > |> listm.iter fun s_re => 00:02:01 v #1281 > > inl s = .^(s_re, 0) 00:02:01 v #1282 > > inl product = 00:02:01 v #1283 > > (1, primes) 00:02:01 v #1284 > > ||> listm.fold fun acc x => 00:02:01 v #1285 > > acc * 1 / (1 - x ** -s_re) 00:02:01 v #1286 > > 00:02:01 v #1287 > > inl result = zeta s 00:02:01 v #1288 > > re result - product |> abs |> _assert_lt 0.01 00:02:01 v #1289 > > result |> im |> _assert_lt 0.01 00:02:01 v #1290 > > 00:02:01 v #1291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:01 v #1292 > > //// test 00:02:01 v #1293 > > ///! rust -d num-complex pyo3 00:02:01 v #1294 > > 00:02:01 v #1295 > > test_euler_product_formula true 00:02:09 v #1296 > > 00:02:09 v #1297 > > ── [ 7.74s - return value ] ──────────────────────────────────────────────────── 00:02:09 v #1298 > > │ zeta_ / s: (2.0, 0.0) / count: 0 00:02:09 v #1299 > > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:02:09 v #1300 > > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: 00:02:09 v #1301 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:09 v #1302 > > arg: None 00:02:09 v #1303 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:02:09 v #1304 > > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: 00:02:09 v #1305 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:09 v #1306 > > arg: None 00:02:09 v #1307 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:02:09 v #1308 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: 00:02:09 v #1309 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:09 v #1310 > > arg: None 00:02:09 v #1311 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:02:09 v #1312 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: 00:02:09 v #1313 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:09 v #1314 > > arg: None 00:02:09 v #1315 > > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, 00:02:09 v #1316 > > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: 00:02:09 v #1317 > > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: 00:02:09 v #1318 > > arg: None 00:02:09 v #1319 > > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:02:09 v #1320 > > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: 00:02:09 v #1321 > > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: 00:02:09 v #1322 > > /mpmath/functions/zeta.py / arg: None 00:02:09 v #1323 > > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), 00:02:09 v #1324 > > kwargs={}, name='zeta' / f_linen...k.f_lineno: 985 / f_back.f_code.co_filename: 00:02:09 v #1325 > > /mpmath/libmp/gammazeta.py / arg: None 00:02:09 v #1326 > > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, 00:02:09 v #1327 > > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067, 00:02:09 v #1328 > > 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659, 00:02:09 v #1329 > > 5764846406968067, 78615943485956867, 851604426176701187, 7470527451121689347, 00:02:09 v #1330 > > 53898915046387983107, 323897845985013506819, 1638178356374090130179, 00:02:09 v #1331 > > 7034281785235908174595, 25833609859980306522883, 81661917475887913739011, 00:02:09 v #1332 > > 223448095548034217779971, 532029677981012660429571, 1108048631855905753375491, 00:02:09 v #1333 > > 2029946562680066824315651, 3292927237466655352791811, 4769455369342763680768771, 00:02:09 v #1334 > > 6235511670496346417767171, 7463408621503347142796035, 8322751284048216428487427, 00:02:09 v #1335 > > 8818779962777819524211459, 9050689474911140452082435, 9136270117622166323831555, 00:02:09 v #1336 > > 9160252037839493347779331, 9165045885455648617505539, 9165654628010081032708867, 00:02:09 v #1337 > > 9165691521498228451812099], t=-84153986440240940095109733900764881301998910956, 00:02:09 v #1338 > > k=26 / f_lineno: 954 / f_code.co_filename: /mpmath/libmp/gammazeta.py 00:02:09 v #1339 > > f_back.f_lineno: 985 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py 00:02:09 v #1340 > > arg: None 00:02:09 v #1341 > > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228 00:02:09 v #1342 > > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 } 00:02:09 v #1343 > > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex 00:02:09 v #1344 > > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN } 00:02:09 v #1345 > > │ __assert_lt / actual: 2.0033654735129858e-9 / expected: 0.01 00:02:09 v #1346 > > │ __assert_lt / actual: 0.0 / expected: 0.01 00:02:09 v #1347 > > │ 00:02:09 v #1348 > > 00:02:09 v #1349 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:09 v #1350 > > │ ## graph 00:02:09 v #1351 > > 00:02:09 v #1352 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:02:09 v #1353 > > │ <div class="mermaidMarkdownContainer" 00:02:09 v #1354 > > style="background-color:white"> 00:02:09 v #1355 > > │ <link rel="stylesheet" 00:02:09 v #1356 > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" 00:02:09 v #1357 > > > 00:02:09 v #1358 > > │ <div id="fc7a6ee589824e26ab5addd397b0f9fa"></div> 00:02:09 v #1359 > > │ <script type="module"> 00:02:09 v #1360 > > │ 00:02:09 v #1361 > > │ import mermaid from 00:02:09 v #1362 > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; 00:02:09 v #1363 > > │ let renderTarget = 00:02:09 v #1364 > > document.getElementById('fc7a6ee589824e26ab5addd397b0f9fa'); 00:02:09 v #1365 > > │ try { 00:02:09 v #1366 > > │ const {svg, bindFunctions} = await 00:02:09 v #1367 > > mermaid.mermaidAPI.render( 00:02:09 v #1368 > > │ 00:02:09 v #1369 > > 'mermaid_fc7a6ee589824e26ab5addd397b0f9fa', 00:02:09 v #1370 > > │ `graph TD 00:02:09 v #1371 > > │ zeta("zeta()") --> convert 00:02:09 v #1372 > > │ zeta --> f["f()"] 00:02:09 v #1373 > > │ f --> mpc_f["mpc_zeta()"] 00:02:09 v #1374 > > │ f --> mpf_f["mpf_zeta()"] 00:02:09 v #1375 > > │ convert --> from_float 00:02:09 v #1376 > > │ from_float --> from_man_exp 00:02:09 v #1377 > > │ from_man_exp --> python_bitcount 00:02:09 v #1378 > > │ python_bitcount --> _normalize 00:02:09 v #1379 > > │ _normalize --> make_mpc 00:02:09 v #1380 > > │ make_mpc --> mpc_zeta["mpc_zeta()"] 00:02:09 v #1381 > > │ mpc_zeta --> mpf_zeta["mpf_zeta()"] 00:02:09 v #1382 > > │ mpf_zeta --> to_int 00:02:09 v #1383 > > │ to_int --> mpf_zeta_int["mpf_zeta_int()"] 00:02:09 v #1384 > > │ mpf_zeta_int --> borwein_coefficients 00:02:09 v #1385 > > │ borwein_coefficients --> 00:02:09 v #1386 > > from_man_exp_2("from_man_exp()") 00:02:09 v #1387 > > │ from_man_exp_2 --> 00:02:09 v #1388 > > python_bitcount_2("python_bitcount()") 00:02:09 v #1389 > > │ python_bitcount_2 --> _normalize_2("_normalize()") 00:02:09 v #1390 > > │ _normalize_2 --> make_mpc_2("make_mpc()") 00:02:09 v #1391 > > │ make_mpc_2 --> stop_trace 00:02:09 v #1392 > > │ mpf_zeta_int --> mpf_bernoulli 00:02:09 v #1393 > > │ mpf_bernoulli --> bernoulli_size 00:02:09 v #1394 > > │ bernoulli_size --> mpf_rdiv_int 00:02:09 v #1395 > > │ mpf_rdiv_int --> python_bitcount_3("python_bitcount()") 00:02:09 v #1396 > > │ python_bitcount_3 --> _normalize1 00:02:09 v #1397 > > │ _normalize1 --> from_man_exp_3("from_man_exp()") 00:02:09 v #1398 > > │ from_man_exp_3 --> _normalize_3("_normalize()") 00:02:09 v #1399 > > │ _normalize_3 --> mpf_sub 00:02:09 v #1400 > > │ mpf_sub --> mpf_add 00:02:09 v #1401 > > │ mpf_add --> mpf_neg 00:02:09 v #1402 > > │ mpf_neg --> _normalize1_2("_normalize1()") 00:02:09 v #1403 > > │ _normalize1_2 --> from_int 00:02:09 v #1404 > > │ from_int --> mpf_div 00:02:09 v #1405 > > │ mpf_div --> python_bitcount_4("python_bitcount()") 00:02:09 v #1406 > > │ python_bitcount_4 --> _normalize1_3("_normalize1()") 00:02:09 v #1407 > > │ _normalize1_3 --> make_mpc_3("make_mpc()") 00:02:09 v #1408 > > │ make_mpc_3 --> final_stop["stop_trace()"]`); 00:02:09 v #1409 > > │ renderTarget.innerHTML = svg; 00:02:09 v #1410 > > │ bindFunctions?.(renderTarget); 00:02:09 v #1411 > > │ } 00:02:09 v #1412 > > │ catch (error) { 00:02:09 v #1413 > > │ console.log(error); 00:02:09 v #1414 > > │ } 00:02:09 v #1415 > > │ </script> 00:02:09 v #1416 > > │ </div> 00:02:09 v #1417 > > │ 00:02:09 v #1418 > > 00:02:09 v #1419 > > ── mermaid ───────────────────────────────────────────────────────────────────── 00:02:09 v #1420 > > │ <div class="mermaidMarkdownContainer" 00:02:09 v #1421 > > style="background-color:white"> 00:02:09 v #1422 > > │ <link rel="stylesheet" 00:02:09 v #1423 > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" 00:02:09 v #1424 > > > 00:02:09 v #1425 > > │ <div id="9381d31dc8034265be4c90da5e30d7ee"></div> 00:02:09 v #1426 > > │ <script type="module"> 00:02:09 v #1427 > > │ 00:02:09 v #1428 > > │ import mermaid from 00:02:09 v #1429 > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; 00:02:09 v #1430 > > │ let renderTarget = 00:02:09 v #1431 > > document.getElementById('9381d31dc8034265be4c90da5e30d7ee'); 00:02:09 v #1432 > > │ try { 00:02:09 v #1433 > > │ const {svg, bindFunctions} = await 00:02:09 v #1434 > > mermaid.mermaidAPI.render( 00:02:09 v #1435 > > │ 00:02:09 v #1436 > > 'mermaid_9381d31dc8034265be4c90da5e30d7ee', 00:02:09 v #1437 > > │ `graph TD 00:02:09 v #1438 > > │ zeta_rust("zeta() - Rust") --> num_traits("num-traits") 00:02:09 v #1439 > > │ zeta_rust --> num_bigint("num-bigint") 00:02:09 v #1440 > > │ zeta_rust --> rust_decimal("rust_decimal for 00:02:09 v #1441 > > precision") 00:02:09 v #1442 > > │ zeta_rust --> error_handling("Rust Error Handling") 00:02:09 v #1443 > > │ 00:02:09 v #1444 > > │ num_traits --> num_traits_usage("Use for common 00:02:09 v #1445 > > traits") 00:02:09 v #1446 > > │ num_bigint --> bigint_operations("Arbitrary-precision 00:02:09 v #1447 > > arithmetic operations") 00:02:09 v #1448 > > │ rust_decimal --> decimal_operations("High-precision 00:02:09 v #1449 > > decimal operations") 00:02:09 v #1450 > > │ error_handling --> result_type("Use Result<T, E> for 00:02:09 v #1451 > > error handling") 00:02:09 v #1452 > > │ 00:02:09 v #1453 > > │ bigint_operations --> convert_rust("convert() - Rust") 00:02:09 v #1454 > > │ bigint_operations --> normalize_rust("_normalize() - 00:02:09 v #1455 > > Rust") 00:02:09 v #1456 > > │ 00:02:09 v #1457 > > │ convert_rust --> from_float_rust("from_float() - Rust") 00:02:09 v #1458 > > │ from_float_rust --> from_man_exp_rust("from_man_exp() - 00:02:09 v #1459 > > Rust") 00:02:09 v #1460 > > │ from_man_exp_rust --> bitcount_rust("bitcount() - 00:02:09 v #1461 > > Rust") 00:02:09 v #1462 > > │ bitcount_rust --> normalize_rust 00:02:09 v #1463 > > │ normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust") 00:02:09 v #1464 > > │ mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust") 00:02:09 v #1465 > > │ mpf_zeta_rust --> to_int_rust("to_int() - Rust") 00:02:09 v #1466 > > │ to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - 00:02:09 v #1467 > > Rust") 00:02:09 v #1468 > > │ 00:02:09 v #1469 > > │ mpf_zeta_int_rust --> 00:02:09 v #1470 > > borwein_coefficients_rust("borwein_coefficients() - Rust") 00:02:09 v #1471 > > │ borwein_coefficients_rust --> 00:02:09 v #1472 > > from_man_exp_rust_2("from_man_exp() - Rust") 00:02:09 v #1473 > > │ from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - 00:02:09 v #1474 > > Rust") 00:02:09 v #1475 > > │ bitcount_rust_2 --> normalize_rust_2("_normalize() - 00:02:09 v #1476 > > Rust") 00:02:09 v #1477 > > │ normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust") 00:02:09 v #1478 > > │ 00:02:09 v #1479 > > │ mpf_zeta_int_rust --> 00:02:09 v #1480 > > mpf_bernoulli_rust("mpf_bernoulli() - Rust") 00:02:09 v #1481 > > │ mpf_bernoulli_rust --> 00:02:09 v #1482 > > bernoulli_size_rust("bernoulli_size() - Rust") 00:02:09 v #1483 > > │ bernoulli_size_rust --> 00:02:09 v #1484 > > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") 00:02:09 v #1485 > > │ mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - 00:02:09 v #1486 > > Rust") 00:02:09 v #1487 > > │ bitcount_rust_3 --> normalize1_rust("_normalize1() - 00:02:09 v #1488 > > Rust") 00:02:09 v #1489 > > │ normalize1_rust --> from_man_exp_rust_3("from_man_exp() 00:02:09 v #1490 > > - Rust") 00:02:09 v #1491 > > │ from_man_exp_rust_3 --> normalize_rust_3("_normalize() 00:02:09 v #1492 > > - Rust") 00:02:09 v #1493 > > │ normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust") 00:02:09 v #1494 > > │ mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust") 00:02:09 v #1495 > > │ mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust") 00:02:09 v #1496 > > │ mpf_neg_rust --> normalize1_rust_2("_normalize1() - 00:02:09 v #1497 > > Rust") 00:02:09 v #1498 > > │ normalize1_rust_2 --> from_int_rust("from_int() - 00:02:09 v #1499 > > Rust") 00:02:09 v #1500 > > │ from_int_rust --> mpf_div_rust("mpf_div() - Rust") 00:02:09 v #1501 > > │ mpf_div_rust --> bitcount_rust_4("bitcount() - Rust") 00:02:09 v #1502 > > │ bitcount_rust_4 --> normalize1_rust_3("_normalize1() - 00:02:09 v #1503 > > Rust") 00:02:09 v #1504 > > │ 00:02:09 v #1505 > > │ style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px 00:02:09 v #1506 > > │ style num_traits fill:#bbf,stroke:#333,stroke-width:2px 00:02:09 v #1507 > > │ style num_bigint fill:#bbf,stroke:#333,stroke-width:2px 00:02:09 v #1508 > > │ style rust_decimal 00:02:09 v #1509 > > fill:#bbf,stroke:#333,stroke-width:2px 00:02:09 v #1510 > > │ style error_handling 00:02:09 v #1511 > > fill:#bbf,stroke:#333,stroke-width:2px 00:02:09 v #1512 > > │ style bigint_operations 00:02:09 v #1513 > > fill:#bfb,stroke:#333,stroke-width:2px 00:02:09 v #1514 > > │ style decimal_operations 00:02:09 v #1515 > > fill:#bfb,stroke:#333,stroke-width:2px 00:02:09 v #1516 > > │ style result_type 00:02:09 v #1517 > > fill:#bfb,stroke:#333,stroke-width:2px`); 00:02:09 v #1518 > > │ renderTarget.innerHTML = svg; 00:02:09 v #1519 > > │ bindFunctions?.(renderTarget); 00:02:09 v #1520 > > │ } 00:02:09 v #1521 > > │ catch (error) { 00:02:09 v #1522 > > │ console.log(error); 00:02:09 v #1523 > > │ } 00:02:09 v #1524 > > │ </script> 00:02:09 v #1525 > > │ </div> 00:02:09 v #1526 > > │ 00:02:09 v #1527 > > 00:02:09 v #1528 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:09 v #1529 > > │ ## tests 00:02:09 v #1530 > > 00:02:09 v #1531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:09 v #1532 > > inl tests () = 00:02:09 v #1533 > > testing.run_tests_log { 00:02:09 v #1534 > > test_zeta_at_known_values_ 00:02:09 v #1535 > > test_zeta_at_2_minus2 00:02:09 v #1536 > > test_trivial_zero_at_negative_even___ 00:02:09 v #1537 > > test_non_trivial_zero___ 00:02:09 v #1538 > > test_real_part_greater_than_one___ 00:02:09 v #1539 > > test_zeta_at_1___ 00:02:09 v #1540 > > test_symmetry_across_real_axis___ 00:02:09 v #1541 > > test_behavior_near_origin___ 00:02:09 v #1542 > > test_imaginary_axis 00:02:09 v #1543 > > test_critical_strip 00:02:09 v #1544 > > test_reflection_formula_for_specific_value 00:02:09 v #1545 > > test_euler_product_formula 00:02:09 v #1546 > > } 00:02:09 v #1547 > > 00:02:09 v #1548 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:09 v #1549 > > ///! _ 00:02:09 v #1550 > > 00:02:09 v #1551 > > inl main (_args : array_base string) = 00:02:09 v #1552 > > inl value = 1i32 00:02:09 v #1553 > > console.write_line ($'$"value: {!value}"' : string) 00:02:09 v #1554 > > 0i32 00:02:09 v #1555 > > 00:02:09 v #1556 > > inl main () = 00:02:09 v #1557 > > $'let tests () = !tests ()' : () 00:02:09 v #1558 > > $'let main args = !main args' : () 00:02:09 v #1559 > 00:02:08 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 78550 } 00:02:09 v #1560 > 00:02:08 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:10 v #1561 > 00:02:09 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html 00:02:10 v #1562 > 00:02:09 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:10 v #1563 > 00:02:09 v #7 ! validate(nb) 00:02:11 v #1564 > 00:02:09 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:11 v #1565 > 00:02:09 v #9 ! return _pygments_highlight( 00:02:12 v #1566 > 00:02:10 v #10 ! [NbConvertApp] Writing 7170941 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html 00:02:12 v #1567 > 00:02:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 889 } 00:02:12 v #1568 > 00:02:10 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 889 } 00:02:12 v #1569 > 00:02:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:12 v #1570 > 00:02:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:12 v #1571 > 00:02:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:12 v #1572 > 00:02:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 79498 } 00:02:12 d #1573 runtime.execute_with_options_async / { exit_code = 0; output_length = 85217 } 00:02:12 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 5 00:02:12 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: math.dib 00:00:00 d #2 parseDibCode / output: Spi / file: math.dib 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #32 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # math\nopen testing\nopen rust.rust_operators\nopen rust\n\n/// ## comp...gs = !main args\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result: 00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/math/math.spi"}} / result: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #12 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #13 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #16 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #17 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: math.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] #endif type num_complex_Complex<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>] #endif type std_ffi_CString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] #endif type pyo3_PyErr = class end #...rop.emitRustExpr () v56 let v57 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v57 let v58 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v58 let v59 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v59 let v60 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v60 let v61 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v61 () and closure3 () (v0 : (string [])) : int32 = let v1 : string = $"value: {1}" let v2 : unit = () let v3 : (unit -> unit) = closure2(v1) let v4 : unit = (fun () -> v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure3() let main args = v1 args () 00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: math.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::Python")>] #endif type pyo3_Python = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("num_complex::Complex<$0>")>] #endif type num_complex_Complex<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::CString")>] #endif type std_ffi_CString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("pyo3::PyErr")>] #endif type pyo3_PyErr = class end #...rop.emitRustExpr () v56 let v57 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v57 let v58 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v58 let v59 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v59 let v60 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v60 let v61 : string = "{ //" Fable.Core.RustInterop.emitRustExpr () v61 () and closure3 () (v0 : (string [])) : int32 = let v1 : string = $"value: {1}" let v2 : unit = () let v3 : (unit -> unit) = closure2(v1) let v4 : unit = (fun () -> v3 (); v2) () 0 let v0 : (unit -> unit) = closure0() let tests () = v0 () let v1 : ((string []) -> int32) = closure3() let main args = v1 args () 00:00:04 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: math / hash: / code.Length: 213882 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math" } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 326 ms). 00:00:13 v #11 > math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll 00:00:13 v #12 > math -> /home/runner/work/polyglot/polyglot/lib/math/dist 00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 662 } targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @nojaf Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/math/math.fsproj... Project and references (14 source files) parsed in 2634ms Started Fable compilation... Fable compilation finished in 9114ms ./lib/spiral/common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(548,0): (548,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(2419,0): (2419,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(6923,0): (6923,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(16504,0): (16504,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/math/math.fs(46,0): (48,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! rs Downloading crates ... Downloaded rand_distr v0.4.3 Downloaded rawpointer v0.2.1 Downloaded safe_arch v0.7.2 Downloaded simba v0.9.0 Downloaded wide v0.7.30 Downloaded float-cmp v0.10.0 Downloaded bytemuck v1.20.0 Downloaded approx v0.5.1 Downloaded statrs v0.18.0 Downloaded matrixmultiply v0.3.9 Downloaded nalgebra v0.33.2 Compiling libc v0.2.168 Compiling target-lexicon v0.12.16 Compiling libm v0.2.11 Compiling num-traits v0.2.19 Compiling syn v2.0.90 Compiling pyo3-build-config v0.23.3 Compiling cfg-if v1.0.0 Compiling getrandom v0.2.15 Compiling typenum v1.17.0 Compiling byteorder v1.5.0 Compiling memchr v2.7.4 Compiling rand_core v0.6.4 Compiling bytemuck v1.20.0 Compiling futures-core v0.3.31 Compiling futures-sink v0.3.31 Compiling paste v1.0.15 Compiling futures-channel v0.3.31 Compiling pyo3-macros-backend v0.23.3 Compiling pyo3-ffi v0.23.3 Compiling safe_arch v0.7.2 Compiling slab v0.4.9 Compiling hybrid-array v0.2.3 Compiling matrixmultiply v0.3.9 Compiling pin-utils v0.1.0 Compiling futures-task v0.3.31 Compiling futures-io v0.3.31 Compiling pin-project-lite v0.2.15 Compiling futures-util v0.3.31 Compiling wide v0.7.30 Compiling approx v0.5.1 Compiling num-complex v0.4.6 Compiling num-integer v0.1.46 Compiling num_cpus v1.16.0 Compiling memoffset v0.9.1 Compiling rawpointer v0.2.1 Compiling zerocopy-derive v0.7.35 Compiling futures-executor v0.3.31 Compiling simba v0.9.0 Compiling zerocopy v0.7.35 Compiling num-rational v0.4.2 Compiling ppv-lite86 v0.2.20 Compiling rand_chacha v0.3.1 Compiling block-buffer v0.11.0-rc.3 Compiling rand v0.8.5 Compiling crypto-common v0.2.0-rc.1 Compiling rand_distr v0.4.3 Compiling pyo3 v0.23.3 Compiling aho-corasick v1.1.3 Compiling iana-time-zone v0.1.61 Compiling const-oid v0.10.0-rc.3 Compiling regex-syntax v0.8.5 Compiling digest v0.11.0-pre.9 Compiling pyo3-macros v0.23.3 Compiling chrono v0.4.39 Compiling nalgebra v0.33.2 Compiling futures v0.3.31 Compiling regex-automata v0.4.9 Compiling uuid v1.11.0 Compiling unindent v0.2.3 Compiling indoc v2.0.5 Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup) Compiling cpufeatures v0.2.16 Compiling once_cell v1.20.2 Compiling futures-timer v3.0.3 Compiling regex v1.11.1 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling sha2 v0.11.0-pre.4 Compiling float-cmp v0.10.0 Compiling statrs v0.18.0 Compiling inline_colorization v0.1.6 Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math) Finished `release` profile [optimized] target(s) in 28.67s Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-69deb02515f397d4) running 12 tests test module_b7a9935b::Math::test_behavior_near_origin___ ... ok test module_b7a9935b::Math::test_euler_product_formula ... ok test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok test module_b7a9935b::Math::test_critical_strip ... ok test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok test module_b7a9935b::Math::test_non_trivial_zero___ ... ok test module_b7a9935b::Math::test_zeta_at_1___ ... ok test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok test module_b7a9935b::Math::test_imaginary_axis ... ok test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
Downloading crates ... Downloaded plotters-backend v0.3.7 Downloaded plotters-svg v0.3.7 Downloaded plotters v0.3.7 Compiling num-traits v0.2.19 Compiling libc v0.2.168 Compiling futures-core v0.3.31 Compiling futures-sink v0.3.31 Compiling futures-channel v0.3.31 Compiling futures-io v0.3.31 Compiling serde v1.0.216 Compiling futures-util v0.3.31 Compiling serde_json v1.0.133 Compiling plotters-backend v0.3.7 Compiling num_cpus v1.16.0 Compiling getrandom v0.2.15 Compiling uuid v1.11.0 Compiling chrono v0.4.39 Compiling plotters-svg v0.3.7 Compiling plotters v0.3.7 Compiling futures-executor v0.3.31 Compiling futures v0.3.31 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot) warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./networking.rs:533:33 | 533 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 533 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 533 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./networking.rs:533:58 | 533 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 533 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 533 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:708:33 | 708 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 708 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 708 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:708:58 | 708 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 708 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 708 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1019:62 | 1019 | (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) | ^ ^ | help: remove these parentheses | 1019 - (Runtime::method30(v0_1, (v1_1) + 1_i32))(append((v2_1), string(" "))) 1019 + (Runtime::method30(v0_1, (v1_1) + 1_i32))(append(v2_1, string(" "))) | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1109:25 | 1109 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1109 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1109 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1197:25 | 1197 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1197 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 1197 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1378:36 | 1378 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1378 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 1378 + append(v0_1.get().clone(), (ofChar(v121_0_0.clone()))); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1378:58 | 1378 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1378 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 1378 + append((v0_1.get().clone()), ofChar(v121_0_0.clone())); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1586:36 | 1586 | ... append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1586 - append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); 1586 + append(v0_1.get().clone(), (ofChar(v127_0_0.clone()))); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1586:58 | 1586 | ... append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1586 - append((v0_1.get().clone()), (ofChar(v127_0_0.clone()))); 1586 + append((v0_1.get().clone()), ofChar(v127_0_0.clone())); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1696:36 | 1696 | ... append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1696 - append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); 1696 + append(v0_1.get().clone(), (ofChar(v79_0_0.clone()))); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:1696:58 | 1696 | ... append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1696 - append((v0_1.get().clone()), (ofChar(v79_0_0.clone()))); 1696 + append((v0_1.get().clone()), ofChar(v79_0_0.clone())); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:2154:37 | 2154 | ... ((Runtime::method30((v419) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2154 - ((Runtime::method30((v419) - 1_i32, 0_i32))(string(""))), 2154 + (Runtime::method30((v419) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3183:36 | 3183 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3183 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 3183 + append(v0_1.get().clone(), (ofChar(v121_0_0.clone()))); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3183:58 | 3183 | ... append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3183 - append((v0_1.get().clone()), (ofChar(v121_0_0.clone()))); 3183 + append((v0_1.get().clone()), ofChar(v121_0_0.clone())); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3329:25 | 3329 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3329 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3329 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3396:28 | 3396 | append((ofChar('\\')), (ofChar(v210_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3396 - append((ofChar('\\')), (ofChar(v210_0_0.clone()))), 3396 + append(ofChar('\\'), (ofChar(v210_0_0.clone()))), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3396:44 | 3396 | append((ofChar('\\')), (ofChar(v210_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3396 - append((ofChar('\\')), (ofChar(v210_0_0.clone()))), 3396 + append((ofChar('\\')), ofChar(v210_0_0.clone())), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3486:25 | 3486 | ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3486 - ((Runtime::method30((v3) - 1_i32, 0_i32))(string(""))), 3486 + (Runtime::method30((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3553:28 | 3553 | append((ofChar('`')), (ofChar(v210_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3553 - append((ofChar('`')), (ofChar(v210_0_0.clone()))), 3553 + append(ofChar('`'), (ofChar(v210_0_0.clone()))), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:3553:43 | 3553 | append((ofChar('`')), (ofChar(v210_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3553 - append((ofChar('`')), (ofChar(v210_0_0.clone()))), 3553 + append((ofChar('`')), ofChar(v210_0_0.clone())), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:4101:96 | 4101 | ... append(((Runtime::method30((v4.get().clone()) | ^ ... 4104 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4101 ~ append((Runtime::method30((v4.get().clone()) 4102 | - 4103 | 1_i32, 4104 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./runtime.rs:4249:116 | 4249 | ... append(((Runtime::method30((v307) | ^ ... 4252 | ... 0_i32))(string(""))), | ^ | help: remove these parentheses | 4249 ~ append((Runtime::method30((v307) 4250 | - 4251 | 1_i32, 4252 ~ 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./trace.rs:480:33 | 480 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 480 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 480 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./trace.rs:480:58 | 480 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 480 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 480 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:691:33 | 691 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 691 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 691 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:691:58 | 691 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 691 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 691 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2262:80 | 2262 | (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2262 - (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2262 + (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3, (v1_1))) | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2262:86 | 2262 | (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) | ^ ^ | help: remove these parentheses | 2262 - (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), (v1_1))) 2262 + (File_system::method99(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3), v1_1)) | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2276:13 | 2276 | ((File_system::method99(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2276 - ((File_system::method99(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string(""))), 2276 + (File_system::method99(32_i32 - (length(v0_1.clone())), v2_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./file_system.rs:2277:13 | 2277 | (v0_1), | ^ ^ | help: remove these parentheses | 2277 - (v0_1), 2277 + v0_1, | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:94:70 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1))) | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:94:78 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1)) | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:108:13 | 108 | ((Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 108 - ((Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string(""))), 108 + (Sm::method0((v0_1) - (length(v2_1.clone())), v4_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:109:13 | 109 | (v2_1), | ^ ^ | help: remove these parentheses | 109 - (v2_1), 109 + v2_1, | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:128:13 | 128 | (v2_1.clone()), | ^ ^ | help: remove these parentheses | 128 - (v2_1.clone()), 128 + v2_1.clone(), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:129:13 | 129 | ((Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 129 - ((Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string(""))), 129 + (Sm::method0((v0_1) - (length(v2_1)), v4_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:342:17 | 342 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 342 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 342 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:17 | 407 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 407 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 407 + append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:25 | 407 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 407 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 407 + (append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:73 | 407 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 407 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 407 + (append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue)), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:33 | 407 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 407 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 407 + (append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue))), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./sm.rs:407:55 | 407 | (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), | ^ ^ | help: remove these parentheses | 407 - (append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue))), 407 + (append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue))), | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./crypto.rs:626:33 | 626 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 626 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 626 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./crypto.rs:626:58 | 626 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 626 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 626 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./common.rs:558:33 | 558 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 558 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 558 + let v3: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../lib/spiral/./common.rs:558:58 | 558 | let v3: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 558 - let v3: string = append((v0_1.l0.get().clone()), (v1_1)); 558 + let v3: string = append((v0_1.l0.get().clone()), v1_1); | warning: `plot` (lib) generated 48 warnings (run `cargo fix --lib -p plot` to apply 48 suggestions) Finished `release` profile [optimized] target(s) in 14.13s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Perf.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Perf.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # Perf (Polyglot) 00:00:16 v #13 > > 00:00:16 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:16 v #15 > > //// test 00:00:16 v #16 > > 00:00:16 v #17 > > open testing 00:00:16 v #18 > > open benchmark 00:00:19 v #19 > > 00:00:19 v #20 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #21 > > #if !INTERACTIVE 00:00:19 v #22 > > open Lib 00:00:19 v #23 > > #endif 00:00:19 v #24 > > 00:00:19 v #25 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #26 > > │ ## TestCaseResult 00:00:19 v #27 > > 00:00:19 v #28 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #29 > > type TestCaseResult = 00:00:19 v #30 > > { 00:00:19 v #31 > > Input: string 00:00:19 v #32 > > Expected: string 00:00:19 v #33 > > Result: string 00:00:19 v #34 > > TimeList: int64 list 00:00:19 v #35 > > } 00:00:19 v #36 > > 00:00:19 v #37 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #38 > > │ ## run 00:00:19 v #39 > > 00:00:19 v #40 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #41 > > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input, 00:00:19 v #42 > > expected) = 00:00:19 v #43 > > let inputStr = 00:00:19 v #44 > > match box input with 00:00:19 v #45 > > | :? System.Collections.ICollection as input -> 00:00:19 v #46 > > System.Linq.Enumerable.Cast<obj> input 00:00:19 v #47 > > |> Seq.map string 00:00:19 v #48 > > |> SpiralSm.concat "," 00:00:19 v #49 > > | _ -> input.ToString () 00:00:19 v #50 > > 00:00:19 v #51 > > printfn "" 00:00:19 v #52 > > printfn $"Solution: {inputStr} " 00:00:19 v #53 > > 00:00:19 v #54 > > let performanceInvoke (fn: unit -> 'T) = 00:00:19 v #55 > > GC.Collect () 00:00:19 v #56 > > let stopwatch = System.Diagnostics.Stopwatch () 00:00:19 v #57 > > stopwatch.Start () 00:00:19 v #58 > > let time1 = stopwatch.ElapsedMilliseconds 00:00:19 v #59 > > 00:00:19 v #60 > > let result = 00:00:19 v #61 > > [[| 0 .. count |]] 00:00:19 v #62 > > |> Array.Parallel.map (fun _ -> 00:00:19 v #63 > > fn () 00:00:19 v #64 > > ) 00:00:19 v #65 > > |> Array.last 00:00:19 v #66 > > 00:00:19 v #67 > > let time2 = stopwatch.ElapsedMilliseconds - time1 00:00:19 v #68 > > 00:00:19 v #69 > > result, time2 00:00:19 v #70 > > 00:00:19 v #71 > > let resultsWithTime = 00:00:19 v #72 > > solutions 00:00:19 v #73 > > |> List.mapi (fun i (testName, solution) -> 00:00:19 v #74 > > let result, time = performanceInvoke (fun () -> solution input) 00:00:19 v #75 > > printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time} " 00:00:19 v #76 > > result, time 00:00:19 v #77 > > ) 00:00:19 v #78 > > 00:00:19 v #79 > > 00:00:19 v #80 > > match resultsWithTime |> List.map fst with 00:00:19 v #81 > > | ([[]] | [[ _ ]]) -> () 00:00:19 v #82 > > | (head :: tail) when tail |> List.forall ((=) head) -> () 00:00:19 v #83 > > | results -> failwithf $"Challenge error: %A{results}" 00:00:19 v #84 > > 00:00:19 v #85 > > { 00:00:19 v #86 > > Input = inputStr 00:00:19 v #87 > > Expected = expected.ToString () 00:00:19 v #88 > > Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString() 00:00:19 v #89 > > TimeList = resultsWithTime |> List.map snd 00:00:19 v #90 > > } 00:00:19 v #91 > > 00:00:19 v #92 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #93 > > │ ## runAll 00:00:19 v #94 > > 00:00:19 v #95 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #96 > > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list) 00:00:19 v #97 > > testCases = 00:00:19 v #98 > > printfn "" 00:00:19 v #99 > > printfn "" 00:00:19 v #100 > > printfn $"Test: {testName}" 00:00:19 v #101 > > testCases 00:00:19 v #102 > > |> Seq.map (run count solutions) 00:00:19 v #103 > > |> Seq.toList 00:00:19 v #104 > > 00:00:19 v #105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #106 > > │ ## sortResultList 00:00:19 v #107 > > 00:00:19 v #108 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:19 v #109 > > let sortResultList resultList = 00:00:19 v #110 > > let table = 00:00:19 v #111 > > let rows = 00:00:19 v #112 > > resultList 00:00:19 v #113 > > |> List.map (fun result -> 00:00:19 v #114 > > let best = 00:00:19 v #115 > > result.TimeList 00:00:19 v #116 > > |> List.mapi (fun i time -> 00:00:19 v #117 > > i + 1, time 00:00:19 v #118 > > ) 00:00:19 v #119 > > |> List.sortBy snd 00:00:19 v #120 > > |> List.head 00:00:19 v #121 > > |> _.ToString() 00:00:19 v #122 > > let row = 00:00:19 v #123 > > [[ 00:00:19 v #124 > > result.Input 00:00:19 v #125 > > result.Expected 00:00:19 v #126 > > result.Result 00:00:19 v #127 > > best 00:00:19 v #128 > > ]] 00:00:19 v #129 > > let color = 00:00:19 v #130 > > match result.Expected = result.Result with 00:00:19 v #131 > > | true -> Some ConsoleColor.DarkGreen 00:00:19 v #132 > > | false -> Some ConsoleColor.DarkRed 00:00:19 v #133 > > row, color 00:00:19 v #134 > > ) 00:00:19 v #135 > > let header = 00:00:19 v #136 > > [[ 00:00:19 v #137 > > [[ 00:00:19 v #138 > > "Input" 00:00:19 v #139 > > "Expected" 00:00:19 v #140 > > "Result" 00:00:19 v #141 > > "Best" 00:00:19 v #142 > > ]] 00:00:19 v #143 > > [[ 00:00:19 v #144 > > "---" 00:00:19 v #145 > > "---" 00:00:19 v #146 > > "---" 00:00:19 v #147 > > "---" 00:00:19 v #148 > > ]] 00:00:19 v #149 > > ]] 00:00:19 v #150 > > |> List.map (fun row -> row, None) 00:00:19 v #151 > > header @ rows 00:00:19 v #152 > > 00:00:19 v #153 > > let formattedTable = 00:00:19 v #154 > > let lengthMap = 00:00:19 v #155 > > table 00:00:19 v #156 > > |> List.map fst 00:00:19 v #157 > > |> List.transpose 00:00:19 v #158 > > |> List.map (fun column -> 00:00:19 v #159 > > column 00:00:19 v #160 > > |> List.map String.length 00:00:19 v #161 > > |> List.sortDescending 00:00:19 v #162 > > |> List.tryHead 00:00:19 v #163 > > |> Option.defaultValue 0 00:00:19 v #164 > > ) 00:00:19 v #165 > > |> List.indexed 00:00:19 v #166 > > |> Map.ofList 00:00:19 v #167 > > table 00:00:19 v #168 > > |> List.map (fun (row, color) -> 00:00:19 v #169 > > let newRow = 00:00:19 v #170 > > row 00:00:19 v #171 > > |> List.mapi (fun i cell -> 00:00:19 v #172 > > cell.PadRight lengthMap.[[i]] 00:00:19 v #173 > > ) 00:00:19 v #174 > > newRow, color 00:00:19 v #175 > > ) 00:00:19 v #176 > > 00:00:19 v #177 > > printfn "" 00:00:19 v #178 > > formattedTable 00:00:19 v #179 > > |> List.iter (fun (row, color) -> 00:00:19 v #180 > > match color with 00:00:19 v #181 > > | Some color -> Console.ForegroundColor <- color 00:00:19 v #182 > > | None -> Console.ResetColor () 00:00:19 v #183 > > 00:00:19 v #184 > > printfn "%s" (String.Join ("\t| ", row)) 00:00:19 v #185 > > 00:00:19 v #186 > > Console.ResetColor () 00:00:19 v #187 > > ) 00:00:19 v #188 > > 00:00:19 v #189 > > let averages = 00:00:19 v #190 > > resultList 00:00:19 v #191 > > |> List.map (fun result -> result.TimeList |> List.map float) 00:00:19 v #192 > > |> List.transpose 00:00:19 v #193 > > |> List.map List.average 00:00:19 v #194 > > |> List.map int64 00:00:19 v #195 > > |> List.indexed 00:00:19 v #196 > > 00:00:19 v #197 > > printfn "" 00:00:19 v #198 > > printfn "Average Ranking " 00:00:19 v #199 > > averages 00:00:19 v #200 > > |> List.sortBy snd 00:00:19 v #201 > > |> List.iter (fun (i, avg) -> 00:00:19 v #202 > > printfn $"Test case %d{i + 1}. Average Time: %A{avg} " 00:00:19 v #203 > > ) 00:00:20 v #204 > > 00:00:20 v #205 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #206 > > let mutable _count = 00:00:20 v #207 > > if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}") 00:00:20 v #208 > > <> "<null>" 00:00:20 v #209 > > then 2000000 00:00:20 v #210 > > else 2000 00:00:20 v #211 > > 00:00:20 v #212 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:20 v #213 > > inl is_fast () = 00:00:20 v #214 > > false 00:00:20 v #215 > > 00:00:20 v #216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #217 > > │ ## empty3Tests 00:00:20 v #218 > > 00:00:20 v #219 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #220 > > │ Test: Empty3 00:00:20 v #221 > > │ 00:00:20 v #222 > > │ Solution: (a, a) 00:00:20 v #223 > > │ Test case 1. A. Time: 91L 00:00:20 v #224 > > │ 00:00:20 v #225 > > │ Solution: (a, a) 00:00:20 v #226 > > │ Test case 1. A. Time: 56L 00:00:20 v #227 > > │ 00:00:20 v #228 > > │ Input | Expected | Result | Best 00:00:20 v #229 > > │ --- | --- | --- | --- 00:00:20 v #230 > > │ (a, a) | a | a | (1, 91) 00:00:20 v #231 > > │ (a, a) | a | a | (1, 56) 00:00:20 v #232 > > │ 00:00:20 v #233 > > │ Averages 00:00:20 v #234 > > │ Test case 1. Average Time: 73L 00:00:20 v #235 > > │ 00:00:20 v #236 > > │ Ranking 00:00:20 v #237 > > │ Test case 1. Average Time: 73L 00:00:20 v #238 > > 00:00:20 v #239 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #240 > > //// test 00:00:20 v #241 > > 00:00:20 v #242 > > let solutions = [[ 00:00:20 v #243 > > "A", 00:00:20 v #244 > > fun (a, _b) -> 00:00:20 v #245 > > a 00:00:20 v #246 > > ]] 00:00:20 v #247 > > let testCases = seq { 00:00:20 v #248 > > ("a", "a"), "a" 00:00:20 v #249 > > ("a", "a"), "a" 00:00:20 v #250 > > } 00:00:20 v #251 > > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases 00:00:20 v #252 > > empty3Tests 00:00:20 v #253 > > |> sortResultList 00:00:20 v #254 > > 00:00:20 v #255 > > ── [ 420.12ms - stdout ] ─────────────────────────────────────────────────────── 00:00:20 v #256 > > │ 00:00:20 v #257 > > │ 00:00:20 v #258 > > │ Test: empty3Tests 00:00:20 v #259 > > │ 00:00:20 v #260 > > │ Solution: (a, a) 00:00:20 v #261 > > │ Test case 1. A. Time: 30L 00:00:20 v #262 > > │ 00:00:20 v #263 > > │ Solution: (a, a) 00:00:20 v #264 > > │ Test case 1. A. Time: 24L 00:00:20 v #265 > > │ 00:00:20 v #266 > > │ Input | Expected | Result | Best 00:00:20 v #267 > > │ --- | --- | --- | --- 00:00:20 v #268 > > │ (a, a) | a | a | (1, 30) 00:00:20 v #269 > > │ (a, a) | a | a | (1, 24) 00:00:20 v #270 > > │ 00:00:20 v #271 > > │ Average Ranking 00:00:20 v #272 > > │ Test case 1. Average Time: 27L 00:00:20 v #273 > > │ 00:00:20 v #274 > > 00:00:20 v #275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #276 > > │ ## empty2Tests 00:00:20 v #277 > > 00:00:20 v #278 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:20 v #279 > > │ Test: Empty2 00:00:20 v #280 > > │ 00:00:20 v #281 > > │ Solution: (a, a) 00:00:20 v #282 > > │ Test case 1. A. Time: 59L 00:00:20 v #283 > > │ 00:00:20 v #284 > > │ Solution: (a, a) 00:00:20 v #285 > > │ Test case 1. A. Time: 53L 00:00:20 v #286 > > │ 00:00:20 v #287 > > │ Input | Expected | Result | Best 00:00:20 v #288 > > │ --- | --- | --- | --- 00:00:20 v #289 > > │ (a, a) | a | a | (1, 59) 00:00:20 v #290 > > │ (a, a) | a | a | (1, 53) 00:00:20 v #291 > > │ 00:00:20 v #292 > > │ Averages 00:00:20 v #293 > > │ Test case 1. Average Time: 56L 00:00:20 v #294 > > │ 00:00:20 v #295 > > │ Ranking 00:00:20 v #296 > > │ Test case 1. Average Time: 56L 00:00:20 v #297 > > 00:00:20 v #298 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:20 v #299 > > //// test 00:00:20 v #300 > > 00:00:20 v #301 > > let solutions = [[ 00:00:20 v #302 > > "A", 00:00:20 v #303 > > fun (a, _b) -> 00:00:20 v #304 > > a 00:00:20 v #305 > > ]] 00:00:20 v #306 > > let testCases = seq { 00:00:20 v #307 > > ("a", "a"), "a" 00:00:20 v #308 > > ("a", "a"), "a" 00:00:20 v #309 > > } 00:00:20 v #310 > > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases 00:00:20 v #311 > > empty2Tests 00:00:20 v #312 > > |> sortResultList 00:00:21 v #313 > > 00:00:21 v #314 > > ── [ 398.03ms - stdout ] ─────────────────────────────────────────────────────── 00:00:21 v #315 > > │ 00:00:21 v #316 > > │ 00:00:21 v #317 > > │ Test: empty2Tests 00:00:21 v #318 > > │ 00:00:21 v #319 > > │ Solution: (a, a) 00:00:21 v #320 > > │ Test case 1. A. Time: 36L 00:00:21 v #321 > > │ 00:00:21 v #322 > > │ Solution: (a, a) 00:00:21 v #323 > > │ Test case 1. A. Time: 26L 00:00:21 v #324 > > │ 00:00:21 v #325 > > │ Input | Expected | Result | Best 00:00:21 v #326 > > │ --- | --- | --- | --- 00:00:21 v #327 > > │ (a, a) | a | a | (1, 36) 00:00:21 v #328 > > │ (a, a) | a | a | (1, 26) 00:00:21 v #329 > > │ 00:00:21 v #330 > > │ Average Ranking 00:00:21 v #331 > > │ Test case 1. Average Time: 31L 00:00:21 v #332 > > │ 00:00:21 v #333 > > 00:00:21 v #334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #335 > > │ ## emptyTests 00:00:21 v #336 > > 00:00:21 v #337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #338 > > │ Test: Empty 00:00:21 v #339 > > │ 00:00:21 v #340 > > │ Solution: 0 00:00:21 v #341 > > │ Test case 1. A. Time: 61L 00:00:21 v #342 > > │ 00:00:21 v #343 > > │ Solution: 2 00:00:21 v #344 > > │ Test case 1. A. Time: 62L 00:00:21 v #345 > > │ 00:00:21 v #346 > > │ Solution: 5 00:00:21 v #347 > > │ Test case 1. A. Time: 70L 00:00:21 v #348 > > │ 00:00:21 v #349 > > │ Input | Expected | Result | Best 00:00:21 v #350 > > │ --- | --- | --- | --- 00:00:21 v #351 > > │ 0 | 0 | 0 | (1, 61) 00:00:21 v #352 > > │ 2 | 2 | 2 | (1, 62) 00:00:21 v #353 > > │ 5 | 5 | 5 | (1, 70) 00:00:21 v #354 > > │ 00:00:21 v #355 > > │ Averages 00:00:21 v #356 > > │ Test case 1. Average Time: 64L 00:00:21 v #357 > > │ 00:00:21 v #358 > > │ Ranking 00:00:21 v #359 > > │ Test case 1. Average Time: 64L 00:00:21 v #360 > > 00:00:21 v #361 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:21 v #362 > > //// test 00:00:21 v #363 > > 00:00:21 v #364 > > let solutions = [[ 00:00:21 v #365 > > "A", 00:00:21 v #366 > > fun n -> 00:00:21 v #367 > > n + 0 00:00:21 v #368 > > ]] 00:00:21 v #369 > > let testCases = seq { 00:00:21 v #370 > > 0, 0 00:00:21 v #371 > > 2, 2 00:00:21 v #372 > > 5, 5 00:00:21 v #373 > > } 00:00:21 v #374 > > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases 00:00:21 v #375 > > emptyTests 00:00:21 v #376 > > |> sortResultList 00:00:21 v #377 > > 00:00:21 v #378 > > ── [ 551.18ms - stdout ] ─────────────────────────────────────────────────────── 00:00:21 v #379 > > │ 00:00:21 v #380 > > │ 00:00:21 v #381 > > │ Test: emptyTests 00:00:21 v #382 > > │ 00:00:21 v #383 > > │ Solution: 0 00:00:21 v #384 > > │ Test case 1. A. Time: 21L 00:00:21 v #385 > > │ 00:00:21 v #386 > > │ Solution: 2 00:00:21 v #387 > > │ Test case 1. A. Time: 18L 00:00:21 v #388 > > │ 00:00:21 v #389 > > │ Solution: 5 00:00:21 v #390 > > │ Test case 1. A. Time: 27L 00:00:21 v #391 > > │ 00:00:21 v #392 > > │ Input | Expected | Result | Best 00:00:21 v #393 > > │ --- | --- | --- | --- 00:00:21 v #394 > > │ 0 | 0 | 0 | (1, 21) 00:00:21 v #395 > > │ 2 | 2 | 2 | (1, 18) 00:00:21 v #396 > > │ 5 | 5 | 5 | (1, 27) 00:00:21 v #397 > > │ 00:00:21 v #398 > > │ Average Ranking 00:00:21 v #399 > > │ Test case 1. Average Time: 22L 00:00:21 v #400 > > │ 00:00:21 v #401 > > 00:00:21 v #402 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #403 > > │ ## uniqueLettersTests 00:00:21 v #404 > > 00:00:21 v #405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:21 v #406 > > │ Test: UniqueLetters 00:00:21 v #407 > > │ 00:00:21 v #408 > > │ Solution: abc 00:00:21 v #409 > > │ Test case 1. A. Time: 1512L 00:00:21 v #410 > > │ Test case 2. B. Time: 1947L 00:00:21 v #411 > > │ Test case 3. C. Time: 2023L 00:00:21 v #412 > > │ Test case 4. D. Time: 1358L 00:00:21 v #413 > > │ Test case 5. E. Time: 1321L 00:00:21 v #414 > > │ Test case 6. F. Time: 1346L 00:00:21 v #415 > > │ Test case 7. G. Time: 1304L 00:00:21 v #416 > > │ Test case 8. H. Time: 1383L 00:00:21 v #417 > > │ Test case 9. I. Time: 1495L 00:00:21 v #418 > > │ Test case 10. J. Time: 1245L 00:00:21 v #419 > > │ Test case 11. K. Time: 1219L 00:00:21 v #420 > > │ 00:00:21 v #421 > > │ Solution: accabb 00:00:21 v #422 > > │ Test case 1. A. Time: 1648L 00:00:21 v #423 > > │ Test case 2. B. Time: 2061L 00:00:21 v #424 > > │ Test case 3. C. Time: 2413L 00:00:21 v #425 > > │ Test case 4. D. Time: 1561L 00:00:21 v #426 > > │ Test case 5. E. Time: 1593L 00:00:21 v #427 > > │ Test case 6. F. Time: 1518L 00:00:21 v #428 > > │ Test case 7. G. Time: 1415L 00:00:21 v #429 > > │ Test case 8. H. Time: 1510L 00:00:21 v #430 > > │ Test case 9. I. Time: 1445L 00:00:21 v #431 > > │ Test case 10. J. Time: 1636L 00:00:21 v #432 > > │ Test case 11. K. Time: 1317L 00:00:21 v #433 > > │ 00:00:21 v #434 > > │ Solution: pprrqqpp 00:00:21 v #435 > > │ Test case 1. A. Time: 2255L 00:00:21 v #436 > > │ Test case 2. B. Time: 2408L 00:00:21 v #437 > > │ Test case 3. C. Time: 2393L 00:00:21 v #438 > > │ Test case 4. D. Time: 1675L 00:00:21 v #439 > > │ Test case 5. E. Time: 1911L 00:00:21 v #440 > > │ Test case 6. F. Time: 2126L 00:00:21 v #441 > > │ Test case 7. G. Time: 1504L 00:00:21 v #442 > > │ Test case 8. H. Time: 1715L 00:00:21 v #443 > > │ Test case 9. I. Time: 1537L 00:00:21 v #444 > > │ Test case 10. J. Time: 1522L 00:00:21 v #445 > > │ Test case 11. K. Time: 1322L 00:00:21 v #446 > > │ 00:00:21 v #447 > > │ Solution: 00:00:21 v #448 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 00:00:21 v #449 > > │ Test case 1. A. Time: 13073L 00:00:21 v #450 > > │ Test case 2. B. Time: 11519L 00:00:21 v #451 > > │ Test case 3. C. Time: 8373L 00:00:21 v #452 > > │ Test case 4. D. Time: 5860L 00:00:21 v #453 > > │ Test case 5. E. Time: 6490L 00:00:21 v #454 > > │ Test case 6. F. Time: 6325L 00:00:21 v #455 > > │ Test case 7. G. Time: 5799L 00:00:21 v #456 > > │ Test case 8. H. Time: 7099L 00:00:21 v #457 > > │ Test case 9. I. Time: 6133L 00:00:21 v #458 > > │ Test case 10. J. Time: 5993L 00:00:21 v #459 > > │ Test case 11. K. Time: 2040L 00:00:21 v #460 > > │ 00:00:21 v #461 > > │ Input 00:00:21 v #462 > > | Expected | Result | Best 00:00:21 v #463 > > │ --- 00:00:21 v #464 > > | --- | --- | --- 00:00:21 v #465 > > │ abc 00:00:21 v #466 > > | abc | abc | (11, 1219) 00:00:21 v #467 > > │ accabb 00:00:21 v #468 > > | acb | acb | (11, 1317) 00:00:21 v #469 > > │ pprrqqpp 00:00:21 v #470 > > | prq | prq | (11, 1322) 00:00:21 v #471 > > │ 00:00:21 v #472 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 00:00:21 v #473 > > | acb | acb | (11, 2040) 00:00:21 v #474 > > │ 00:00:21 v #475 > > │ Averages 00:00:21 v #476 > > │ Test case 1. Average Time: 4622L 00:00:21 v #477 > > │ Test case 2. Average Time: 4483L 00:00:21 v #478 > > │ Test case 3. Average Time: 3800L 00:00:21 v #479 > > │ Test case 4. Average Time: 2613L 00:00:21 v #480 > > │ Test case 5. Average Time: 2828L 00:00:21 v #481 > > │ Test case 6. Average Time: 2828L 00:00:21 v #482 > > │ Test case 7. Average Time: 2505L 00:00:21 v #483 > > │ Test case 8. Average Time: 2926L 00:00:21 v #484 > > │ Test case 9. Average Time: 2652L 00:00:21 v #485 > > │ Test case 10. Average Time: 2599L 00:00:21 v #486 > > │ Test case 11. Average Time: 1474L 00:00:21 v #487 > > │ 00:00:21 v #488 > > │ Ranking 00:00:21 v #489 > > │ Test case 1. Average Time: 4622L 00:00:21 v #490 > > │ Test case 2. Average Time: 4483L 00:00:21 v #491 > > │ Test case 3. Average Time: 3800L 00:00:21 v #492 > > │ Test case 8. Average Time: 2926L 00:00:21 v #493 > > │ Test case 5. Average Time: 2828L 00:00:21 v #494 > > │ Test case 6. Average Time: 2828L 00:00:21 v #495 > > │ Test case 9. Average Time: 2652L 00:00:21 v #496 > > │ Test case 4. Average Time: 2613L 00:00:21 v #497 > > │ Test case 10. Average Time: 2599L 00:00:21 v #498 > > │ Test case 7. Average Time: 2505L 00:00:21 v #499 > > │ Test case 11. Average Time: 1474L 00:00:21 v #500 > > 00:00:21 v #501 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:21 v #502 > > //// test 00:00:21 v #503 > > 00:00:21 v #504 > > let solutions = [[ 00:00:21 v #505 > > "A", 00:00:21 v #506 > > fun input -> 00:00:21 v #507 > > input 00:00:21 v #508 > > |> Seq.toList 00:00:21 v #509 > > |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[ 00:00:21 v #510 > > x ]]) [[]] 00:00:21 v #511 > > |> Seq.toArray 00:00:21 v #512 > > |> String 00:00:21 v #513 > > 00:00:21 v #514 > > "B", 00:00:21 v #515 > > fun input -> 00:00:21 v #516 > > input 00:00:21 v #517 > > |> Seq.rev 00:00:21 v #518 > > |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then 00:00:21 v #519 > > acc else x :: acc) list [[]] 00:00:21 v #520 > > |> Seq.rev 00:00:21 v #521 > > |> Seq.toArray 00:00:21 v #522 > > |> String 00:00:21 v #523 > > 00:00:21 v #524 > > "C", 00:00:21 v #525 > > fun input -> 00:00:21 v #526 > > input 00:00:21 v #527 > > |> Seq.rev 00:00:21 v #528 > > |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set 00:00:21 v #529 > > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]]) 00:00:21 v #530 > > |> snd 00:00:21 v #531 > > |> Seq.rev 00:00:21 v #532 > > |> Seq.toArray 00:00:21 v #533 > > |> String 00:00:21 v #534 > > 00:00:21 v #535 > > "D", 00:00:21 v #536 > > fun input -> 00:00:21 v #537 > > input 00:00:21 v #538 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #539 > > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]]) 00:00:21 v #540 > > |> snd 00:00:21 v #541 > > |> String 00:00:21 v #542 > > 00:00:21 v #543 > > "E", 00:00:21 v #544 > > fun input -> 00:00:21 v #545 > > input 00:00:21 v #546 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #547 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:21 v #548 > > |> snd 00:00:21 v #549 > > |> List.rev 00:00:21 v #550 > > |> List.toArray 00:00:21 v #551 > > |> String 00:00:21 v #552 > > 00:00:21 v #553 > > "F", 00:00:21 v #554 > > fun input -> 00:00:21 v #555 > > input 00:00:21 v #556 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #557 > > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) 00:00:21 v #558 > > |> snd 00:00:21 v #559 > > |> List.toArray 00:00:21 v #560 > > |> String 00:00:21 v #561 > > 00:00:21 v #562 > > "G", 00:00:21 v #563 > > fun input -> 00:00:21 v #564 > > input 00:00:21 v #565 > > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc 00:00:21 v #566 > > else set.Add x, x :: acc) (Set.empty, [[]]) 00:00:21 v #567 > > |> snd 00:00:21 v #568 > > |> List.toArray 00:00:21 v #569 > > |> Array.rev 00:00:21 v #570 > > |> String 00:00:21 v #571 > > 00:00:21 v #572 > > "H", 00:00:21 v #573 > > fun input -> 00:00:21 v #574 > > input 00:00:21 v #575 > > |> Seq.toList 00:00:21 v #576 > > |> fun list -> 00:00:21 v #577 > > let rec loop set = function 00:00:21 v #578 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #579 > > | head :: tail -> (loop (set.Add head) tail) @ [[ head ]] 00:00:21 v #580 > > | [[]] -> [[]] 00:00:21 v #581 > > loop Set.empty list 00:00:21 v #582 > > |> List.rev 00:00:21 v #583 > > |> List.toArray 00:00:21 v #584 > > |> String 00:00:21 v #585 > > 00:00:21 v #586 > > "I", 00:00:21 v #587 > > fun input -> 00:00:21 v #588 > > input 00:00:21 v #589 > > |> Seq.toList 00:00:21 v #590 > > |> fun list -> 00:00:21 v #591 > > let rec loop set = function 00:00:21 v #592 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #593 > > | head :: tail -> loop (set.Add head) tail |> Array.append [[| 00:00:21 v #594 > > head |]] 00:00:21 v #595 > > | [[]] -> [[||]] 00:00:21 v #596 > > loop Set.empty list 00:00:21 v #597 > > |> String 00:00:21 v #598 > > 00:00:21 v #599 > > "J", 00:00:21 v #600 > > fun input -> 00:00:21 v #601 > > input 00:00:21 v #602 > > |> Seq.toList 00:00:21 v #603 > > |> fun list -> 00:00:21 v #604 > > let rec loop set = function 00:00:21 v #605 > > | head :: tail when Set.contains head set -> loop set tail 00:00:21 v #606 > > | head :: tail -> head :: loop (set.Add head) tail 00:00:21 v #607 > > | [[]] -> [[]] 00:00:21 v #608 > > loop Set.empty list 00:00:21 v #609 > > |> List.toArray 00:00:21 v #610 > > |> String 00:00:21 v #611 > > 00:00:21 v #612 > > "K", 00:00:21 v #613 > > fun input -> 00:00:21 v #614 > > input 00:00:21 v #615 > > |> Seq.distinct 00:00:21 v #616 > > |> Seq.toArray 00:00:21 v #617 > > |> String 00:00:21 v #618 > > ]] 00:00:21 v #619 > > let testCases = seq { 00:00:21 v #620 > > "abc", "abc" 00:00:21 v #621 > > "accabb", "acb" 00:00:21 v #622 > > "pprrqqpp", "prq" 00:00:21 v #623 > > 00:00:21 v #624 > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb 00:00:21 v #625 > > ", "acb" 00:00:21 v #626 > > } 00:00:21 v #627 > > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions 00:00:21 v #628 > > testCases 00:00:21 v #629 > > uniqueLettersTests 00:00:21 v #630 > > |> sortResultList 00:01:25 v #631 > > 00:01:25 v #632 > > ── [ 1.07m - stdout ] ────────────────────────────────────────────────────────── 00:01:25 v #633 > > │ 00:01:25 v #634 > > │ 00:01:25 v #635 > > │ Test: uniqueLettersTests 00:01:25 v #636 > > │ 00:01:25 v #637 > > │ Solution: abc 00:01:25 v #638 > > │ Test case 1. A. Time: 1120L 00:01:25 v #639 > > │ Test case 2. B. Time: 1656L 00:01:25 v #640 > > │ Test case 3. C. Time: 2092L 00:01:25 v #641 > > │ Test case 4. D. Time: 1211L 00:01:25 v #642 > > │ Test case 5. E. Time: 1426L 00:01:25 v #643 > > │ Test case 6. F. Time: 1093L 00:01:25 v #644 > > │ Test case 7. G. Time: 821L 00:01:25 v #645 > > │ Test case 8. H. Time: 930L 00:01:25 v #646 > > │ Test case 9. I. Time: 833L 00:01:25 v #647 > > │ Test case 10. J. Time: 856L 00:01:25 v #648 > > │ Test case 11. K. Time: 847L 00:01:25 v #649 > > │ 00:01:25 v #650 > > │ Solution: accabb 00:01:25 v #651 > > │ Test case 1. A. Time: 972L 00:01:25 v #652 > > │ Test case 2. B. Time: 1158L 00:01:25 v #653 > > │ Test case 3. C. Time: 1245L 00:01:25 v #654 > > │ Test case 4. D. Time: 806L 00:01:25 v #655 > > │ Test case 5. E. Time: 856L 00:01:25 v #656 > > │ Test case 6. F. Time: 834L 00:01:25 v #657 > > │ Test case 7. G. Time: 787L 00:01:25 v #658 > > │ Test case 8. H. Time: 830L 00:01:25 v #659 > > │ Test case 9. I. Time: 839L 00:01:25 v #660 > > │ Test case 10. J. Time: 740L 00:01:25 v #661 > > │ Test case 11. K. Time: 643L 00:01:25 v #662 > > │ 00:01:25 v #663 > > │ Solution: pprrqqpp 00:01:25 v #664 > > │ Test case 1. A. Time: 718L 00:01:25 v #665 > > │ Test case 2. B. Time: 1035L 00:01:25 v #666 > > │ Test case 3. C. Time: 1313L 00:01:25 v #667 > > │ Test case 4. D. Time: 928L 00:01:25 v #668 > > │ Test case 5. E. Time: 788L 00:01:25 v #669 > > │ Test case 6. F. Time: 827L 00:01:25 v #670 > > │ Test case 7. G. Time: 794L 00:01:25 v #671 > > │ Test case 8. H. Time: 857L 00:01:25 v #672 > > │ Test case 9. I. Time: 800L 00:01:25 v #673 > > │ Test case 10. J. Time: 747L 00:01:25 v #674 > > │ Test case 11. K. Time: 655L 00:01:25 v #675 > > │ 00:01:25 v #676 > > │ Solution: 00:01:25 v #677 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb│ Test case 1. A. Time: 1738L 00:01:25 v #678 > > │ Test case 2. B. Time: 2676L 00:01:25 v #679 > > │ Test case 3. C. Time: 3611L 00:01:25 v #680 > > │ Test case 4. D. Time: 1973L 00:01:25 v #681 > > │ Test case 5. E. Time: 2011L 00:01:25 v #682 > > │ Test case 6. F. Time: 1903L 00:01:25 v #683 > > │ Test case 7. G. Time: 2044L 00:01:25 v #684 > > │ Test case 8. H. Time: 1883L 00:01:25 v #685 > > │ Test case 9. I. Time: 1904L 00:01:25 v #686 > > │ Test case 10. J. Time: 1653L 00:01:25 v #687 > > │ Test case 11. K. Time: 1272L 00:01:25 v #688 > > │ 00:01:25 v #689 > > │ Input 00:01:25 v #690 > > | Expected | Result | Best 00:01:25 v #691 > > │ --- 00:01:25 v #692 > > | --- | --- | --- 00:01:25 v #693 > > │ abc 00:01:25 v #694 > > | abc | abc | (7, 821) 00:01:25 v #695 > > │ accabb 00:01:25 v #696 > > | acb | acb | (11, 643) 00:01:25 v #697 > > │ pprrqqpp 00:01:25 v #698 > > | prq | prq | (11, 655) 00:01:25 v #699 > > │ 00:01:25 v #700 > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb | 00:01:25 v #701 > > acb | acb | (11, 1272) 00:01:25 v #702 > > │ 00:01:25 v #703 > > │ Average Ranking 00:01:25 v #704 > > │ Test case 11. Average Time: 854L 00:01:25 v #705 > > │ Test case 10. Average Time: 999L 00:01:25 v #706 > > │ Test case 9. Average Time: 1094L 00:01:25 v #707 > > │ Test case 7. Average Time: 1111L 00:01:25 v #708 > > │ Test case 8. Average Time: 1125L 00:01:25 v #709 > > │ Test case 1. Average Time: 1137L 00:01:25 v #710 > > │ Test case 6. Average Time: 1164L 00:01:25 v #711 > > │ Test case 4. Average Time: 1229L 00:01:25 v #712 > > │ Test case 5. Average Time: 1270L 00:01:25 v #713 > > │ Test case 2. Average Time: 1631L 00:01:25 v #714 > > │ Test case 3. Average Time: 2065L 00:01:25 v #715 > > │ 00:01:25 v #716 > > 00:01:25 v #717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 v #718 > > │ ## rotateStringsTests 00:01:25 v #719 > > 00:01:25 v #720 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:25 v #721 > > │ https://www.hackerrank.com/challenges/rotate-string/forum 00:01:25 v #722 > > │ 00:01:25 v #723 > > │ Test: RotateStrings 00:01:25 v #724 > > │ 00:01:25 v #725 > > │ Solution: abc 00:01:25 v #726 > > │ Test case 1. A. Time: 1842L 00:01:25 v #727 > > │ Test case 2. B. Time: 1846L 00:01:25 v #728 > > │ Test case 3. C. Time: 1936L 00:01:25 v #729 > > │ Test case 4. CA. Time: 2224L 00:01:25 v #730 > > │ Test case 5. CB. Time: 2329L 00:01:25 v #731 > > │ Test case 6. D. Time: 2474L 00:01:25 v #732 > > │ Test case 7. E. Time: 1664L 00:01:25 v #733 > > │ Test case 8. F. Time: 1517L 00:01:25 v #734 > > │ Test case 9. FA. Time: 1651L 00:01:25 v #735 > > │ Test case 10. FB. Time: 3764L 00:01:25 v #736 > > │ Test case 11. FC. Time: 5415L 00:01:25 v #737 > > │ 00:01:25 v #738 > > │ Solution: abcde 00:01:25 v #739 > > │ Test case 1. A. Time: 3356L 00:01:25 v #740 > > │ Test case 2. B. Time: 2592L 00:01:25 v #741 > > │ Test case 3. C. Time: 2346L 00:01:25 v #742 > > │ Test case 4. CA. Time: 2997L 00:01:25 v #743 > > │ Test case 5. CB. Time: 3061L 00:01:25 v #744 > > │ Test case 6. D. Time: 4051L 00:01:25 v #745 > > │ Test case 7. E. Time: 1905L 00:01:25 v #746 > > │ Test case 8. F. Time: 1771L 00:01:25 v #747 > > │ Test case 9. FA. Time: 2175L 00:01:25 v #748 > > │ Test case 10. FB. Time: 3275L 00:01:25 v #749 > > │ Test case 11. FC. Time: 5266L 00:01:25 v #750 > > │ 00:01:25 v #751 > > │ Solution: abcdefghi 00:01:25 v #752 > > │ Test case 1. A. Time: 4492L 00:01:25 v #753 > > │ Test case 2. B. Time: 3526L 00:01:25 v #754 > > │ Test case 3. C. Time: 3583L 00:01:25 v #755 > > │ Test case 4. CA. Time: 3711L 00:01:25 v #756 > > │ Test case 5. CB. Time: 4783L 00:01:25 v #757 > > │ Test case 6. D. Time: 7557L 00:01:25 v #758 > > │ Test case 7. E. Time: 3452L 00:01:25 v #759 > > │ Test case 8. F. Time: 3050L 00:01:25 v #760 > > │ Test case 9. FA. Time: 3275L 00:01:25 v #761 > > │ Test case 10. FB. Time: 4635L 00:01:25 v #762 > > │ Test case 11. FC. Time: 5616L 00:01:25 v #763 > > │ 00:01:25 v #764 > > │ Solution: abab 00:01:25 v #765 > > │ Test case 1. A. Time: 2093L 00:01:25 v #766 > > │ Test case 2. B. Time: 1843L 00:01:25 v #767 > > │ Test case 3. C. Time: 1746L 00:01:25 v #768 > > │ Test case 4. CA. Time: 2085L 00:01:25 v #769 > > │ Test case 5. CB. Time: 2139L 00:01:25 v #770 > > │ Test case 6. D. Time: 2095L 00:01:25 v #771 > > │ Test case 7. E. Time: 1723L 00:01:25 v #772 > > │ Test case 8. F. Time: 1558L 00:01:25 v #773 > > │ Test case 9. FA. Time: 1620L 00:01:25 v #774 > > │ Test case 10. FB. Time: 2319L 00:01:25 v #775 > > │ Test case 11. FC. Time: 3918L 00:01:25 v #776 > > │ 00:01:25 v #777 > > │ Solution: aa 00:01:25 v #778 > > │ Test case 1. A. Time: 1107L 00:01:25 v #779 > > │ Test case 2. B. Time: 1241L 00:01:25 v #780 > > │ Test case 3. C. Time: 1183L 00:01:25 v #781 > > │ Test case 4. CA. Time: 1563L 00:01:25 v #782 > > │ Test case 5. CB. Time: 1525L 00:01:25 v #783 > > │ Test case 6. D. Time: 1591L 00:01:25 v #784 > > │ Test case 7. E. Time: 1327L 00:01:25 v #785 > > │ Test case 8. F. Time: 1151L 00:01:25 v #786 > > │ Test case 9. FA. Time: 1180L 00:01:25 v #787 > > │ Test case 10. FB. Time: 1733L 00:01:25 v #788 > > │ Test case 11. FC. Time: 2817L 00:01:25 v #789 > > │ 00:01:25 v #790 > > │ Solution: z 00:01:25 v #791 > > │ Test case 1. A. Time: 816L 00:01:25 v #792 > > │ Test case 2. B. Time: 745L 00:01:25 v #793 > > │ Test case 3. C. Time: 928L 00:01:25 v #794 > > │ Test case 4. CA. Time: 1375L 00:01:25 v #795 > > │ Test case 5. CB. Time: 1029L 00:01:25 v #796 > > │ Test case 6. D. Time: 852L 00:01:25 v #797 > > │ Test case 7. E. Time: 712L 00:01:25 v #798 > > │ Test case 8. F. Time: 263L 00:01:25 v #799 > > │ Test case 9. FA. Time: 232L 00:01:25 v #800 > > │ Test case 10. FB. Time: 773L 00:01:25 v #801 > > │ Test case 11. FC. Time: 1789L 00:01:25 v #802 > > │ 00:01:25 v #803 > > │ Input | Expected 00:01:25 v #804 > > 00:01:25 v #805 > > | Result 00:01:25 v #806 > > 00:01:25 v #807 > > | Best 00:01:25 v #808 > > │ --- | --- 00:01:25 v #809 > > 00:01:25 v #810 > > | --- 00:01:25 v #811 > > 00:01:25 v #812 > > | --- 00:01:25 v #813 > > │ abc | bca cab abc 00:01:25 v #814 > > 00:01:25 v #815 > > | bca cab abc 00:01:25 v #816 > > 00:01:25 v #817 > > | (8, 1517) 00:01:25 v #818 > > │ abcde | bcdea cdeab deabc eabcd abcde 00:01:25 v #819 > > | bcdea cdeab deabc eabcd abcde 00:01:25 v #820 > > | (8, 1771) 00:01:25 v #821 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd 00:01:25 v #822 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab 00:01:25 v #823 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | 00:01:25 v #824 > > (8, 3050) 00:01:25 v #825 > > │ abab | baba abab baba abab 00:01:25 v #826 > > | baba abab baba abab 00:01:25 v #827 > > | (8, 1558) 00:01:25 v #828 > > │ aa | aa aa 00:01:25 v #829 > > 00:01:25 v #830 > > | aa aa 00:01:25 v #831 > > 00:01:25 v #832 > > | (1, 1107) 00:01:25 v #833 > > │ z | z 00:01:25 v #834 > > 00:01:25 v #835 > > | z 00:01:25 v #836 > > 00:01:25 v #837 > > | (9, 232) 00:01:25 v #838 > > │ 00:01:25 v #839 > > │ Averages 00:01:25 v #840 > > │ Test case 1. Average Time: 2284L 00:01:25 v #841 > > │ Test case 2. Average Time: 1965L 00:01:25 v #842 > > │ Test case 3. Average Time: 1953L 00:01:25 v #843 > > │ Test case 4. Average Time: 2325L 00:01:25 v #844 > > │ Test case 5. Average Time: 2477L 00:01:25 v #845 > > │ Test case 6. Average Time: 3103L 00:01:25 v #846 > > │ Test case 7. Average Time: 1797L 00:01:25 v #847 > > │ Test case 8. Average Time: 1551L 00:01:25 v #848 > > │ Test case 9. Average Time: 1688L 00:01:25 v #849 > > │ Test case 10. Average Time: 2749L 00:01:25 v #850 > > │ Test case 11. Average Time: 4136L 00:01:25 v #851 > > │ 00:01:25 v #852 > > │ Ranking 00:01:25 v #853 > > │ Test case 11. Average Time: 4136L 00:01:25 v #854 > > │ Test case 6. Average Time: 3103L 00:01:25 v #855 > > │ Test case 10. Average Time: 2749L 00:01:25 v #856 > > │ Test case 5. Average Time: 2477L 00:01:25 v #857 > > │ Test case 4. Average Time: 2325L 00:01:25 v #858 > > │ Test case 1. Average Time: 2284L 00:01:25 v #859 > > │ Test case 2. Average Time: 1965L 00:01:25 v #860 > > │ Test case 3. Average Time: 1953L 00:01:25 v #861 > > │ Test case 7. Average Time: 1797L 00:01:25 v #862 > > │ Test case 9. Average Time: 1688L 00:01:25 v #863 > > │ Test case 8. Average Time: 1551L 00:01:25 v #864 > > 00:01:25 v #865 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:01:25 v #866 > > //// test 00:01:25 v #867 > > 00:01:25 v #868 > > let solutions = [[ 00:01:25 v #869 > > "A", 00:01:25 v #870 > > fun (input: string) -> 00:01:25 v #871 > > let resultList = 00:01:25 v #872 > > List.fold (fun acc x -> 00:01:25 v #873 > > let rotate (text: string) (letter: string) = (text |> 00:01:25 v #874 > > SpiralSm.slice 1 (input.Length - 1)) + letter 00:01:25 v #875 > > [[ rotate (if acc.IsEmpty then input else acc.Head) (string x) 00:01:25 v #876 > > ]] @ acc 00:01:25 v #877 > > ) [[]] (Seq.toList input) 00:01:25 v #878 > > 00:01:25 v #879 > > (resultList, "") 00:01:25 v #880 > > ||> List.foldBack (fun acc x -> x + acc + " ") 00:01:25 v #881 > > |> _.TrimEnd() 00:01:25 v #882 > > 00:01:25 v #883 > > "B", 00:01:25 v #884 > > fun input -> 00:01:25 v #885 > > input 00:01:25 v #886 > > |> Seq.toList 00:01:25 v #887 > > |> List.fold (fun (acc: string list) letter -> 00:01:25 v #888 > > let last = 00:01:25 v #889 > > if acc.IsEmpty 00:01:25 v #890 > > then input 00:01:25 v #891 > > else acc.Head 00:01:25 v #892 > > 00:01:25 v #893 > > let item = last.[[1 .. input.Length - 1]] + string letter 00:01:25 v #894 > > 00:01:25 v #895 > > item :: acc 00:01:25 v #896 > > ) [[]] 00:01:25 v #897 > > |> List.rev 00:01:25 v #898 > > |> SpiralSm.concat " " 00:01:25 v #899 > > 00:01:25 v #900 > > "C", 00:01:25 v #901 > > fun input -> 00:01:25 v #902 > > input 00:01:25 v #903 > > |> Seq.toList 00:01:25 v #904 > > |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:01:25 v #905 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:01:25 v #906 > > |> List.rev 00:01:25 v #907 > > |> List.skip 1 00:01:25 v #908 > > |> SpiralSm.concat " " 00:01:25 v #909 > > 00:01:25 v #910 > > "CA", 00:01:25 v #911 > > fun input -> 00:01:25 v #912 > > input 00:01:25 v #913 > > |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. 00:01:25 v #914 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:01:25 v #915 > > |> Seq.rev 00:01:25 v #916 > > |> Seq.skip 1 00:01:25 v #917 > > |> SpiralSm.concat " " 00:01:25 v #918 > > 00:01:25 v #919 > > "CB", 00:01:25 v #920 > > fun input -> 00:01:25 v #921 > > input 00:01:25 v #922 > > |> Seq.toArray 00:01:25 v #923 > > |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[| 00:01:25 v #924 > > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]] 00:01:25 v #925 > > |> Array.rev 00:01:25 v #926 > > |> Array.skip 1 00:01:25 v #927 > > |> SpiralSm.concat " " 00:01:25 v #928 > > 00:01:25 v #929 > > "D", 00:01:25 v #930 > > fun input -> 00:01:25 v #931 > > input 00:01:25 v #932 > > |> Seq.toList 00:01:25 v #933 > > |> fun list -> 00:01:25 v #934 > > let rec loop (acc: char list list) = function 00:01:25 v #935 > > | _ when acc.Length = list.Length -> acc 00:01:25 v #936 > > | head :: tail -> 00:01:25 v #937 > > let item = tail @ [[ head ]] 00:01:25 v #938 > > loop (item :: acc) item 00:01:25 v #939 > > | [[]] -> [[]] 00:01:25 v #940 > > loop [[]] list 00:01:25 v #941 > > |> List.rev 00:01:25 v #942 > > |> List.map (List.toArray >> String) 00:01:25 v #943 > > |> SpiralSm.concat " " 00:01:25 v #944 > > 00:01:25 v #945 > > "E", 00:01:25 v #946 > > fun input -> 00:01:25 v #947 > > input 00:01:25 v #948 > > |> Seq.toList 00:01:25 v #949 > > |> fun list -> 00:01:25 v #950 > > let rec loop (last: string) = function 00:01:25 v #951 > > | head :: tail -> 00:01:25 v #952 > > let item = last.[[1 .. input.Length - 1]] + string head 00:01:25 v #953 > > item :: loop item tail 00:01:25 v #954 > > | [[]] -> [[]] 00:01:25 v #955 > > loop input list 00:01:25 v #956 > > |> SpiralSm.concat " " 00:01:25 v #957 > > 00:01:25 v #958 > > "F", 00:01:25 v #959 > > fun input -> 00:01:25 v #960 > > Array.singleton 0 00:01:25 v #961 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:01:25 v #962 > > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:25 v #963 > > |> SpiralSm.concat " " 00:01:25 v #964 > > 00:01:25 v #965 > > "FA", 00:01:25 v #966 > > fun input -> 00:01:25 v #967 > > List.singleton 0 00:01:25 v #968 > > |> List.append [[ 1 .. input.Length - 1 ]] 00:01:25 v #969 > > |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:25 v #970 > > |> SpiralSm.concat " " 00:01:25 v #971 > > 00:01:25 v #972 > > "FB", 00:01:25 v #973 > > fun input -> 00:01:25 v #974 > > Seq.singleton 0 00:01:25 v #975 > > |> Seq.append (seq { 1 .. input.Length - 1 }) 00:01:25 v #976 > > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:25 v #977 > > |> SpiralSm.concat " " 00:01:25 v #978 > > 00:01:25 v #979 > > "FC", 00:01:25 v #980 > > fun input -> 00:01:25 v #981 > > Array.singleton 0 00:01:25 v #982 > > |> Array.append [[| 1 .. input.Length - 1 |]] 00:01:25 v #983 > > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:01:25 v #984 > > |> SpiralSm.concat " " 00:01:25 v #985 > > ]] 00:01:25 v #986 > > let testCases = seq { 00:01:25 v #987 > > "abc", "bca cab abc" 00:01:25 v #988 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:01:25 v #989 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef 00:01:25 v #990 > > hiabcdefg iabcdefgh abcdefghi" 00:01:25 v #991 > > "abab", "baba abab baba abab" 00:01:25 v #992 > > "aa", "aa aa" 00:01:25 v #993 > > "z", "z" 00:01:25 v #994 > > } 00:01:25 v #995 > > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions 00:01:25 v #996 > > testCases 00:01:25 v #997 > > rotateStringsTests 00:01:25 v #998 > > |> sortResultList 00:02:55 v #999 > > 00:02:55 v #1000 > > ── [ 1.49m - stdout ] ────────────────────────────────────────────────────────── 00:02:55 v #1001 > > │ 00:02:55 v #1002 > > │ 00:02:55 v #1003 > > │ Test: rotateStringsTests 00:02:55 v #1004 > > │ 00:02:55 v #1005 > > │ Solution: abc 00:02:55 v #1006 > > │ Test case 1. A. Time: 1103L 00:02:55 v #1007 > > │ Test case 2. B. Time: 936L 00:02:55 v #1008 > > │ Test case 3. C. Time: 921L 00:02:55 v #1009 > > │ Test case 4. CA. Time: 1148L 00:02:55 v #1010 > > │ Test case 5. CB. Time: 1019L 00:02:55 v #1011 > > │ Test case 6. D. Time: 995L 00:02:55 v #1012 > > │ Test case 7. E. Time: 789L 00:02:55 v #1013 > > │ Test case 8. F. Time: 706L 00:02:55 v #1014 > > │ Test case 9. FA. Time: 755L 00:02:55 v #1015 > > │ Test case 10. FB. Time: 1296L 00:02:55 v #1016 > > │ Test case 11. FC. Time: 1945L 00:02:55 v #1017 > > │ 00:02:55 v #1018 > > │ Solution: abcde 00:02:55 v #1019 > > │ Test case 1. A. Time: 1273L 00:02:55 v #1020 > > │ Test case 2. B. Time: 1079L 00:02:55 v #1021 > > │ Test case 3. C. Time: 1090L 00:02:55 v #1022 > > │ Test case 4. CA. Time: 1223L 00:02:55 v #1023 > > │ Test case 5. CB. Time: 1264L 00:02:55 v #1024 > > │ Test case 6. D. Time: 1571L 00:02:55 v #1025 > > │ Test case 7. E. Time: 1034L 00:02:55 v #1026 > > │ Test case 8. F. Time: 856L 00:02:55 v #1027 > > │ Test case 9. FA. Time: 1018L 00:02:55 v #1028 > > │ Test case 10. FB. Time: 1668L 00:02:55 v #1029 > > │ Test case 11. FC. Time: 2270L 00:02:55 v #1030 > > │ 00:02:55 v #1031 > > │ Solution: abcdefghi 00:02:55 v #1032 > > │ Test case 1. A. Time: 2266L 00:02:55 v #1033 > > │ Test case 2. B. Time: 1804L 00:02:55 v #1034 > > │ Test case 3. C. Time: 1794L 00:02:55 v #1035 > > │ Test case 4. CA. Time: 1915L 00:02:55 v #1036 > > │ Test case 5. CB. Time: 2047L 00:02:55 v #1037 > > │ Test case 6. D. Time: 2776L 00:02:55 v #1038 > > │ Test case 7. E. Time: 1590L 00:02:55 v #1039 > > │ Test case 8. F. Time: 1426L 00:02:55 v #1040 > > │ Test case 9. FA. Time: 1773L 00:02:55 v #1041 > > │ Test case 10. FB. Time: 1958L 00:02:55 v #1042 > > │ Test case 11. FC. Time: 2533L 00:02:55 v #1043 > > │ 00:02:55 v #1044 > > │ Solution: abab 00:02:55 v #1045 > > │ Test case 1. A. Time: 1067L 00:02:55 v #1046 > > │ Test case 2. B. Time: 842L 00:02:55 v #1047 > > │ Test case 3. C. Time: 965L 00:02:55 v #1048 > > │ Test case 4. CA. Time: 1083L 00:02:55 v #1049 > > │ Test case 5. CB. Time: 1130L 00:02:55 v #1050 > > │ Test case 6. D. Time: 1122L 00:02:55 v #1051 > > │ Test case 7. E. Time: 833L 00:02:55 v #1052 > > │ Test case 8. F. Time: 721L 00:02:55 v #1053 > > │ Test case 9. FA. Time: 854L 00:02:55 v #1054 > > │ Test case 10. FB. Time: 1376L 00:02:55 v #1055 > > │ Test case 11. FC. Time: 1925L 00:02:55 v #1056 > > │ 00:02:55 v #1057 > > │ Solution: aa 00:02:55 v #1058 > > │ Test case 1. A. Time: 739L 00:02:55 v #1059 > > │ Test case 2. B. Time: 711L 00:02:55 v #1060 > > │ Test case 3. C. Time: 736L 00:02:55 v #1061 > > │ Test case 4. CA. Time: 937L 00:02:55 v #1062 > > │ Test case 5. CB. Time: 856L 00:02:55 v #1063 > > │ Test case 6. D. Time: 749L 00:02:55 v #1064 > > │ Test case 7. E. Time: 715L 00:02:55 v #1065 > > │ Test case 8. F. Time: 601L 00:02:55 v #1066 > > │ Test case 9. FA. Time: 682L 00:02:55 v #1067 > > │ Test case 10. FB. Time: 1095L 00:02:55 v #1068 > > │ Test case 11. FC. Time: 1567L 00:02:55 v #1069 > > │ 00:02:55 v #1070 > > │ Solution: z 00:02:55 v #1071 > > │ Test case 1. A. Time: 550L 00:02:55 v #1072 > > │ Test case 2. B. Time: 471L 00:02:55 v #1073 > > │ Test case 3. C. Time: 523L 00:02:55 v #1074 > > │ Test case 4. CA. Time: 688L 00:02:55 v #1075 > > │ Test case 5. CB. Time: 599L 00:02:55 v #1076 > > │ Test case 6. D. Time: 507L 00:02:55 v #1077 > > │ Test case 7. E. Time: 457L 00:02:55 v #1078 > > │ Test case 8. F. Time: 142L 00:02:55 v #1079 > > │ Test case 9. FA. Time: 146L 00:02:55 v #1080 > > │ Test case 10. FB. Time: 407L 00:02:55 v #1081 > > │ Test case 11. FC. Time: 870L 00:02:55 v #1082 > > │ 00:02:55 v #1083 > > │ Input | Expected 00:02:55 v #1084 > > | Result 00:02:55 v #1085 > > 00:02:55 v #1086 > > | Best 00:02:55 v #1087 > > │ --- | --- 00:02:55 v #1088 > > 00:02:55 v #1089 > > | --- 00:02:55 v #1090 > > 00:02:55 v #1091 > > | --- 00:02:55 v #1092 > > │ abc | bca cab abc 00:02:55 v #1093 > > | bca cab abc 00:02:55 v #1094 > > | (8, 706) 00:02:55 v #1095 > > │ abcde | bcdea cdeab deabc eabcd abcde 00:02:55 v #1096 > > | bcdea cdeab deabc eabcd abcde 00:02:55 v #1097 > > | (8, 856) 00:02:55 v #1098 > > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 00:02:55 v #1099 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd 00:02:55 v #1100 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (8, 1426) 00:02:55 v #1101 > > │ abab | baba abab baba abab 00:02:55 v #1102 > > | baba abab baba abab 00:02:55 v #1103 > > | (8, 721) 00:02:55 v #1104 > > │ aa | aa aa 00:02:55 v #1105 > > 00:02:55 v #1106 > > | aa aa 00:02:55 v #1107 > > 00:02:55 v #1108 > > | (8, 601) 00:02:55 v #1109 > > │ z | z 00:02:55 v #1110 > > 00:02:55 v #1111 > > | z 00:02:55 v #1112 > > 00:02:55 v #1113 > > | (8, 142) 00:02:55 v #1114 > > │ 00:02:55 v #1115 > > │ Average Ranking 00:02:55 v #1116 > > │ Test case 8. Average Time: 742L 00:02:55 v #1117 > > │ Test case 9. Average Time: 871L 00:02:55 v #1118 > > │ Test case 7. Average Time: 903L 00:02:55 v #1119 > > │ Test case 2. Average Time: 973L 00:02:55 v #1120 > > │ Test case 3. Average Time: 1004L 00:02:55 v #1121 > > │ Test case 5. Average Time: 1152L 00:02:55 v #1122 > > │ Test case 4. Average Time: 1165L 00:02:55 v #1123 > > │ Test case 1. Average Time: 1166L 00:02:55 v #1124 > > │ Test case 6. Average Time: 1286L 00:02:55 v #1125 > > │ Test case 10. Average Time: 1300L 00:02:55 v #1126 > > │ Test case 11. Average Time: 1851L 00:02:55 v #1127 > > │ 00:02:55 v #1128 > > 00:02:55 v #1129 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:55 v #1130 > > │ ## rotate_strings_tests 00:02:55 v #1131 > > 00:02:55 v #1132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:55 v #1133 > > │ ``` 00:02:55 v #1134 > > │ 02:21:12 verbose #1 benchmark.run_all / {count = 00:02:55 v #1135 > > 2000000; test_name = rotate_strings_tests} 00:02:55 v #1136 > > │ 00:02:55 v #1137 > > │ 02:21:12 verbose #2 benchmark.run / {input_str = 00:02:55 v #1138 > > "abc"} 00:02:55 v #1139 > > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i 00:02:55 v #1140 > > = 1; test_name = F; time = 638} 00:02:55 v #1141 > > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i 00:02:55 v #1142 > > = 2; test_name = FA; time = 779} 00:02:55 v #1143 > > │ 00:02:55 v #1144 > > │ 02:21:14 verbose #5 benchmark.run / {input_str = 00:02:55 v #1145 > > "abcde"} 00:02:55 v #1146 > > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i 00:02:55 v #1147 > > = 1; test_name = F; time = 745} 00:02:55 v #1148 > > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i 00:02:55 v #1149 > > = 2; test_name = FA; time = 809} 00:02:55 v #1150 > > │ 00:02:55 v #1151 > > │ 02:21:16 verbose #8 benchmark.run / {input_str = 00:02:55 v #1152 > > "abcdefghi"} 00:02:55 v #1153 > > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i 00:02:55 v #1154 > > = 1; test_name = F; time = 1092} 00:02:55 v #1155 > > │ 02:21:18 verbose #10 benchmark.run / solutions.map 00:02:55 v #1156 > > {i = 2; test_name = FA; time = 1304} 00:02:55 v #1157 > > │ 00:02:55 v #1158 > > │ 02:21:18 verbose #11 benchmark.run / {input_str = 00:02:55 v #1159 > > "abab"} 00:02:55 v #1160 > > │ 02:21:19 verbose #12 benchmark.run / solutions.map 00:02:55 v #1161 > > {i = 1; test_name = F; time = 536} 00:02:55 v #1162 > > │ 02:21:20 verbose #13 benchmark.run / solutions.map 00:02:55 v #1163 > > {i = 2; test_name = FA; time = 620} 00:02:55 v #1164 > > │ 00:02:55 v #1165 > > │ 02:21:20 verbose #14 benchmark.run / {input_str = 00:02:55 v #1166 > > "aa"} 00:02:55 v #1167 > > │ 02:21:21 verbose #15 benchmark.run / solutions.map 00:02:55 v #1168 > > {i = 1; test_name = F; time = 365} 00:02:55 v #1169 > > │ 02:21:21 verbose #16 benchmark.run / solutions.map 00:02:55 v #1170 > > {i = 2; test_name = FA; time = 396} 00:02:55 v #1171 > > │ 00:02:55 v #1172 > > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"} 00:02:55 v #1173 > > │ 02:21:22 verbose #18 benchmark.run / solutions.map 00:02:55 v #1174 > > {i = 1; test_name = F; time = 158} 00:02:55 v #1175 > > │ 02:21:22 verbose #19 benchmark.run / solutions.map 00:02:55 v #1176 > > {i = 2; test_name = FA; time = 143} 00:02:55 v #1177 > > │ ``` 00:02:55 v #1178 > > │ input | expected 00:02:55 v #1179 > > 00:02:55 v #1180 > > | result 00:02:55 v #1181 > > 00:02:55 v #1182 > > | best 00:02:55 v #1183 > > │ --- | --- 00:02:55 v #1184 > > 00:02:55 v #1185 > > | --- 00:02:55 v #1186 > > 00:02:55 v #1187 > > | --- 00:02:55 v #1188 > > │ "abc" | "bca cab abc" 00:02:55 v #1189 > > | "bca cab abc" 00:02:55 v #1190 > > | 1, 638 00:02:55 v #1191 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" 00:02:55 v #1192 > > | "bcdea cdeab deabc eabcd abcde" 00:02:55 v #1193 > > | 1, 745 00:02:55 v #1194 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd 00:02:55 v #1195 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab 00:02:55 v #1196 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1092 00:02:55 v #1197 > > │ "abab" | "baba abab baba abab" 00:02:55 v #1198 > > | "baba abab baba abab" 00:02:55 v #1199 > > | 1, 536 00:02:55 v #1200 > > │ "aa" | "aa aa" 00:02:55 v #1201 > > 00:02:55 v #1202 > > | "aa aa" 00:02:55 v #1203 > > 00:02:55 v #1204 > > | 1, 365 00:02:55 v #1205 > > │ "z" | "z" 00:02:55 v #1206 > > 00:02:55 v #1207 > > | "z" 00:02:55 v #1208 > > 00:02:55 v #1209 > > | 2, 143 00:02:55 v #1210 > > │ ``` 00:02:55 v #1211 > > │ 02:21:22 verbose #20 benchmark.sort_result_list 00:02:55 v #1212 > > averages.iter / {avg = 589; i = 1} 00:02:55 v #1213 > > │ 02:21:22 verbose #21 benchmark.sort_result_list 00:02:55 v #1214 > > averages.iter / {avg = 675; i = 2} 00:02:55 v #1215 > > │ ``` 00:02:55 v #1216 > > 00:02:55 v #1217 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #1218 > > //// test 00:02:55 v #1219 > > //// timeout=60000 00:02:55 v #1220 > > 00:02:55 v #1221 > > inl get_solutions () = 00:02:55 v #1222 > > [[ 00:02:55 v #1223 > > // "A", 00:02:55 v #1224 > > // fun (input : string) => 00:02:55 v #1225 > > // let resultList = 00:02:55 v #1226 > > // List.fold (fun acc x => 00:02:55 v #1227 > > // let rotate (text : string) (letter : string) = 00:02:55 v #1228 > > text.Substring (1, input.Length - 1) + letter 00:02:55 v #1229 > > // [[ rotate (if acc.IsEmpty then input else acc.Head) 00:02:55 v #1230 > > (string x) ]] ++ acc 00:02:55 v #1231 > > // ) [[]] (Seq.toList input) 00:02:55 v #1232 > > 00:02:55 v #1233 > > // List.foldBack (fun acc x => x + acc + " ") resultList "" 00:02:55 v #1234 > > // |> fun x => x.TrimEnd () 00:02:55 v #1235 > > 00:02:55 v #1236 > > // "B", 00:02:55 v #1237 > > // fun input => 00:02:55 v #1238 > > // input 00:02:55 v #1239 > > // |> Seq.toList 00:02:55 v #1240 > > // |> List.fold (fun (acc : string list) letter => 00:02:55 v #1241 > > // let last = 00:02:55 v #1242 > > // if acc.IsEmpty 00:02:55 v #1243 > > // then input 00:02:55 v #1244 > > // else acc.Head 00:02:55 v #1245 > > 00:02:55 v #1246 > > // let item = last.[[1 .. input.Length - 1]] + string letter 00:02:55 v #1247 > > 00:02:55 v #1248 > > // item :: acc 00:02:55 v #1249 > > // ) [[]] 00:02:55 v #1250 > > // |> List.rev 00:02:55 v #1251 > > // |> SpiralSm.concat " " 00:02:55 v #1252 > > 00:02:55 v #1253 > > // "C", 00:02:55 v #1254 > > // fun input => 00:02:55 v #1255 > > // input 00:02:55 v #1256 > > // |> Seq.toList 00:02:55 v #1257 > > // |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:02:55 v #1258 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:02:55 v #1259 > > // |> List.rev 00:02:55 v #1260 > > // |> List.skip 1 00:02:55 v #1261 > > // |> SpiralSm.concat " " 00:02:55 v #1262 > > 00:02:55 v #1263 > > // "CA", 00:02:55 v #1264 > > // fun input => 00:02:55 v #1265 > > // input 00:02:55 v #1266 > > // |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. 00:02:55 v #1267 > > input.Length - 1 ]] + string letter :: acc) [[ input ]] 00:02:55 v #1268 > > // |> Seq.rev 00:02:55 v #1269 > > // |> Seq.skip 1 00:02:55 v #1270 > > // |> SpiralSm.concat " " 00:02:55 v #1271 > > 00:02:55 v #1272 > > // "CB", 00:02:55 v #1273 > > // fun input => 00:02:55 v #1274 > > // input 00:02:55 v #1275 > > // |> Seq.toArray 00:02:55 v #1276 > > // |> Array.fold (fun (acc : a _ string) letter => acc |> 00:02:55 v #1277 > > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]])) 00:02:55 v #1278 > > (a ;[[ input ]]) 00:02:55 v #1279 > > // |> Array.rev 00:02:55 v #1280 > > // |> Array.skip 1 00:02:55 v #1281 > > // |> SpiralSm.concat " " 00:02:55 v #1282 > > 00:02:55 v #1283 > > // "D", 00:02:55 v #1284 > > // fun input => 00:02:55 v #1285 > > // input 00:02:55 v #1286 > > // |> Seq.toList 00:02:55 v #1287 > > // |> fun list => 00:02:55 v #1288 > > // let rec loop (acc : list (list char)) = function 00:02:55 v #1289 > > // | _ when acc.Length = list.Length => acc 00:02:55 v #1290 > > // | head :: tail => 00:02:55 v #1291 > > // let item = tail ++ [[ head ]] 00:02:55 v #1292 > > // loop (item :: acc) item 00:02:55 v #1293 > > // | [[]] => [[]] 00:02:55 v #1294 > > // loop [[]] list 00:02:55 v #1295 > > // |> List.rev 00:02:55 v #1296 > > // |> List.map (List.toArray >> String) 00:02:55 v #1297 > > // |> SpiralSm.concat " " 00:02:55 v #1298 > > 00:02:55 v #1299 > > // "E", 00:02:55 v #1300 > > // fun input => 00:02:55 v #1301 > > // input 00:02:55 v #1302 > > // |> Seq.toList 00:02:55 v #1303 > > // |> fun list => 00:02:55 v #1304 > > // let rec loop (last : string) = function 00:02:55 v #1305 > > // | head :: tail => 00:02:55 v #1306 > > // let item = last.[[1 .. input.Length - 1]] + string 00:02:55 v #1307 > > head 00:02:55 v #1308 > > // item :: loop item tail 00:02:55 v #1309 > > // | [[]] => [[]] 00:02:55 v #1310 > > // loop input list 00:02:55 v #1311 > > // |> SpiralSm.concat " " 00:02:55 v #1312 > > 00:02:55 v #1313 > > "F", 00:02:55 v #1314 > > fun input => 00:02:55 v #1315 > > // Array.singleton 0 00:02:55 v #1316 > > // |> Array.append [[| 1 .. input.Length - 1 |]] 00:02:55 v #1317 > > // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:02:55 v #1318 > > // |> SpiralSm.concat " " 00:02:55 v #1319 > > inl input_length = input |> sm.length 00:02:55 v #1320 > > am.singleton 0i32 00:02:55 v #1321 > > |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x 00:02:55 v #1322 > > : _ int _) 00:02:55 v #1323 > > |> fun (a x) => x 00:02:55 v #1324 > > |> am'.map_base fun i => 00:02:55 v #1325 > > inl a = input |> sm'.slice i (input_length - 1) 00:02:55 v #1326 > > inl b = input |> sm'.slice 0 (i - 1) 00:02:55 v #1327 > > a +. b 00:02:55 v #1328 > > |> fun x => a x : _ int _ 00:02:55 v #1329 > > |> seq.of_array 00:02:55 v #1330 > > |> sm'.concat " " 00:02:55 v #1331 > > 00:02:55 v #1332 > > "FA", 00:02:55 v #1333 > > fun input => 00:02:55 v #1334 > > // List.singleton 0 00:02:55 v #1335 > > // |> List.append [[ 1 .. input.Length - 1 ]] 00:02:55 v #1336 > > // // |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:02:55 v #1337 > > // |> SpiralSm.concat " " 00:02:55 v #1338 > > inl input_length = input |> sm.length 00:02:55 v #1339 > > listm.singleton 0i32 00:02:55 v #1340 > > |> listm.append (listm'.init_series 1 (input_length - 1) 1) 00:02:55 v #1341 > > |> listm.map (fun i => 00:02:55 v #1342 > > inl a = input |> sm'.slice i (input_length - 1) 00:02:55 v #1343 > > inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1) 00:02:55 v #1344 > > a +. b 00:02:55 v #1345 > > ) 00:02:55 v #1346 > > |> listm'.box 00:02:55 v #1347 > > |> listm'.to_array' 00:02:55 v #1348 > > |> fun x => a x : _ int _ 00:02:55 v #1349 > > |> seq.of_array 00:02:55 v #1350 > > |> sm'.concat " " 00:02:55 v #1351 > > 00:02:55 v #1352 > > // "FB", 00:02:55 v #1353 > > // fun input => 00:02:55 v #1354 > > // Seq.singleton 0 00:02:55 v #1355 > > // // |> Seq.append (seq { 1 .. input.Length - 1 }) 00:02:55 v #1356 > > // // |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) 00:02:55 v #1357 > > // |> SpiralSm.concat " " 00:02:55 v #1358 > > 00:02:55 v #1359 > > // "FC", 00:02:55 v #1360 > > // fun input => 00:02:55 v #1361 > > // Array.singleton 0 00:02:55 v #1362 > > // |> Array.append (a ;[[ 1 .. input.Length - 1 ]]) 00:02:55 v #1363 > > //// |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i 00:02:55 v #1364 > > - 1 ]]) 00:02:55 v #1365 > > // |> SpiralSm.concat " " 00:02:55 v #1366 > > ]] 00:02:55 v #1367 > > 00:02:55 v #1368 > > inl rec rotate_strings_tests () = 00:02:55 v #1369 > > inl test_cases = [[ 00:02:55 v #1370 > > "abc", "bca cab abc" 00:02:55 v #1371 > > "abcde", "bcdea cdeab deabc eabcd abcde" 00:02:55 v #1372 > > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde 00:02:55 v #1373 > > ghiabcdef hiabcdefg iabcdefgh abcdefghi" 00:02:55 v #1374 > > "abab", "baba abab baba abab" 00:02:55 v #1375 > > "aa", "aa aa" 00:02:55 v #1376 > > "z", "z" 00:02:55 v #1377 > > ]] 00:02:55 v #1378 > > 00:02:55 v #1379 > > inl solutions = get_solutions () 00:02:55 v #1380 > > 00:02:55 v #1381 > > // inl is_fast () = true 00:02:55 v #1382 > > 00:02:55 v #1383 > > inl count = 00:02:55 v #1384 > > if is_fast () 00:02:55 v #1385 > > then 1000i32 00:02:55 v #1386 > > else 2000000i32 00:02:55 v #1387 > > 00:02:55 v #1388 > > run_all (reflection.nameof { rotate_strings_tests }) count solutions 00:02:55 v #1389 > > test_cases 00:02:55 v #1390 > > |> sort_result_list 00:02:55 v #1391 > > 00:02:55 v #1392 > > rotate_strings_tests () 00:03:09 v #1393 > > 00:03:09 v #1394 > > ── [ 13.80s - stdout ] ───────────────────────────────────────────────────────── 00:03:09 v #1395 > > │ 00:03:09 v #1396 > > │ ``` 00:03:09 v #1397 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = 00:03:09 v #1398 > > rotate_strings_tests; count = 2000000 } 00:03:09 v #1399 > > │ 00:03:09 v #1400 > > │ 00:00:00 v #2 benchmark.run / { input_str = "abc" } 00:03:09 v #1401 > > │ 00:00:01 v #3 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1402 > > test_name = F; time = 877 } 00:03:09 v #1403 > > │ 00:00:02 v #4 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1404 > > test_name = FA; time = 1005 } 00:03:09 v #1405 > > │ 00:03:09 v #1406 > > │ 00:00:02 v #5 benchmark.run / { input_str = "abcde" } 00:03:09 v #1407 > > │ 00:00:03 v #6 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1408 > > test_name = F; time = 800 } 00:03:09 v #1409 > > │ 00:00:04 v #7 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1410 > > test_name = FA; time = 1014 } 00:03:09 v #1411 > > │ 00:03:09 v #1412 > > │ 00:00:04 v #8 benchmark.run / { input_str = "abcdefghi" 00:03:09 v #1413 > > } 00:03:09 v #1414 > > │ 00:00:06 v #9 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1415 > > test_name = F; time = 1414 } 00:03:09 v #1416 > > │ 00:00:08 v #10 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1417 > > test_name = FA; time = 1833 } 00:03:09 v #1418 > > │ 00:03:09 v #1419 > > │ 00:00:08 v #11 benchmark.run / { input_str = "abab" } 00:03:09 v #1420 > > │ 00:00:09 v #12 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1421 > > test_name = F; time = 694 } 00:03:09 v #1422 > > │ 00:00:10 v #13 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1423 > > test_name = FA; time = 855 } 00:03:09 v #1424 > > │ 00:03:09 v #1425 > > │ 00:00:10 v #14 benchmark.run / { input_str = "aa" } 00:03:09 v #1426 > > │ 00:00:11 v #15 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1427 > > test_name = F; time = 561 } 00:03:09 v #1428 > > │ 00:00:11 v #16 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1429 > > test_name = FA; time = 626 } 00:03:09 v #1430 > > │ 00:03:09 v #1431 > > │ 00:00:11 v #17 benchmark.run / { input_str = "z" } 00:03:09 v #1432 > > │ 00:00:12 v #18 benchmark.run / solutions.map / { i = 1; 00:03:09 v #1433 > > test_name = F; time = 109 } 00:03:09 v #1434 > > │ 00:00:12 v #19 benchmark.run / solutions.map / { i = 2; 00:03:09 v #1435 > > test_name = FA; time = 128 } 00:03:09 v #1436 > > │ ``` 00:03:09 v #1437 > > │ input | expected 00:03:09 v #1438 > > 00:03:09 v #1439 > > | result 00:03:09 v #1440 > > 00:03:09 v #1441 > > | best 00:03:09 v #1442 > > │ --- | --- 00:03:09 v #1443 > > 00:03:09 v #1444 > > | --- 00:03:09 v #1445 > > 00:03:09 v #1446 > > | --- 00:03:09 v #1447 > > │ "abc" | "bca cab abc" 00:03:09 v #1448 > > | "bca cab abc" 00:03:09 v #1449 > > | 1, 877 00:03:09 v #1450 > > │ "abcde" | "bcdea cdeab deabc eabcd abcde" 00:03:09 v #1451 > > | "bcdea cdeab deabc eabcd abcde" 00:03:09 v #1452 > > | 1, 800 00:03:09 v #1453 > > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd 00:03:09 v #1454 > > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab 00:03:09 v #1455 > > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1414 00:03:09 v #1456 > > │ "abab" | "baba abab baba abab" 00:03:09 v #1457 > > | "baba abab baba abab" 00:03:09 v #1458 > > | 1, 694 00:03:09 v #1459 > > │ "aa" | "aa aa" 00:03:09 v #1460 > > 00:03:09 v #1461 > > | "aa aa" 00:03:09 v #1462 > > 00:03:09 v #1463 > > | 1, 561 00:03:09 v #1464 > > │ "z" | "z" 00:03:09 v #1465 > > 00:03:09 v #1466 > > | "z" 00:03:09 v #1467 > > 00:03:09 v #1468 > > | 1, 109 00:03:09 v #1469 > > │ ``` 00:03:09 v #1470 > > │ 00:00:12 v #20 benchmark.sort_result_list 00:03:09 v #1471 > > averages.iter / { i = 1; avg = 742 } 00:03:09 v #1472 > > │ 00:00:12 v #21 benchmark.sort_result_list 00:03:09 v #1473 > > averages.iter / { i = 2; avg = 910 } 00:03:09 v #1474 > > │ ``` 00:03:09 v #1475 > > │ 00:03:09 v #1476 > > 00:03:09 v #1477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 v #1478 > > //// test 00:03:09 v #1479 > > 00:03:09 v #1480 > > // rotate_strings_tests () 00:03:09 v #1481 > > () 00:03:09 v #1482 > > 00:03:09 v #1483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 v #1484 > > │ ## binary_search_tests 00:03:09 v #1485 > > 00:03:09 v #1486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:09 v #1487 > > │ ``` 00:03:09 v #1488 > > │ 02:19:29 verbose #1 benchmark.run_all / {count = 00:03:09 v #1489 > > 10000000; test_name = binary_search_tests} 00:03:09 v #1490 > > │ 00:03:09 v #1491 > > │ 02:19:29 verbose #2 benchmark.run / {input_str = 00:03:09 v #1492 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} 00:03:09 v #1493 > > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i 00:03:09 v #1494 > > = 1; test_name = semi_open_1; time = 662} 00:03:09 v #1495 > > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i 00:03:09 v #1496 > > = 2; test_name = closed_1; time = 619} 00:03:09 v #1497 > > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i 00:03:09 v #1498 > > = 3; test_name = semi_open_2; time = 644} 00:03:09 v #1499 > > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i 00:03:09 v #1500 > > = 4; test_name = closed_2; time = 610} 00:03:09 v #1501 > > │ 00:03:09 v #1502 > > │ 02:19:32 verbose #7 benchmark.run / {input_str = 00:03:09 v #1503 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} 00:03:09 v #1504 > > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i 00:03:09 v #1505 > > = 1; test_name = semi_open_1; time = 607} 00:03:09 v #1506 > > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i 00:03:09 v #1507 > > = 2; test_name = closed_1; time = 559} 00:03:09 v #1508 > > │ 02:19:34 verbose #10 benchmark.run / solutions.map 00:03:09 v #1509 > > {i = 3; test_name = semi_open_2; time = 612} 00:03:09 v #1510 > > │ 02:19:35 verbose #11 benchmark.run / solutions.map 00:03:09 v #1511 > > {i = 4; test_name = closed_2; time = 577} 00:03:09 v #1512 > > │ 00:03:09 v #1513 > > │ 02:19:35 verbose #12 benchmark.run / {input_str = 00:03:09 v #1514 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} 00:03:09 v #1515 > > │ 02:19:35 verbose #13 benchmark.run / solutions.map 00:03:09 v #1516 > > {i = 1; test_name = semi_open_1; time = 550} 00:03:09 v #1517 > > │ 02:19:36 verbose #14 benchmark.run / solutions.map 00:03:09 v #1518 > > {i = 2; test_name = closed_1; time = 580} 00:03:09 v #1519 > > │ 02:19:37 verbose #15 benchmark.run / solutions.map 00:03:09 v #1520 > > {i = 3; test_name = semi_open_2; time = 624} 00:03:09 v #1521 > > │ 02:19:37 verbose #16 benchmark.run / solutions.map 00:03:09 v #1522 > > {i = 4; test_name = closed_2; time = 590} 00:03:09 v #1523 > > │ 00:03:09 v #1524 > > │ 02:19:37 verbose #17 benchmark.run / {input_str = 00:03:09 v #1525 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} 00:03:09 v #1526 > > │ 02:19:38 verbose #18 benchmark.run / solutions.map 00:03:09 v #1527 > > {i = 1; test_name = semi_open_1; time = 574} 00:03:09 v #1528 > > │ 02:19:39 verbose #19 benchmark.run / solutions.map 00:03:09 v #1529 > > {i = 2; test_name = closed_1; time = 577} 00:03:09 v #1530 > > │ 02:19:39 verbose #20 benchmark.run / solutions.map 00:03:09 v #1531 > > {i = 3; test_name = semi_open_2; time = 582} 00:03:09 v #1532 > > │ 02:19:40 verbose #21 benchmark.run / solutions.map 00:03:09 v #1533 > > {i = 4; test_name = closed_2; time = 585} 00:03:09 v #1534 > > │ 00:03:09 v #1535 > > │ 02:19:40 verbose #22 benchmark.run / {input_str = 00:03:09 v #1536 > > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)} 00:03:09 v #1537 > > │ 02:19:41 verbose #23 benchmark.run / solutions.map 00:03:09 v #1538 > > {i = 1; test_name = semi_open_1; time = 610} 00:03:09 v #1539 > > │ 02:19:42 verbose #24 benchmark.run / solutions.map 00:03:09 v #1540 > > {i = 2; test_name = closed_1; time = 672} 00:03:09 v #1541 > > │ 02:19:42 verbose #25 benchmark.run / solutions.map 00:03:09 v #1542 > > {i = 3; test_name = semi_open_2; time = 636} 00:03:09 v #1543 > > │ 02:19:43 verbose #26 benchmark.run / solutions.map 00:03:09 v #1544 > > {i = 4; test_name = closed_2; time = 629} 00:03:09 v #1545 > > │ 00:03:09 v #1546 > > │ 02:19:43 verbose #27 benchmark.run / {input_str = 00:03:09 v #1547 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} 00:03:09 v #1548 > > │ 02:19:44 verbose #28 benchmark.run / solutions.map 00:03:09 v #1549 > > {i = 1; test_name = semi_open_1; time = 599} 00:03:09 v #1550 > > │ 02:19:44 verbose #29 benchmark.run / solutions.map 00:03:09 v #1551 > > {i = 2; test_name = closed_1; time = 561} 00:03:09 v #1552 > > │ 02:19:45 verbose #30 benchmark.run / solutions.map 00:03:09 v #1553 > > {i = 3; test_name = semi_open_2; time = 604} 00:03:09 v #1554 > > │ 02:19:46 verbose #31 benchmark.run / solutions.map 00:03:09 v #1555 > > {i = 4; test_name = closed_2; time = 573} 00:03:09 v #1556 > > │ 00:03:09 v #1557 > > │ 02:19:46 verbose #32 benchmark.run / {input_str = 00:03:09 v #1558 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} 00:03:09 v #1559 > > │ 02:19:47 verbose #33 benchmark.run / solutions.map 00:03:09 v #1560 > > {i = 1; test_name = semi_open_1; time = 635} 00:03:09 v #1561 > > │ 02:19:47 verbose #34 benchmark.run / solutions.map 00:03:09 v #1562 > > {i = 2; test_name = closed_1; time = 603} 00:03:09 v #1563 > > │ 02:19:48 verbose #35 benchmark.run / solutions.map 00:03:09 v #1564 > > {i = 3; test_name = semi_open_2; time = 644} 00:03:09 v #1565 > > │ 02:19:49 verbose #36 benchmark.run / solutions.map 00:03:09 v #1566 > > {i = 4; test_name = closed_2; time = 628} 00:03:09 v #1567 > > │ 00:03:09 v #1568 > > │ 02:19:49 verbose #37 benchmark.run / {input_str = 00:03:09 v #1569 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} 00:03:09 v #1570 > > │ 02:19:49 verbose #38 benchmark.run / solutions.map 00:03:09 v #1571 > > {i = 1; test_name = semi_open_1; time = 643} 00:03:09 v #1572 > > │ 02:19:50 verbose #39 benchmark.run / solutions.map 00:03:09 v #1573 > > {i = 2; test_name = closed_1; time = 606} 00:03:09 v #1574 > > │ 02:19:51 verbose #40 benchmark.run / solutions.map 00:03:09 v #1575 > > {i = 3; test_name = semi_open_2; time = 636} 00:03:09 v #1576 > > │ 02:19:52 verbose #41 benchmark.run / solutions.map 00:03:09 v #1577 > > {i = 4; test_name = closed_2; time = 624} 00:03:09 v #1578 > > │ 00:03:09 v #1579 > > │ 02:19:52 verbose #42 benchmark.run / {input_str = 00:03:09 v #1580 > > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} 00:03:09 v #1581 > > │ 02:19:52 verbose #43 benchmark.run / solutions.map 00:03:09 v #1582 > > {i = 1; test_name = semi_open_1; time = 689} 00:03:09 v #1583 > > │ 02:19:53 verbose #44 benchmark.run / solutions.map 00:03:09 v #1584 > > {i = 2; test_name = closed_1; time = 613} 00:03:09 v #1585 > > │ 02:19:54 verbose #45 benchmark.run / solutions.map 00:03:09 v #1586 > > {i = 3; test_name = semi_open_2; time = 623} 00:03:09 v #1587 > > │ 02:19:55 verbose #46 benchmark.run / solutions.map 00:03:09 v #1588 > > {i = 4; test_name = closed_2; time = 613} 00:03:09 v #1589 > > │ 00:03:09 v #1590 > > │ 02:19:55 verbose #47 benchmark.run / {input_str = 00:03:09 v #1591 > > struct ([|1; 2; 3; 4...100; ...|], 60, 100)} 00:03:09 v #1592 > > │ 02:19:55 verbose #48 benchmark.run / solutions.map 00:03:09 v #1593 > > {i = 1; test_name = semi_open_1; time = 630} 00:03:09 v #1594 > > │ 02:19:56 verbose #49 benchmark.run / solutions.map 00:03:09 v #1595 > > {i = 2; test_name = closed_1; time = 633} 00:03:09 v #1596 > > │ 02:19:57 verbose #50 benchmark.run / solutions.map 00:03:09 v #1597 > > {i = 3; test_name = semi_open_2; time = 653} 00:03:09 v #1598 > > │ 02:19:58 verbose #51 benchmark.run / solutions.map 00:03:09 v #1599 > > {i = 4; test_name = closed_2; time = 646} 00:03:09 v #1600 > > │ ``` 00:03:09 v #1601 > > │ input | expected | result | 00:03:09 v #1602 > > best 00:03:09 v #1603 > > │ --- | --- | --- | 00:03:09 v #1604 > > --- 00:03:09 v #1605 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 00:03:09 v #1606 > > 4, 610 00:03:09 v #1607 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 00:03:09 v #1608 > > 2, 559 00:03:09 v #1609 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 00:03:09 v #1610 > > 1, 550 00:03:09 v #1611 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 00:03:09 v #1612 > > 1, 574 00:03:09 v #1613 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US4_0 59 | US4_0 59 | 00:03:09 v #1614 > > 1, 610 00:03:09 v #1615 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | 00:03:09 v #1616 > > 2, 561 00:03:09 v #1617 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | 00:03:09 v #1618 > > 2, 603 00:03:09 v #1619 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | 00:03:09 v #1620 > > 2, 606 00:03:09 v #1621 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | 00:03:09 v #1622 > > 2, 613 00:03:09 v #1623 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US4_0 59 | US4_0 59 | 00:03:09 v #1624 > > 1, 630 00:03:09 v #1625 > > │ ``` 00:03:09 v #1626 > > │ 02:19:58 verbose #52 benchmark.sort_result_list 00:03:09 v #1627 > > averages.iter / {avg = 602; i = 2} 00:03:09 v #1628 > > │ 02:19:58 verbose #53 benchmark.sort_result_list 00:03:09 v #1629 > > averages.iter / {avg = 607; i = 4} 00:03:09 v #1630 > > │ 02:19:58 verbose #54 benchmark.sort_result_list 00:03:09 v #1631 > > averages.iter / {avg = 619; i = 1} 00:03:09 v #1632 > > │ 02:19:58 verbose #55 benchmark.sort_result_list 00:03:09 v #1633 > > averages.iter / {avg = 625; i = 3} 00:03:09 v #1634 > > │ ``` 00:03:09 v #1635 > > 00:03:09 v #1636 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:09 v #1637 > > //// test 00:03:09 v #1638 > > //// timeout=90000 00:03:09 v #1639 > > 00:03:09 v #1640 > > inl binary_search_semi_open_1 arr target left right = 00:03:09 v #1641 > > inl rec body left right = 00:03:09 v #1642 > > if left >= right 00:03:09 v #1643 > > then None 00:03:09 v #1644 > > else 00:03:09 v #1645 > > inl mid = (left + right) / 2 00:03:09 v #1646 > > inl item = index arr mid 00:03:09 v #1647 > > if item = target 00:03:09 v #1648 > > then Some mid 00:03:09 v #1649 > > elif item < target 00:03:09 v #1650 > > then loop (mid + 1) right 00:03:09 v #1651 > > else loop left mid 00:03:09 v #1652 > > and inl loop left right = 00:03:09 v #1653 > > if var_is right |> not 00:03:09 v #1654 > > then body left right 00:03:09 v #1655 > > else 00:03:09 v #1656 > > inl left = dyn left 00:03:09 v #1657 > > join body left right 00:03:09 v #1658 > > loop left right 00:03:09 v #1659 > > 00:03:09 v #1660 > > inl binary_search_closed_1 arr target left right = 00:03:09 v #1661 > > inl rec body left right = 00:03:09 v #1662 > > if left > right 00:03:09 v #1663 > > then None 00:03:09 v #1664 > > else 00:03:09 v #1665 > > inl mid = (left + right) / 2 00:03:09 v #1666 > > inl item = index arr mid 00:03:09 v #1667 > > if item = target 00:03:09 v #1668 > > then Some mid 00:03:09 v #1669 > > elif item < target 00:03:09 v #1670 > > then loop (mid + 1) right 00:03:09 v #1671 > > else loop left (mid - 1) 00:03:09 v #1672 > > and inl loop left right = 00:03:09 v #1673 > > if var_is right |> not 00:03:09 v #1674 > > then body left right 00:03:09 v #1675 > > else 00:03:09 v #1676 > > inl left = dyn left 00:03:09 v #1677 > > join body left right 00:03:09 v #1678 > > loop left right 00:03:09 v #1679 > > 00:03:09 v #1680 > > inl binary_search_semi_open_2 arr target left right = 00:03:09 v #1681 > > let rec body left right = 00:03:09 v #1682 > > if left >= right 00:03:09 v #1683 > > then None 00:03:09 v #1684 > > else 00:03:09 v #1685 > > inl mid = (left + right) / 2 00:03:09 v #1686 > > inl item = index arr mid 00:03:09 v #1687 > > if item = target 00:03:09 v #1688 > > then Some mid 00:03:09 v #1689 > > elif item < target 00:03:09 v #1690 > > then loop (mid + 1) right 00:03:09 v #1691 > > else loop left mid 00:03:09 v #1692 > > and inl loop left right = body left right 00:03:09 v #1693 > > loop left right 00:03:09 v #1694 > > 00:03:09 v #1695 > > inl binary_search_closed_2 arr target left right = 00:03:09 v #1696 > > let rec body left right = 00:03:09 v #1697 > > if left > right 00:03:09 v #1698 > > then None 00:03:09 v #1699 > > else 00:03:09 v #1700 > > inl mid = (left + right) / 2 00:03:09 v #1701 > > inl item = index arr mid 00:03:09 v #1702 > > if item = target 00:03:09 v #1703 > > then Some mid 00:03:09 v #1704 > > elif item < target 00:03:09 v #1705 > > then loop (mid + 1) right 00:03:09 v #1706 > > else loop left (mid - 1) 00:03:09 v #1707 > > and inl loop left right = body left right 00:03:09 v #1708 > > loop left right 00:03:09 v #1709 > > 00:03:09 v #1710 > > inl get_solutions () = 00:03:09 v #1711 > > [[ 00:03:09 v #1712 > > "semi_open_1", 00:03:09 v #1713 > > fun (arr, (target, len)) => 00:03:09 v #1714 > > binary_search_semi_open_1 arr target 0 len 00:03:09 v #1715 > > 00:03:09 v #1716 > > "closed_1", 00:03:09 v #1717 > > fun (arr, (target, len)) => 00:03:09 v #1718 > > binary_search_closed_1 arr target 0 (len - 1) 00:03:09 v #1719 > > 00:03:09 v #1720 > > "semi_open_2", 00:03:09 v #1721 > > fun (arr, (target, len)) => 00:03:09 v #1722 > > binary_search_semi_open_2 arr target 0 len 00:03:09 v #1723 > > 00:03:09 v #1724 > > "closed_2", 00:03:09 v #1725 > > fun (arr, (target, len)) => 00:03:09 v #1726 > > binary_search_closed_2 arr target 0 (len - 1) 00:03:09 v #1727 > > ]] 00:03:09 v #1728 > > 00:03:09 v #1729 > > inl rec binary_search_tests () = 00:03:09 v #1730 > > inl arr_with_len target len arr = 00:03:09 v #1731 > > arr, (target, (len |> optionm'.default_with fun () => length arr)) 00:03:09 v #1732 > > 00:03:09 v #1733 > > inl test_cases = [[ 00:03:09 v #1734 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32) 00:03:09 v #1735 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32) 00:03:09 v #1736 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32) 00:03:09 v #1737 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None 00:03:09 v #1738 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:03:09 v #1739 > > 60 None), (Some 59) 00:03:09 v #1740 > > 00:03:09 v #1741 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some 00:03:09 v #1742 > > 3i32) 00:03:09 v #1743 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some 00:03:09 v #1744 > > 0i32) 00:03:09 v #1745 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some 00:03:09 v #1746 > > 6i32) 00:03:09 v #1747 > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None 00:03:09 v #1748 > > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len 00:03:09 v #1749 > > 60 (Some 100)), (Some 59) 00:03:09 v #1750 > > ]] 00:03:09 v #1751 > > 00:03:09 v #1752 > > inl solutions = get_solutions () 00:03:09 v #1753 > > 00:03:09 v #1754 > > // inl is_fast () = true 00:03:09 v #1755 > > 00:03:09 v #1756 > > inl count = 00:03:09 v #1757 > > if is_fast () 00:03:09 v #1758 > > then 1000i32 00:03:09 v #1759 > > else 10000000i32 00:03:09 v #1760 > > 00:03:09 v #1761 > > run_all (reflection.nameof { binary_search_tests }) count solutions 00:03:09 v #1762 > > test_cases 00:03:09 v #1763 > > |> sort_result_list 00:03:09 v #1764 > > 00:03:09 v #1765 > > 00:03:09 v #1766 > > let main () = 00:03:09 v #1767 > > binary_search_tests () 00:03:20 v #1768 > > 00:03:20 v #1769 > > ── [ 11.49s - stdout ] ───────────────────────────────────────────────────────── 00:03:20 v #1770 > > │ 00:03:20 v #1771 > > │ ``` 00:03:20 v #1772 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = 00:03:20 v #1773 > > binary_search_tests; count = 10000000 } 00:03:20 v #1774 > > │ 00:03:20 v #1775 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1; 00:03:20 v #1776 > > 3; 4; 6; 8; 9; 11|], 6, 7) } 00:03:20 v #1777 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1778 > > test_name = semi_open_1; time = 196 } 00:03:20 v #1779 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1780 > > test_name = closed_1; time = 157 } 00:03:20 v #1781 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1782 > > test_name = semi_open_2; time = 154 } 00:03:20 v #1783 > > │ 00:00:01 v #6 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1784 > > test_name = closed_2; time = 157 } 00:03:20 v #1785 > > │ 00:03:20 v #1786 > > │ 00:00:01 v #7 benchmark.run / { input_str = struct ([|1; 00:03:20 v #1787 > > 3; 4; 6; 8; 9; 11|], 1, 7) } 00:03:20 v #1788 > > │ 00:00:01 v #8 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1789 > > test_name = semi_open_1; time = 253 } 00:03:20 v #1790 > > │ 00:00:02 v #9 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1791 > > test_name = closed_1; time = 291 } 00:03:20 v #1792 > > │ 00:00:02 v #10 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1793 > > test_name = semi_open_2; time = 125 } 00:03:20 v #1794 > > │ 00:00:02 v #11 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1795 > > test_name = closed_2; time = 85 } 00:03:20 v #1796 > > │ 00:03:20 v #1797 > > │ 00:00:02 v #12 benchmark.run / { input_str = struct 00:03:20 v #1798 > > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } 00:03:20 v #1799 > > │ 00:00:02 v #13 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1800 > > test_name = semi_open_1; time = 85 } 00:03:20 v #1801 > > │ 00:00:03 v #14 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1802 > > test_name = closed_1; time = 85 } 00:03:20 v #1803 > > │ 00:00:03 v #15 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1804 > > test_name = semi_open_2; time = 84 } 00:03:20 v #1805 > > │ 00:00:03 v #16 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1806 > > test_name = closed_2; time = 85 } 00:03:20 v #1807 > > │ 00:03:20 v #1808 > > │ 00:00:03 v #17 benchmark.run / { input_str = struct 00:03:20 v #1809 > > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } 00:03:20 v #1810 > > │ 00:00:03 v #18 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1811 > > test_name = semi_open_1; time = 103 } 00:03:20 v #1812 > > │ 00:00:04 v #19 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1813 > > test_name = closed_1; time = 106 } 00:03:20 v #1814 > > │ 00:00:04 v #20 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1815 > > test_name = semi_open_2; time = 105 } 00:03:20 v #1816 > > │ 00:00:04 v #21 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1817 > > test_name = closed_2; time = 107 } 00:03:20 v #1818 > > │ 00:03:20 v #1819 > > │ 00:00:04 v #22 benchmark.run / { input_str = struct 00:03:20 v #1820 > > ([|1; 2; 3; 4...00; ...|], 60, 1000) } 00:03:20 v #1821 > > │ 00:00:04 v #23 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1822 > > test_name = semi_open_1; time = 132 } 00:03:20 v #1823 > > │ 00:00:05 v #24 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1824 > > test_name = closed_1; time = 143 } 00:03:20 v #1825 > > │ 00:00:05 v #25 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1826 > > test_name = semi_open_2; time = 131 } 00:03:20 v #1827 > > │ 00:00:05 v #26 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1828 > > test_name = closed_2; time = 145 } 00:03:20 v #1829 > > │ 00:03:20 v #1830 > > │ 00:00:05 v #27 benchmark.run / { input_str = struct 00:03:20 v #1831 > > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) } 00:03:20 v #1832 > > │ 00:00:05 v #28 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1833 > > test_name = semi_open_1; time = 88 } 00:03:20 v #1834 > > │ 00:00:06 v #29 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1835 > > test_name = closed_1; time = 89 } 00:03:20 v #1836 > > │ 00:00:06 v #30 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1837 > > test_name = semi_open_2; time = 88 } 00:03:20 v #1838 > > │ 00:00:06 v #31 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1839 > > test_name = closed_2; time = 89 } 00:03:20 v #1840 > > │ 00:03:20 v #1841 > > │ 00:00:06 v #32 benchmark.run / { input_str = struct 00:03:20 v #1842 > > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) } 00:03:20 v #1843 > > │ 00:00:06 v #33 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1844 > > test_name = semi_open_1; time = 98 } 00:03:20 v #1845 > > │ 00:00:07 v #34 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1846 > > test_name = closed_1; time = 84 } 00:03:20 v #1847 > > │ 00:00:07 v #35 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1848 > > test_name = semi_open_2; time = 82 } 00:03:20 v #1849 > > │ 00:00:07 v #36 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1850 > > test_name = closed_2; time = 85 } 00:03:20 v #1851 > > │ 00:03:20 v #1852 > > │ 00:00:07 v #37 benchmark.run / { input_str = struct 00:03:20 v #1853 > > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } 00:03:20 v #1854 > > │ 00:00:07 v #38 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1855 > > test_name = semi_open_1; time = 84 } 00:03:20 v #1856 > > │ 00:00:08 v #39 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1857 > > test_name = closed_1; time = 85 } 00:03:20 v #1858 > > │ 00:00:08 v #40 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1859 > > test_name = semi_open_2; time = 89 } 00:03:20 v #1860 > > │ 00:00:08 v #41 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1861 > > test_name = closed_2; time = 86 } 00:03:20 v #1862 > > │ 00:03:20 v #1863 > > │ 00:00:08 v #42 benchmark.run / { input_str = struct 00:03:20 v #1864 > > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } 00:03:20 v #1865 > > │ 00:00:08 v #43 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1866 > > test_name = semi_open_1; time = 87 } 00:03:20 v #1867 > > │ 00:00:09 v #44 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1868 > > test_name = closed_1; time = 89 } 00:03:20 v #1869 > > │ 00:00:09 v #45 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1870 > > test_name = semi_open_2; time = 89 } 00:03:20 v #1871 > > │ 00:00:09 v #46 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1872 > > test_name = closed_2; time = 90 } 00:03:20 v #1873 > > │ 00:03:20 v #1874 > > │ 00:00:09 v #47 benchmark.run / { input_str = struct 00:03:20 v #1875 > > ([|1; 2; 3; 4...100; ...|], 60, 100) } 00:03:20 v #1876 > > │ 00:00:09 v #48 benchmark.run / solutions.map / { i = 1; 00:03:20 v #1877 > > test_name = semi_open_1; time = 102 } 00:03:20 v #1878 > > │ 00:00:09 v #49 benchmark.run / solutions.map / { i = 2; 00:03:20 v #1879 > > test_name = closed_1; time = 108 } 00:03:20 v #1880 > > │ 00:00:10 v #50 benchmark.run / solutions.map / { i = 3; 00:03:20 v #1881 > > test_name = semi_open_2; time = 102 } 00:03:20 v #1882 > > │ 00:00:10 v #51 benchmark.run / solutions.map / { i = 4; 00:03:20 v #1883 > > test_name = closed_2; time = 105 } 00:03:20 v #1884 > > │ ``` 00:03:20 v #1885 > > │ input | expected | result | 00:03:20 v #1886 > > best 00:03:20 v #1887 > > │ --- | --- | --- | 00:03:20 v #1888 > > --- 00:03:20 v #1889 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US6_0 3 | US6_0 3 | 00:03:20 v #1890 > > 3, 154 00:03:20 v #1891 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US6_0 0 | US6_0 0 | 00:03:20 v #1892 > > 4, 85 00:03:20 v #1893 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US6_0 6 | US6_0 6 | 00:03:20 v #1894 > > 3, 84 00:03:20 v #1895 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US6_1 | US6_1 | 00:03:20 v #1896 > > 1, 103 00:03:20 v #1897 > > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US6_0 59 | US6_0 59 | 00:03:20 v #1898 > > 3, 131 00:03:20 v #1899 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US6_0 3 | US6_0 3 | 00:03:20 v #1900 > > 1, 88 00:03:20 v #1901 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US6_0 0 | US6_0 0 | 00:03:20 v #1902 > > 3, 82 00:03:20 v #1903 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US6_0 6 | US6_0 6 | 00:03:20 v #1904 > > 1, 84 00:03:20 v #1905 > > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US6_1 | US6_1 | 00:03:20 v #1906 > > 1, 87 00:03:20 v #1907 > > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US6_0 59 | US6_0 59 | 00:03:20 v #1908 > > 1, 102 00:03:20 v #1909 > > │ ``` 00:03:20 v #1910 > > │ 00:00:10 v #52 benchmark.sort_result_list 00:03:20 v #1911 > > averages.iter / { i = 4; avg = 103 } 00:03:20 v #1912 > > │ 00:00:10 v #53 benchmark.sort_result_list 00:03:20 v #1913 > > averages.iter / { i = 3; avg = 104 } 00:03:20 v #1914 > > │ 00:00:10 v #54 benchmark.sort_result_list 00:03:20 v #1915 > > averages.iter / { i = 1; avg = 122 } 00:03:20 v #1916 > > │ 00:00:10 v #55 benchmark.sort_result_list 00:03:20 v #1917 > > averages.iter / { i = 2; avg = 123 } 00:03:20 v #1918 > > │ ``` 00:03:20 v #1919 > > │ 00:03:20 v #1920 > > 00:03:20 v #1921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 v #1922 > > │ ## returnLettersWithOddCountTests 00:03:20 v #1923 > > 00:03:20 v #1924 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 v #1925 > > │ Test: ReturnLettersWithOddCount 00:03:20 v #1926 > > │ 00:03:20 v #1927 > > │ Solution: 1 00:03:20 v #1928 > > │ Test case 1. A. Time: 645L 00:03:20 v #1929 > > │ 00:03:20 v #1930 > > │ Solution: 2 00:03:20 v #1931 > > │ Test case 1. A. Time: 663L 00:03:20 v #1932 > > │ 00:03:20 v #1933 > > │ Solution: 3 00:03:20 v #1934 > > │ Test case 1. A. Time: 680L 00:03:20 v #1935 > > │ 00:03:20 v #1936 > > │ Solution: 9 00:03:20 v #1937 > > │ Test case 1. A. Time: 730L 00:03:20 v #1938 > > │ 00:03:20 v #1939 > > │ Solution: 10 00:03:20 v #1940 > > │ Test case 1. A. Time: 815L 00:03:20 v #1941 > > │ 00:03:20 v #1942 > > │ Input | Expected | Result | Best 00:03:20 v #1943 > > │ --- | --- | --- | --- 00:03:20 v #1944 > > │ 1 | a | a | (1, 645) 00:03:20 v #1945 > > │ 2 | ba | ba | (1, 663) 00:03:20 v #1946 > > │ 3 | aaa | aaa | (1, 680) 00:03:20 v #1947 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 730) 00:03:20 v #1948 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 815) 00:03:20 v #1949 > > │ 00:03:20 v #1950 > > │ Averages 00:03:20 v #1951 > > │ Test case 1. Average Time: 706L 00:03:20 v #1952 > > │ 00:03:20 v #1953 > > │ Ranking 00:03:20 v #1954 > > │ Test case 1. Average Time: 706L 00:03:20 v #1955 > > 00:03:20 v #1956 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:03:20 v #1957 > > //// test 00:03:20 v #1958 > > 00:03:20 v #1959 > > let solutions = [[ 00:03:20 v #1960 > > "A", 00:03:20 v #1961 > > fun n -> 00:03:20 v #1962 > > let mutable _builder = StringBuilder (new string('a', n)) 00:03:20 v #1963 > > if n % 2 = 0 then 00:03:20 v #1964 > > _builder.[[0]] <- 'b' 00:03:20 v #1965 > > 00:03:20 v #1966 > > _builder.ToString () 00:03:20 v #1967 > > ]] 00:03:20 v #1968 > > let testCases = seq { 00:03:20 v #1969 > > 1, "a" 00:03:20 v #1970 > > 2, "ba" 00:03:20 v #1971 > > 3, "aaa" 00:03:20 v #1972 > > 9, "aaaaaaaaa" 00:03:20 v #1973 > > 10, "baaaaaaaaa" 00:03:20 v #1974 > > } 00:03:20 v #1975 > > let rec returnLettersWithOddCountTests = 00:03:20 v #1976 > > runAll (nameof returnLettersWithOddCountTests) _count solutions testCases 00:03:20 v #1977 > > returnLettersWithOddCountTests 00:03:20 v #1978 > > |> sortResultList 00:03:23 v #1979 > > 00:03:23 v #1980 > > ── [ 2.76s - stdout ] ────────────────────────────────────────────────────────── 00:03:23 v #1981 > > │ 00:03:23 v #1982 > > │ 00:03:23 v #1983 > > │ Test: returnLettersWithOddCountTests 00:03:23 v #1984 > > │ 00:03:23 v #1985 > > │ Solution: 1 00:03:23 v #1986 > > │ Test case 1. A. Time: 367L 00:03:23 v #1987 > > │ 00:03:23 v #1988 > > │ Solution: 2 00:03:23 v #1989 > > │ Test case 1. A. Time: 373L 00:03:23 v #1990 > > │ 00:03:23 v #1991 > > │ Solution: 3 00:03:23 v #1992 > > │ Test case 1. A. Time: 365L 00:03:23 v #1993 > > │ 00:03:23 v #1994 > > │ Solution: 9 00:03:23 v #1995 > > │ Test case 1. A. Time: 394L 00:03:23 v #1996 > > │ 00:03:23 v #1997 > > │ Solution: 10 00:03:23 v #1998 > > │ Test case 1. A. Time: 378L 00:03:23 v #1999 > > │ 00:03:23 v #2000 > > │ Input | Expected | Result | Best 00:03:23 v #2001 > > │ --- | --- | --- | --- 00:03:23 v #2002 > > │ 1 | a | a | (1, 367) 00:03:23 v #2003 > > │ 2 | ba | ba | (1, 373) 00:03:23 v #2004 > > │ 3 | aaa | aaa | (1, 365) 00:03:23 v #2005 > > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 394) 00:03:23 v #2006 > > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 378) 00:03:23 v #2007 > > │ 00:03:23 v #2008 > > │ Average Ranking 00:03:23 v #2009 > > │ Test case 1. Average Time: 375L 00:03:23 v #2010 > > │ 00:03:23 v #2011 > > 00:03:23 v #2012 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #2013 > > │ ## hasAnyPairCloseToEachotherTests 00:03:23 v #2014 > > 00:03:23 v #2015 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #2016 > > │ Test: HasAnyPairCloseToEachother 00:03:23 v #2017 > > │ 00:03:23 v #2018 > > │ Solution: 0 00:03:23 v #2019 > > │ Test case 1. A. Time: 137L 00:03:23 v #2020 > > │ 00:03:23 v #2021 > > │ Solution: 1,2 00:03:23 v #2022 > > │ Test case 1. A. Time: 186L 00:03:23 v #2023 > > │ 00:03:23 v #2024 > > │ Solution: 3,5 00:03:23 v #2025 > > │ Test case 1. A. Time: 206L 00:03:23 v #2026 > > │ 00:03:23 v #2027 > > │ Solution: 3,4,6 00:03:23 v #2028 > > │ Test case 1. A. Time: 149L 00:03:23 v #2029 > > │ 00:03:23 v #2030 > > │ Solution: 2,4,6 00:03:23 v #2031 > > │ Test case 1. A. Time: 150L 00:03:23 v #2032 > > │ 00:03:23 v #2033 > > │ Input | Expected | Result | Best 00:03:23 v #2034 > > │ --- | --- | --- | --- 00:03:23 v #2035 > > │ 0 | False | False | (1, 137) 00:03:23 v #2036 > > │ 1,2 | True | True | (1, 186) 00:03:23 v #2037 > > │ 3,5 | False | False | (1, 206) 00:03:23 v #2038 > > │ 3,4,6 | True | True | (1, 149) 00:03:23 v #2039 > > │ 2,4,6 | False | False | (1, 150) 00:03:23 v #2040 > > │ 00:03:23 v #2041 > > │ Averages 00:03:23 v #2042 > > │ Test case 1. Average Time: 165L 00:03:23 v #2043 > > │ 00:03:23 v #2044 > > │ Ranking 00:03:23 v #2045 > > │ Test case 1. Average Time: 165L 00:03:23 v #2046 > > 00:03:23 v #2047 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:03:23 v #2048 > > //// test 00:03:23 v #2049 > > 00:03:23 v #2050 > > let solutions = [[ 00:03:23 v #2051 > > "A", 00:03:23 v #2052 > > fun (a: int[[]]) -> 00:03:23 v #2053 > > let indices = System.Linq.Enumerable.Range(0, a.Length) |> 00:03:23 v #2054 > > System.Linq.Enumerable.ToArray 00:03:23 v #2055 > > System.Array.Sort (a, indices) 00:03:23 v #2056 > > 00:03:23 v #2057 > > indices 00:03:23 v #2058 > > |> Array.take (a.Length - 1) 00:03:23 v #2059 > > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1) 00:03:23 v #2060 > > ]] 00:03:23 v #2061 > > let testCases = seq { 00:03:23 v #2062 > > [[| 0 |]], false 00:03:23 v #2063 > > [[| 1; 2 |]], true 00:03:23 v #2064 > > [[| 3; 5 |]], false 00:03:23 v #2065 > > [[| 3; 4; 6 |]], true 00:03:23 v #2066 > > [[| 2; 4; 6 |]], false 00:03:23 v #2067 > > } 00:03:23 v #2068 > > let rec hasAnyPairCloseToEachotherTests = 00:03:23 v #2069 > > runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases 00:03:23 v #2070 > > hasAnyPairCloseToEachotherTests 00:03:23 v #2071 > > |> sortResultList 00:03:24 v #2072 > > 00:03:24 v #2073 > > ── [ 1.29s - stdout ] ────────────────────────────────────────────────────────── 00:03:24 v #2074 > > │ 00:03:24 v #2075 > > │ 00:03:24 v #2076 > > │ Test: hasAnyPairCloseToEachotherTests 00:03:24 v #2077 > > │ 00:03:24 v #2078 > > │ Solution: 0 00:03:24 v #2079 > > │ Test case 1. A. Time: 144L 00:03:24 v #2080 > > │ 00:03:24 v #2081 > > │ Solution: 1,2 00:03:24 v #2082 > > │ Test case 1. A. Time: 118L 00:03:24 v #2083 > > │ 00:03:24 v #2084 > > │ Solution: 3,5 00:03:24 v #2085 > > │ Test case 1. A. Time: 56L 00:03:24 v #2086 > > │ 00:03:24 v #2087 > > │ Solution: 3,4,6 00:03:24 v #2088 > > │ Test case 1. A. Time: 65L 00:03:24 v #2089 > > │ 00:03:24 v #2090 > > │ Solution: 2,4,6 00:03:24 v #2091 > > │ Test case 1. A. Time: 60L 00:03:24 v #2092 > > │ 00:03:24 v #2093 > > │ Input | Expected | Result | Best 00:03:24 v #2094 > > │ --- | --- | --- | --- 00:03:24 v #2095 > > │ 0 | False | False | (1, 144) 00:03:24 v #2096 > > │ 1,2 | True | True | (1, 118) 00:03:24 v #2097 > > │ 3,5 | False | False | (1, 56) 00:03:24 v #2098 > > │ 3,4,6 | True | True | (1, 65) 00:03:24 v #2099 > > │ 2,4,6 | False | False | (1, 60) 00:03:24 v #2100 > > │ 00:03:24 v #2101 > > │ Average Ranking 00:03:24 v #2102 > > │ Test case 1. Average Time: 88L 00:03:24 v #2103 > > │ 00:03:24 v #2104 > 00:03:23 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 85838 } 00:03:24 v #2105 > 00:03:23 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:25 v #2106 > 00:03:24 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html 00:03:25 v #2107 > 00:03:24 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:03:25 v #2108 > 00:03:24 v #7 ! validate(nb) 00:03:26 v #2109 > 00:03:24 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:03:26 v #2110 > 00:03:24 v #9 ! return _pygments_highlight( 00:03:26 v #2111 > 00:03:25 v #10 ! [NbConvertApp] Writing 458125 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html 00:03:26 v #2112 > 00:03:25 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:03:26 v #2113 > 00:03:25 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:03:26 v #2114 > 00:03:25 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:27 v #2115 > 00:03:25 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:03:27 v #2116 > 00:03:25 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:03:27 v #2117 > 00:03:25 d #16 spiral.run / dib / { exit_code = 0; result_length = 86787 } 00:03:27 d #2118 runtime.execute_with_options_async / { exit_code = 0; output_length = 93604 } 00:03:27 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Perf.dib --retries 3 00:03:27 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path DirTreeHtml.dib"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path DirTreeHtml.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # DirTreeHtml (Polyglot) 00:00:05 v #13 > > 00:00:05 v #14 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > #r 00:00:05 v #16 > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan 00:00:05 v #17 > > dard2.1/FSharp.Control.AsyncSeq.dll" 00:00:05 v #18 > > #r 00:00:05 v #19 > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 00:00:05 v #20 > > 0/System.Reactive.dll" 00:00:05 v #21 > > #r 00:00:05 v #22 > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib 00:00:05 v #23 > > netstandard2.0/System.Reactive.Linq.dll" 00:00:05 v #24 > > #r 00:00:05 v #25 > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" 00:00:05 v #26 > > #r 00:00:05 v #27 > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal 00:00:05 v #28 > > co.Markup.dll" 00:00:16 v #29 > > 00:00:16 v #30 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #31 > > #if !INTERACTIVE 00:00:16 v #32 > > open Lib 00:00:16 v #33 > > #endif 00:00:16 v #34 > > 00:00:16 v #35 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #36 > > open SpiralFileSystem.Operators 00:00:16 v #37 > > open Falco.Markup 00:00:16 v #38 > > 00:00:16 v #39 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #40 > > type FileSystemNode = 00:00:16 v #41 > > | File of string * string * int64 00:00:16 v #42 > > | Folder of string * string * FileSystemNode list 00:00:16 v #43 > > | Root of FileSystemNode list 00:00:16 v #44 > > 00:00:16 v #45 > > let rec scanDirectory isRoot (basePath : string) (path : string) = 00:00:16 v #46 > > let relativePath = 00:00:16 v #47 > > path 00:00:16 v #48 > > |> SpiralSm.replace basePath "" 00:00:16 v #49 > > |> SpiralSm.replace "\\" "/" 00:00:16 v #50 > > |> SpiralSm.replace "//" "/" 00:00:16 v #51 > > |> SpiralSm.trim_start [[| '/' |]] 00:00:16 v #52 > > 00:00:16 v #53 > > let directories = 00:00:16 v #54 > > path 00:00:16 v #55 > > |> System.IO.Directory.GetDirectories 00:00:16 v #56 > > |> Array.toList 00:00:16 v #57 > > |> List.sort 00:00:16 v #58 > > |> List.map (scanDirectory false basePath) 00:00:16 v #59 > > let files = 00:00:16 v #60 > > path 00:00:16 v #61 > > |> System.IO.Directory.GetFiles 00:00:16 v #62 > > |> Array.toList 00:00:16 v #63 > > |> List.sort 00:00:16 v #64 > > |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, 00:00:16 v #65 > > System.IO.FileInfo(f).Length)) 00:00:16 v #66 > > 00:00:16 v #67 > > let children = directories @ files 00:00:16 v #68 > > if isRoot 00:00:16 v #69 > > then Root children 00:00:16 v #70 > > else Folder (path |> System.IO.Path.GetFileName, relativePath, children) 00:00:16 v #71 > > 00:00:16 v #72 > > let rec generateHtml fsNode = 00:00:16 v #73 > > let sizeLabel size = 00:00:16 v #74 > > match float size with 00:00:16 v #75 > > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB" 00:00:16 v #76 > > | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB" 00:00:16 v #77 > > | size -> $"%.2f{size} B" 00:00:16 v #78 > > match fsNode with 00:00:16 v #79 > > | File (fileName, relativePath, size) -> 00:00:16 v #80 > > Elem.div [[]] [[ 00:00:16 v #81 > > Text.raw "📄 " 00:00:16 v #82 > > Elem.a [[ 00:00:16 v #83 > > Attr.href $"""{relativePath}{if relativePath = "" then "" else 00:00:16 v #84 > > "/"}{fileName}""" 00:00:16 v #85 > > ]] [[ 00:00:16 v #86 > > Text.raw fileName 00:00:16 v #87 > > ]] 00:00:16 v #88 > > Elem.span [[]] [[ 00:00:16 v #89 > > Text.raw $" ({size |> sizeLabel})" 00:00:16 v #90 > > ]] 00:00:16 v #91 > > ]] 00:00:16 v #92 > > | Folder (folderName, relativePath, children) -> 00:00:16 v #93 > > let size = 00:00:16 v #94 > > let rec loop children = 00:00:16 v #95 > > children 00:00:16 v #96 > > |> List.sumBy (function 00:00:16 v #97 > > | File (_, _, size) -> size 00:00:16 v #98 > > | Folder (_, _, children) 00:00:16 v #99 > > | Root children -> loop children 00:00:16 v #100 > > ) 00:00:16 v #101 > > loop children 00:00:16 v #102 > > Elem.details [[ 00:00:16 v #103 > > Attr.open' "true" 00:00:16 v #104 > > ]] [[ 00:00:16 v #105 > > Elem.summary [[]] [[ 00:00:16 v #106 > > Text.raw "📂 " 00:00:16 v #107 > > Elem.a [[ 00:00:16 v #108 > > Attr.href relativePath 00:00:16 v #109 > > ]] [[ 00:00:16 v #110 > > Text.raw folderName 00:00:16 v #111 > > ]] 00:00:16 v #112 > > Elem.span [[]] [[ 00:00:16 v #113 > > Text.raw $" ({size |> sizeLabel})" 00:00:16 v #114 > > ]] 00:00:16 v #115 > > ]] 00:00:16 v #116 > > Elem.div [[]] [[ 00:00:16 v #117 > > yield! children |> List.map generateHtml 00:00:16 v #118 > > ]] 00:00:16 v #119 > > ]] 00:00:16 v #120 > > | Root children -> 00:00:16 v #121 > > Elem.div [[]] [[ 00:00:16 v #122 > > yield! children |> List.map generateHtml 00:00:16 v #123 > > ]] 00:00:16 v #124 > > 00:00:16 v #125 > > let generateHtmlForFileSystem root = 00:00:16 v #126 > > $"""<!DOCTYPE html> 00:00:16 v #127 > > <html lang="en"> 00:00:16 v #128 > > <head> 00:00:16 v #129 > > <meta charset="UTF-8"> 00:00:16 v #130 > > <style> 00:00:16 v #131 > > body {{ 00:00:16 v #132 > > background-color: #222; 00:00:16 v #133 > > color: #ccc; 00:00:16 v #134 > > }} 00:00:16 v #135 > > a {{ 00:00:16 v #136 > > color: #777; 00:00:16 v #137 > > font-size: 15px; 00:00:16 v #138 > > }} 00:00:16 v #139 > > span {{ 00:00:16 v #140 > > font-size: 11px; 00:00:16 v #141 > > }} 00:00:16 v #142 > > div > div {{ 00:00:16 v #143 > > padding-left: 10px; 00:00:16 v #144 > > }} 00:00:16 v #145 > > details > div {{ 00:00:16 v #146 > > padding-left: 19px; 00:00:16 v #147 > > }} 00:00:16 v #148 > > </style> 00:00:16 v #149 > > </head> 00:00:16 v #150 > > <body> 00:00:16 v #151 > > {root |> generateHtml |> renderNode} 00:00:16 v #152 > > </body> 00:00:16 v #153 > > </html> 00:00:16 v #154 > > """ 00:00:16 v #155 > > 00:00:16 v #156 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #157 > > //// test 00:00:16 v #158 > > 00:00:16 v #159 > > let expected = """<!DOCTYPE html> 00:00:16 v #160 > > <html lang="en"> 00:00:16 v #161 > > <head> 00:00:16 v #162 > > <meta charset="UTF-8"> 00:00:16 v #163 > > <style> 00:00:16 v #164 > > body { 00:00:16 v #165 > > background-color: #222; 00:00:16 v #166 > > color: #ccc; 00:00:16 v #167 > > } 00:00:16 v #168 > > a { 00:00:16 v #169 > > color: #777; 00:00:16 v #170 > > font-size: 15px; 00:00:16 v #171 > > } 00:00:16 v #172 > > span { 00:00:16 v #173 > > font-size: 11px; 00:00:16 v #174 > > } 00:00:16 v #175 > > div > div { 00:00:16 v #176 > > padding-left: 10px; 00:00:16 v #177 > > } 00:00:16 v #178 > > details > div { 00:00:16 v #179 > > padding-left: 19px; 00:00:16 v #180 > > } 00:00:16 v #181 > > </style> 00:00:16 v #182 > > </head> 00:00:16 v #183 > > <body> 00:00:16 v #184 > > <div><details open="true"><summary>📂 <a href="_.root">_.root</a><span> 00:00:16 v #185 > > (10.00 B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 v #186 > > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details 00:00:16 v #187 > > open="true"><summary>📂 <a href="_.root/3/2">2</a><span> (3.00 00:00:16 v #188 > > B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 v #189 > > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>📄 <a 00:00:16 v #190 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 00:00:16 v #191 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #192 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 00:00:16 v #193 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #194 > > href="_.root/3/file.txt">file.txt</a><span> (3.00 00:00:16 v #195 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #196 > > href="_.root/file.txt">file.txt</a><span> (4.00 00:00:16 v #197 > > B)</span></div></div></details></div> 00:00:16 v #198 > > </body> 00:00:16 v #199 > > </html> 00:00:16 v #200 > > """ 00:00:16 v #201 > > 00:00:16 v #202 > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |> 00:00:16 v #203 > > SpiralFileSystem.create_temp_dir' 00:00:16 v #204 > > let rec loop d n = async { 00:00:16 v #205 > > if n >= 0 then 00:00:16 v #206 > > tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore 00:00:16 v #207 > > do! 00:00:16 v #208 > > n 00:00:16 v #209 > > |> string 00:00:16 v #210 > > |> String.replicate (n + 1) 00:00:16 v #211 > > |> SpiralFileSystem.write_all_text_async (tempFolder </> d </> 00:00:16 v #212 > > $"file.txt") 00:00:16 v #213 > > do! loop $"{d}/{n}" (n - 1) 00:00:16 v #214 > > } 00:00:16 v #215 > > loop "_.root" 3 00:00:16 v #216 > > |> Async.RunSynchronously 00:00:16 v #217 > > 00:00:16 v #218 > > let html = 00:00:16 v #219 > > scanDirectory true tempFolder tempFolder 00:00:16 v #220 > > |> generateHtmlForFileSystem 00:00:16 v #221 > > 00:00:16 v #222 > > html 00:00:16 v #223 > > |> _assertEqual expected 00:00:16 v #224 > > 00:00:16 v #225 > > disposable.Dispose () 00:00:16 v #226 > > 00:00:16 v #227 > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent 00:00:16 v #228 > > 00:00:16 v #229 > > ── [ 141.82ms - return value ] ───────────────────────────────────────────────── 00:00:16 v #230 > > │ <!DOCTYPE html> 00:00:16 v #231 > > │ <html lang="en"> 00:00:16 v #232 > > │ <head> 00:00:16 v #233 > > │ <meta charset="UTF-8"> 00:00:16 v #234 > > │ <style> 00:00:16 v #235 > > │ body { 00:00:16 v #236 > > │ background-color: #222; 00:00:16 v #237 > > │ color: #ccc; 00:00:16 v #238 > > │ } 00:00:16 v #239 > > │ a { 00:00:16 v #240 > > │ color: #777; 00:00:16 v #241 > > │ font-size: 15px; 00:00:16 v #242 > > │ } 00:00:16 v #243 > > │ span { 00:00:16 v #244 > > │ font-size: 11px; 00:00:16 v #245 > > │ } 00:00:16 v #246 > > │ div > div { 00:00:16 v #247 > > │ padding-left: 10px; 00:00:16 v #248 > > │ } 00:00:16 v #249 > > │ details > div { 00:00:16 v #250 > > │ padding-left: 19px; 00:00:16 v #251 > > │ } 00:00:16 v #252 > > │ </style> 00:00:16 v #253 > > │ </head> 00:00:16 v #254 > > │ <body> 00:00:16 v #255 > > │ <div><details open="true"><summary>📂 <a 00:00:16 v #256 > > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details 00:00:16 v #257 > > open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 00:00:16 v #258 > > B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 v #259 > > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details 00:00:16 v #260 > > open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 00:00:16 v #261 > > B)</span></summary><div><div>📄 <a 00:00:16 v #262 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 00:00:16 v #263 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #264 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 00:00:16 v #265 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #266 > > href="_.root/3/file.txt">file.txt</a><span> (3.00 00:00:16 v #267 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #268 > > href="_.root/file.txt">file.txt</a><span> (4.00 00:00:16 v #269 > > B)</span></div></div></details></div> 00:00:16 v #270 > > │ </body> 00:00:16 v #271 > > │ </html> 00:00:16 v #272 > > │ 00:00:16 v #273 > > 00:00:16 v #274 > > ── [ 145.50ms - stdout ] ─────────────────────────────────────────────────────── 00:00:16 v #275 > > │ "<!DOCTYPE html> 00:00:16 v #276 > > │ <html lang="en"> 00:00:16 v #277 > > │ <head> 00:00:16 v #278 > > │ <meta charset="UTF-8"> 00:00:16 v #279 > > │ <style> 00:00:16 v #280 > > │ body { 00:00:16 v #281 > > │ background-color: #222; 00:00:16 v #282 > > │ color: #ccc; 00:00:16 v #283 > > │ } 00:00:16 v #284 > > │ a { 00:00:16 v #285 > > │ color: #777; 00:00:16 v #286 > > │ font-size: 15px; 00:00:16 v #287 > > │ } 00:00:16 v #288 > > │ span { 00:00:16 v #289 > > │ font-size: 11px; 00:00:16 v #290 > > │ } 00:00:16 v #291 > > │ div > div { 00:00:16 v #292 > > │ padding-left: 10px; 00:00:16 v #293 > > │ } 00:00:16 v #294 > > │ details > div { 00:00:16 v #295 > > │ padding-left: 19px; 00:00:16 v #296 > > │ } 00:00:16 v #297 > > │ </style> 00:00:16 v #298 > > │ </head> 00:00:16 v #299 > > │ <body> 00:00:16 v #300 > > │ <div><details open="true"><summary>📂 <a 00:00:16 v #301 > > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details 00:00:16 v #302 > > open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 00:00:16 v #303 > > B)</span></summary><div><details open="true"><summary>📂 <a 00:00:16 v #304 > > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details 00:00:16 v #305 > > open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 00:00:16 v #306 > > B)</span></summary><div><div>📄 <a 00:00:16 v #307 > > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 00:00:16 v #308 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #309 > > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 00:00:16 v #310 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #311 > > href="_.root/3/file.txt">file.txt</a><span> (3.00 00:00:16 v #312 > > B)</span></div></div></details><div>📄 <a 00:00:16 v #313 > > href="_.root/file.txt">file.txt</a><span> (4.00 00:00:16 v #314 > > B)</span></div></div></details></div> 00:00:16 v #315 > > │ </body> 00:00:16 v #316 > > │ </html> 00:00:16 v #317 > > │ " 00:00:16 v #318 > > │ 00:00:16 v #319 > > │ 00:00:16 v #320 > > 00:00:16 v #321 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #322 > > │ ## Arguments 00:00:16 v #323 > > 00:00:16 v #324 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #325 > > [[<RequireQualifiedAccess>]] 00:00:16 v #326 > > type Arguments = 00:00:16 v #327 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string 00:00:16 v #328 > > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string 00:00:16 v #329 > > 00:00:16 v #330 > > interface Argu.IArgParserTemplate with 00:00:16 v #331 > > member s.Usage = 00:00:16 v #332 > > match s with 00:00:16 v #333 > > | Dir _ -> nameof Dir 00:00:16 v #334 > > | Html _ -> nameof Html 00:00:16 v #335 > > 00:00:16 v #336 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #337 > > //// test 00:00:16 v #338 > > 00:00:16 v #339 > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () 00:00:16 v #340 > > 00:00:16 v #341 > > ── [ 75.37ms - return value ] ────────────────────────────────────────────────── 00:00:16 v #342 > > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string> 00:00:16 v #343 > > │ 00:00:16 v #344 > > │ OPTIONS: 00:00:16 v #345 > > │ 00:00:16 v #346 > > │ --dir <string> Dir 00:00:16 v #347 > > │ --html <string> Html 00:00:16 v #348 > > │ --help display this list of options. 00:00:16 v #349 > > │ " 00:00:16 v #350 > > │ 00:00:16 v #351 > > 00:00:16 v #352 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:16 v #353 > > │ ## main 00:00:16 v #354 > > 00:00:16 v #355 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #356 > > let main args = 00:00:16 v #357 > > let argsMap = args |> Runtime.parseArgsMap<Arguments> 00:00:16 v #358 > > 00:00:16 v #359 > > let dir = 00:00:16 v #360 > > match argsMap.[[nameof Arguments.Dir]] with 00:00:16 v #361 > > | [[ Arguments.Dir dir ]] -> Some dir 00:00:16 v #362 > > | _ -> None 00:00:16 v #363 > > |> Option.get 00:00:16 v #364 > > 00:00:16 v #365 > > let htmlPath = 00:00:16 v #366 > > match argsMap.[[nameof Arguments.Html]] with 00:00:16 v #367 > > | [[ Arguments.Html html ]] -> Some html 00:00:16 v #368 > > | _ -> None 00:00:16 v #369 > > |> Option.get 00:00:16 v #370 > > 00:00:16 v #371 > > let fileSystem = scanDirectory true dir dir 00:00:16 v #372 > > let html = generateHtmlForFileSystem fileSystem 00:00:16 v #373 > > 00:00:16 v #374 > > html |> SpiralFileSystem.write_all_text_async htmlPath 00:00:16 v #375 > > |> Async.runWithTimeout 30000 00:00:16 v #376 > > |> function 00:00:16 v #377 > > | Some () -> 0 00:00:16 v #378 > > | None -> 1 00:00:16 v #379 > > 00:00:16 v #380 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:16 v #381 > > //// test 00:00:16 v #382 > > 00:00:16 v #383 > > let args = 00:00:16 v #384 > > System.Environment.GetEnvironmentVariable "ARGS" 00:00:16 v #385 > > |> SpiralRuntime.split_args 00:00:16 v #386 > > |> Result.toArray 00:00:16 v #387 > > |> Array.collect id 00:00:16 v #388 > > 00:00:16 v #389 > > match args with 00:00:16 v #390 > > | [[||]] -> 0 00:00:16 v #391 > > | args -> if main args = 0 then 0 else failwith "main failed" 00:00:16 v #392 > > 00:00:16 v #393 > > ── [ 67.50ms - return value ] ────────────────────────────────────────────────── 00:00:16 v #394 > > │ <div class="dni-plaintext"><pre>0 00:00:16 v #395 > > │ </pre></div><style> 00:00:16 v #396 > > │ .dni-code-hint { 00:00:16 v #397 > > │ font-style: italic; 00:00:16 v #398 > > │ overflow: hidden; 00:00:16 v #399 > > │ white-space: nowrap; 00:00:16 v #400 > > │ } 00:00:16 v #401 > > │ .dni-treeview { 00:00:16 v #402 > > │ white-space: nowrap; 00:00:16 v #403 > > │ } 00:00:16 v #404 > > │ .dni-treeview td { 00:00:16 v #405 > > │ vertical-align: top; 00:00:16 v #406 > > │ text-align: start; 00:00:16 v #407 > > │ } 00:00:16 v #408 > > │ details.dni-treeview { 00:00:16 v #409 > > │ padding-left: 1em; 00:00:16 v #410 > > │ } 00:00:16 v #411 > > │ table td { 00:00:16 v #412 > > │ text-align: start; 00:00:16 v #413 > > │ } 00:00:16 v #414 > > │ table tr { 00:00:16 v #415 > > │ vertical-align: top; 00:00:16 v #416 > > │ margin: 0em 0px; 00:00:16 v #417 > > │ } 00:00:16 v #418 > > │ table tr td pre 00:00:16 v #419 > > │ { 00:00:16 v #420 > > │ vertical-align: top !important; 00:00:16 v #421 > > │ margin: 0em 0px !important; 00:00:16 v #422 > > │ } 00:00:16 v #423 > > │ table th { 00:00:16 v #424 > > │ text-align: start; 00:00:16 v #425 > > │ } 00:00:16 v #426 > > │ </style> 00:00:17 v #427 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13920 } 00:00:17 v #428 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:17 v #429 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html 00:00:17 v #430 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 v #431 > 00:00:16 v #7 ! validate(nb) 00:00:18 v #432 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:18 v #433 > 00:00:16 v #9 ! return _pygments_highlight( 00:00:18 v #434 > 00:00:17 v #10 ! [NbConvertApp] Writing 310055 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html 00:00:18 v #435 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 922 } 00:00:18 v #436 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 922 } 00:00:18 v #437 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:18 v #438 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 v #439 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 v #440 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 14901 } 00:00:18 d #441 runtime.execute_with_options_async / { exit_code = 0; output_length = 18481 } 00:00:18 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path DirTreeHtml.dib 00:00:18 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 | US0_3 | US0_4 and Mut0 = {mutable l0 : int64} and Mut1 = {mutable l0 : (string -> unit)} and Mut2 = {mutable l0 : bool} and Mut3 = {mutable l0 : string} and Mut4 = {mutable l0 : US0} and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 and [<Struct>] US2 = | US2_0 of f0_0 : int64 | US2_1 and [<Struct>] US3 = | US3_0 | US3_1 | US3_2 and [<Struct>] US4 = | US4_0 of f0_0 : US3 | US4_1 of f1_0 : US3 | US4_2 of f2_0 : US3 | US4_3 of f3_0 : US3 | US4_4 of f4_0 : US3 and [<Struct>] US5 = | US5_0 of f0_0 : string | US5_1 and [<Struct>] US6 = | US6_0 of f0_0 : bool | US6_1 and [<Struct>] US7 = | US7_0 of f0_0 : bool | US7_1 of f1_0 : exn and [<Struct>] US8 = | US8_0 of f0_0 : bool | US8_1 of f1_0 : exn and [<Struct>] US9 = | US9_0 of f0_0 : int32 | US9_1 let rec method3 (v0 : string) : string = v0 and method4 () : string = let v0 : string = "" v0 and closure1 () (v0 : string) : US5 = US5_0(v0) and method5 () : (string -> US5) = closure1() and method2 (v0 : string) : string = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : string = method3(v0) let v3 : string = "std::env::var(&*$0)" let v4 : Result<std_string_String, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr v2 v3 let v5 : string = "true; let _result_map_ = $0.map(|x| { //" let v6 : bool = Fable.Core.RustInterop.emitRustExpr v4 v5 let v7 : string = "x" let v8 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v7 let v9 : string = "fable_library_rust::String_::fromString($0)" let v10 : string = Fable.Core.RustInterop.emitRustExpr v8 v9 let v11 : string = "true; $0 })" let v12 : bool = Fable.Core.RustInterop.emitRustExpr v10 v11 let v13 : string = "_result_map_" let v14 : Result<string, std_env_VarError> = Fable.Core.RustInterop.emitRustExpr () v13 let v15 : string = method4() let v16 : string = "$0.unwrap_or($1)" let v17 : string = Fable.Core.RustInterop.emitRustExpr struct (v14, v15) v16 let _run_target_args'_v1 = v17 #endif #if FABLE_COMPILER_RUST && WASM let v18 : US3 = US3_1 let v19 : US4 = US4_2(v18) let v20 : string = $"env.get_environment_variable / target: {v19} / var: {v0}" let v21 : string = failwith<string> v20 let _run_target_args'_v1 = v21 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : US3 = US3_2 let v23 : US4 = US4_2(v22) let v24 : string = $"env.get_environment_variable / target: {v23} / var: {v0}" let v25 : string = failwith<string> v24 let _run_target_args'_v1 = v25 #endif #if FABLE_COMPILER_TYPESCRIPT let v26 : string = "process.env[$0] ?? \"\"" let v27 : string = Fable.Core.JsInterop.emitJsExpr v0 v26 let _run_target_args'_v1 = v27 #endif #if FABLE_COMPILER_PYTHON let v28 : string = "os" let v29 : IOsEnviron = Fable.Core.PyInterop.importAll v28 let v30 : string = "v29.environ" let v31 : obj = Fable.Core.PyInterop.emitPyExpr () v30 let v34 : string = "v31.get($0)" let v35 : string = Fable.Core.PyInterop.emitPyExpr v0 v34 let mutable _v35 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v38 : (string -> string option) = Option.ofObj let v39 : string option = v38 v35 v39 #else Some v35 #endif |> fun x -> _v35 <- Some x let v40 : string option = match _v35 with Some x -> x | None -> failwith "optionm'.of_obj / _v35=None" let v43 : (string -> US5) = method5() let v44 : US5 option = v40 |> Option.map v43 let v55 : US5 = US5_1 let v56 : US5 = v44 |> Option.defaultValue v55 let v63 : string = match v56 with | US5_1 -> (* None *) let v61 : string = "" v61 | US5_0(v60) -> (* Some *) v60 let _run_target_args'_v1 = v63 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v64 : US3 = US3_1 let v65 : US4 = US4_0(v64) let v66 : string = $"env.get_environment_variable / target: {v65} / var: {v0}" let v67 : string = failwith<string> v66 let _run_target_args'_v1 = v67 #endif #else let v68 : (string -> string) = System.Environment.GetEnvironmentVariable let v69 : string = v68 v0 let mutable _v69 = None #if !FABLE_COMPILER && !WASM && !CONTRACT let v70 : (string -> string option) = Option.ofObj let v71 : string option = v70 v69 v71 #else Some v69 #endif |> fun x -> _v69 <- Some x let v72 : string option = match _v69 with Some x -> x | None -> failwith "optionm'.of_obj / _v69=None" let v75 : (string -> US5) = method5() let v76 : US5 option = v72 |> Option.map v75 let v87 : US5 = US5_1 let v88 : US5 = v76 |> Option.defaultValue v87 let v95 : string = match v88 with | US5_1 -> (* None *) let v93 : string = "" v93 | US5_0(v92) -> (* Some *) v92 let _run_target_args'_v1 = v95 #endif let v96 : string = _run_target_args'_v1 v96 and method1 () : struct (US1 * US2) = let v0 : string = "TRACE_LEVEL" let v1 : string = method2(v0) let v2 : bool = "Verbose" = v1 let v6 : US1 = if v2 then let v3 : US0 = US0_0 US1_0(v3) else US1_1 let v47 : US1 = match v6 with | US1_1 -> (* None *) let v9 : bool = "Debug" = v1 let v13 : US1 = if v9 then let v10 : US0 = US0_1 US1_0(v10) else US1_1 match v13 with | US1_1 -> (* None *) let v16 : bool = "Info" = v1 let v20 : US1 = if v16 then let v17 : US0 = US0_2 US1_0(v17) else US1_1 match v20 with | US1_1 -> (* None *) let v23 : bool = "Warning" = v1 let v27 : US1 = if v23 then let v24 : US0 = US0_3 US1_0(v24) else US1_1 match v27 with | US1_1 -> (* None *) let v30 : bool = "Critical" = v1 let v34 : US1 = if v30 then let v31 : US0 = US0_4 US1_0(v31) else US1_1 match v34 with | US1_1 -> (* None *) US1_1 | US1_0(v35) -> (* Some *) US1_0(v35) | US1_0(v28) -> (* Some *) US1_0(v28) | US1_0(v21) -> (* Some *) US1_0(v21) | US1_0(v14) -> (* Some *) US1_0(v14) | US1_0(v7) -> (* Some *) US1_0(v7) let v48 : string = "AUTOMATION" let v49 : string = method2(v48) let v50 : string = "True" let v51 : bool = v49 <> v50 let v107 : US2 = if v51 then US2_1 else let v55 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v56 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v56 #endif #if FABLE_COMPILER_RUST && WASM let v57 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v57 #endif #if FABLE_COMPILER_RUST && CONTRACT let v58 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v55 = v58 #endif #if FABLE_COMPILER_TYPESCRIPT let v61 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v61 #endif #if FABLE_COMPILER_PYTHON let v62 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v62 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v63 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v63 #endif #else let v64 : System.DateTime = System.DateTime.Now let _run_target_args'_v55 = v64 #endif let v65 : System.DateTime = _run_target_args'_v55 let v70 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v71 : (System.DateTime -> int64) = _.Ticks let v72 : int64 = v71 v65 let _run_target_args'_v70 = v72 #endif #if FABLE_COMPILER_RUST && WASM let v73 : (System.DateTime -> int64) = _.Ticks let v74 : int64 = v73 v65 let _run_target_args'_v70 = v74 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : int64 = null |> unbox<int64> let _run_target_args'_v70 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : (System.DateTime -> int64) = _.Ticks let v79 : int64 = v78 v65 let _run_target_args'_v70 = v79 #endif #if FABLE_COMPILER_PYTHON let v80 : (System.DateTime -> int64) = _.Ticks let v81 : int64 = v80 v65 let _run_target_args'_v70 = v81 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v82 : (System.DateTime -> int64) = _.Ticks let v83 : int64 = v82 v65 let _run_target_args'_v70 = v83 #endif #else let v84 : (System.DateTime -> int64) = _.Ticks let v85 : int64 = v84 v65 let _run_target_args'_v70 = v85 #endif let v86 : int64 = _run_target_args'_v70 let v103 : int64 = v86 |> int64 US2_0(v103) struct (v47, v107) and closure2 () (v0 : string) : unit = () and method0 (v0 : US0) : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let struct (v2 : US1, v3 : US2) = method1() let _run_target_args'_v1 = struct (v2, v3) #endif #if FABLE_COMPILER_RUST && WASM let v4 : US1 = US1_1 let v5 : US2 = US2_1 let _run_target_args'_v1 = struct (v4, v5) #endif #if FABLE_COMPILER_RUST && CONTRACT let v6 : string = "AUTOMATION" let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "String::from($0)" let v12 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "String::from($0)" let v14 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "String::from($0)" let v16 : std_string_String = Fable.Core.RustInterop.emitRustExpr v9 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v23 #endif #else let v26 : std_string_String = v9 |> unbox<std_string_String> let _run_target_args'_v10 = v26 #endif let v29 : std_string_String = _run_target_args'_v10 let v34 : string = "fable_library_rust::String_::fromString($0)" let v35 : string = Fable.Core.RustInterop.emitRustExpr v29 v34 let _run_target_args'_v7 = v35 #endif #if FABLE_COMPILER_RUST && WASM let v36 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v37 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v36 let v38 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v39 : string = "String::from($0)" let v40 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v39 let _run_target_args'_v38 = v40 #endif #if FABLE_COMPILER_RUST && WASM let v41 : string = "String::from($0)" let v42 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v41 let _run_target_args'_v38 = v42 #endif #if FABLE_COMPILER_RUST && CONTRACT let v43 : string = "String::from($0)" let v44 : std_string_String = Fable.Core.RustInterop.emitRustExpr v37 v43 let _run_target_args'_v38 = v44 #endif #if FABLE_COMPILER_TYPESCRIPT let v45 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v45 #endif #if FABLE_COMPILER_PYTHON let v48 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v48 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v51 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v51 #endif #else let v54 : std_string_String = v37 |> unbox<std_string_String> let _run_target_args'_v38 = v54 #endif let v57 : std_string_String = _run_target_args'_v38 let v62 : string = "fable_library_rust::String_::fromString($0)" let v63 : string = Fable.Core.RustInterop.emitRustExpr v57 v62 let _run_target_args'_v7 = v63 #endif #if FABLE_COMPILER_RUST && CONTRACT let v64 : string = "option_env!(\"" + v6 + "\").unwrap_or(\"\")" let v65 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v64 let v66 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v67 : string = "String::from($0)" let v68 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v67 let _run_target_args'_v66 = v68 #endif #if FABLE_COMPILER_RUST && WASM let v69 : string = "String::from($0)" let v70 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v69 let _run_target_args'_v66 = v70 #endif #if FABLE_COMPILER_RUST && CONTRACT let v71 : string = "String::from($0)" let v72 : std_string_String = Fable.Core.RustInterop.emitRustExpr v65 v71 let _run_target_args'_v66 = v72 #endif #if FABLE_COMPILER_TYPESCRIPT let v73 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v73 #endif #if FABLE_COMPILER_PYTHON let v76 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v76 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v79 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v79 #endif #else let v82 : std_string_String = v65 |> unbox<std_string_String> let _run_target_args'_v66 = v82 #endif let v85 : std_string_String = _run_target_args'_v66 let v90 : string = "fable_library_rust::String_::fromString($0)" let v91 : string = Fable.Core.RustInterop.emitRustExpr v85 v90 let _run_target_args'_v7 = v91 #endif #if FABLE_COMPILER_TYPESCRIPT let v92 : string = null |> unbox<string> let _run_target_args'_v7 = v92 #endif #if FABLE_COMPILER_PYTHON let v95 : string = null |> unbox<string> let _run_target_args'_v7 = v95 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v98 : string = null |> unbox<string> let _run_target_args'_v7 = v98 #endif #else let v101 : string = null |> unbox<string> let _run_target_args'_v7 = v101 #endif let v104 : string = _run_target_args'_v7 let v109 : string = "True" let v110 : bool = v104 <> v109 let v121 : US2 = if v110 then US2_1 else let v114 : string = $"near_sdk::env::block_timestamp()" let v115 : uint64 = Fable.Core.RustInterop.emitRustExpr () v114 let v116 : (uint64 -> int64) = int64 let v117 : int64 = v116 v115 US2_0(v117) let v122 : US1 = US1_1 let _run_target_args'_v1 = struct (v122, v121) #endif #if FABLE_COMPILER_TYPESCRIPT let struct (v123 : US1, v124 : US2) = method1() let _run_target_args'_v1 = struct (v123, v124) #endif #if FABLE_COMPILER_PYTHON let struct (v125 : US1, v126 : US2) = method1() let _run_target_args'_v1 = struct (v125, v126) #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let struct (v127 : US1, v128 : US2) = method1() let _run_target_args'_v1 = struct (v127, v128) #endif #else let struct (v129 : US1, v130 : US2) = method1() let _run_target_args'_v1 = struct (v129, v130) #endif let struct (v131 : US1, v132 : US2) = _run_target_args'_v1 let v137 : Mut0 = {l0 = 1L} : Mut0 let v138 : (string -> unit) = closure2() let v139 : Mut1 = {l0 = v138} : Mut1 let v140 : Mut2 = {l0 = true} : Mut2 let v141 : string = "" let v142 : Mut3 = {l0 = v141} : Mut3 let v145 : US0 = match v131 with | US1_1 -> (* None *) v0 | US1_0(v143) -> (* Some *) v143 let v146 : Mut4 = {l0 = v145} : Mut4 let v153 : int64 option = match v132 with | US2_1 -> (* None *) let v151 : int64 option = None v151 | US2_0(v147) -> (* Some *) let v148 : int64 option = Some v147 v148 struct (v137, v139, v140, v142, v146, v153) and closure0 () () : unit = let v0 : bool = TraceState.trace_state.IsNone if v0 then let v1 : US0 = US0_0 let struct (v2 : Mut0, v3 : Mut1, v4 : Mut2, v5 : Mut3, v6 : Mut4, v7 : int64 option) = method0(v1) let v8 : struct (Mut0 * Mut1 * Mut2 * Mut3 * Mut4 * int64 option) option = Some struct (v2, v3, v4, v5, v6, v7) TraceState.trace_state <- v8 () and method8 (v0 : US0) : bool = let v1 : unit = () let v2 : (unit -> unit) = closure0() let v3 : unit = (fun () -> v2 (); v1) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value let v35 : US0 = v21.l0 let v36 : bool = v19.l0 let v37 : bool = v36 = false if v37 then false else let v38 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v0 let v39 : int32 = [ US0_0, 0; US0_1, 1; US0_2, 2; US0_3, 3; US0_4, 4 ] |> Map |> Map.find v35 let v40 : bool = v38 >= v39 v40 and closure6 () (v0 : int64) : US2 = US2_0(v0) and method10 () : (int64 -> US2) = closure6() and method11 () : string = let v0 : string = "hh:mm:ss" v0 and method12 () : string = let v0 : string = "HH:mm:ss" v0 and method9 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option) : string = let v6 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7 : (int64 -> US2) = method10() let v8 : US2 option = v5 |> Option.map v7 let v19 : US2 = US2_1 let v20 : US2 = v8 |> Option.defaultValue v19 let v117 : System.DateTime = match v20 with | US2_1 -> (* None *) let v101 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v102 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v102 #endif #if FABLE_COMPILER_RUST && WASM let v103 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v103 #endif #if FABLE_COMPILER_RUST && CONTRACT let v104 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v101 = v104 #endif #if FABLE_COMPILER_TYPESCRIPT let v107 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v108 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v109 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v109 #endif #else let v110 : System.DateTime = System.DateTime.Now let _run_target_args'_v101 = v110 #endif let v111 : System.DateTime = _run_target_args'_v101 v111 | US2_0(v24) -> (* Some *) let v25 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v26 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v26 #endif #if FABLE_COMPILER_RUST && WASM let v27 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v27 #endif #if FABLE_COMPILER_RUST && CONTRACT let v28 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v25 = v28 #endif #if FABLE_COMPILER_TYPESCRIPT let v31 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v31 #endif #if FABLE_COMPILER_PYTHON let v32 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v32 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v33 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v33 #endif #else let v34 : System.DateTime = System.DateTime.Now let _run_target_args'_v25 = v34 #endif let v35 : System.DateTime = _run_target_args'_v25 let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : (System.DateTime -> int64) = _.Ticks let v42 : int64 = v41 v35 let _run_target_args'_v40 = v42 #endif #if FABLE_COMPILER_RUST && WASM let v43 : (System.DateTime -> int64) = _.Ticks let v44 : int64 = v43 v35 let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v45 : int64 = null |> unbox<int64> let _run_target_args'_v40 = v45 #endif #if FABLE_COMPILER_TYPESCRIPT let v48 : (System.DateTime -> int64) = _.Ticks let v49 : int64 = v48 v35 let _run_target_args'_v40 = v49 #endif #if FABLE_COMPILER_PYTHON let v50 : (System.DateTime -> int64) = _.Ticks let v51 : int64 = v50 v35 let _run_target_args'_v40 = v51 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v52 : (System.DateTime -> int64) = _.Ticks let v53 : int64 = v52 v35 let _run_target_args'_v40 = v53 #endif #else let v54 : (System.DateTime -> int64) = _.Ticks let v55 : int64 = v54 v35 let _run_target_args'_v40 = v55 #endif let v56 : int64 = _run_target_args'_v40 let v73 : int64 = v56 |> int64 let v76 : int64 = v73 - v24 let v77 : System.TimeSpan = v76 |> System.TimeSpan let v82 : (System.TimeSpan -> int32) = _.Hours let v83 : int32 = v82 v77 let v86 : (System.TimeSpan -> int32) = _.Minutes let v87 : int32 = v86 v77 let v90 : (System.TimeSpan -> int32) = _.Seconds let v91 : int32 = v90 v77 let v94 : (System.TimeSpan -> int32) = _.Milliseconds let v95 : int32 = v94 v77 let v98 : System.DateTime = System.DateTime (1, 1, 1, v83, v87, v91, v95) v98 let v118 : string = method11() let v121 : bool = v118 = "" let v123 : string = if v121 then let v122 : string = "M-d-y hh:mm:ss tt" v122 else v118 let v124 : (string -> string) = v117.ToString let v125 : string = v124 v123 let _run_target_args'_v6 = v125 #endif #if FABLE_COMPILER_RUST && WASM let v139 : (int64 -> US2) = method10() let v140 : US2 option = v5 |> Option.map v139 let v151 : US2 = US2_1 let v152 : US2 = v140 |> Option.defaultValue v151 let v249 : System.DateTime = match v152 with | US2_1 -> (* None *) let v233 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v234 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v234 #endif #if FABLE_COMPILER_RUST && WASM let v235 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v235 #endif #if FABLE_COMPILER_RUST && CONTRACT let v236 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v233 = v236 #endif #if FABLE_COMPILER_TYPESCRIPT let v239 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v239 #endif #if FABLE_COMPILER_PYTHON let v240 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v240 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v241 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v241 #endif #else let v242 : System.DateTime = System.DateTime.Now let _run_target_args'_v233 = v242 #endif let v243 : System.DateTime = _run_target_args'_v233 v243 | US2_0(v156) -> (* Some *) let v157 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v158 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v158 #endif #if FABLE_COMPILER_RUST && WASM let v159 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v159 #endif #if FABLE_COMPILER_RUST && CONTRACT let v160 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v157 = v160 #endif #if FABLE_COMPILER_TYPESCRIPT let v163 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v163 #endif #if FABLE_COMPILER_PYTHON let v164 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v164 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v165 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v165 #endif #else let v166 : System.DateTime = System.DateTime.Now let _run_target_args'_v157 = v166 #endif let v167 : System.DateTime = _run_target_args'_v157 let v172 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v173 : (System.DateTime -> int64) = _.Ticks let v174 : int64 = v173 v167 let _run_target_args'_v172 = v174 #endif #if FABLE_COMPILER_RUST && WASM let v175 : (System.DateTime -> int64) = _.Ticks let v176 : int64 = v175 v167 let _run_target_args'_v172 = v176 #endif #if FABLE_COMPILER_RUST && CONTRACT let v177 : int64 = null |> unbox<int64> let _run_target_args'_v172 = v177 #endif #if FABLE_COMPILER_TYPESCRIPT let v180 : (System.DateTime -> int64) = _.Ticks let v181 : int64 = v180 v167 let _run_target_args'_v172 = v181 #endif #if FABLE_COMPILER_PYTHON let v182 : (System.DateTime -> int64) = _.Ticks let v183 : int64 = v182 v167 let _run_target_args'_v172 = v183 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v184 : (System.DateTime -> int64) = _.Ticks let v185 : int64 = v184 v167 let _run_target_args'_v172 = v185 #endif #else let v186 : (System.DateTime -> int64) = _.Ticks let v187 : int64 = v186 v167 let _run_target_args'_v172 = v187 #endif let v188 : int64 = _run_target_args'_v172 let v205 : int64 = v188 |> int64 let v208 : int64 = v205 - v156 let v209 : System.TimeSpan = v208 |> System.TimeSpan let v214 : (System.TimeSpan -> int32) = _.Hours let v215 : int32 = v214 v209 let v218 : (System.TimeSpan -> int32) = _.Minutes let v219 : int32 = v218 v209 let v222 : (System.TimeSpan -> int32) = _.Seconds let v223 : int32 = v222 v209 let v226 : (System.TimeSpan -> int32) = _.Milliseconds let v227 : int32 = v226 v209 let v230 : System.DateTime = System.DateTime (1, 1, 1, v215, v219, v223, v227) v230 let v250 : string = method11() let v253 : bool = v250 = "" let v255 : string = if v253 then let v254 : string = "M-d-y hh:mm:ss tt" v254 else v250 let v256 : (string -> string) = v249.ToString let v257 : string = v256 v255 let _run_target_args'_v6 = v257 #endif #if FABLE_COMPILER_RUST && CONTRACT let v271 : string = $"near_sdk::env::block_timestamp()" let v272 : uint64 = Fable.Core.RustInterop.emitRustExpr () v271 let v273 : (int64 -> US2) = method10() let v274 : US2 option = v5 |> Option.map v273 let v285 : US2 = US2_1 let v286 : US2 = v274 |> Option.defaultValue v285 let v297 : uint64 = match v286 with | US2_1 -> (* None *) v272 | US2_0(v290) -> (* Some *) let v291 : (int64 -> uint64) = uint64 let v292 : uint64 = v291 v290 let v295 : uint64 = v272 - v292 v295 let v298 : uint64 = v297 / 1000000000UL let v299 : uint64 = v298 % 60UL let v300 : uint64 = v298 / 60UL let v301 : uint64 = v300 % 60UL let v302 : uint64 = v298 / 3600UL let v303 : uint64 = v302 % 24UL let v304 : string = $"format!(\"{{:02}}:{{:02}}:{{:02}}\", $0, $1, $2)" let v305 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v303, v301, v299) v304 let v306 : string = "fable_library_rust::String_::fromString($0)" let v307 : string = Fable.Core.RustInterop.emitRustExpr v305 v306 let _run_target_args'_v6 = v307 #endif #if FABLE_COMPILER_TYPESCRIPT let v308 : (int64 -> US2) = method10() let v309 : US2 option = v5 |> Option.map v308 let v320 : US2 = US2_1 let v321 : US2 = v309 |> Option.defaultValue v320 let v418 : System.DateTime = match v321 with | US2_1 -> (* None *) let v402 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v403 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v403 #endif #if FABLE_COMPILER_RUST && WASM let v404 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v404 #endif #if FABLE_COMPILER_RUST && CONTRACT let v405 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v402 = v405 #endif #if FABLE_COMPILER_TYPESCRIPT let v408 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v408 #endif #if FABLE_COMPILER_PYTHON let v409 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v409 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v410 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v410 #endif #else let v411 : System.DateTime = System.DateTime.Now let _run_target_args'_v402 = v411 #endif let v412 : System.DateTime = _run_target_args'_v402 v412 | US2_0(v325) -> (* Some *) let v326 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v327 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v327 #endif #if FABLE_COMPILER_RUST && WASM let v328 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v328 #endif #if FABLE_COMPILER_RUST && CONTRACT let v329 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v326 = v329 #endif #if FABLE_COMPILER_TYPESCRIPT let v332 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v332 #endif #if FABLE_COMPILER_PYTHON let v333 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v333 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v334 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v334 #endif #else let v335 : System.DateTime = System.DateTime.Now let _run_target_args'_v326 = v335 #endif let v336 : System.DateTime = _run_target_args'_v326 let v341 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v342 : (System.DateTime -> int64) = _.Ticks let v343 : int64 = v342 v336 let _run_target_args'_v341 = v343 #endif #if FABLE_COMPILER_RUST && WASM let v344 : (System.DateTime -> int64) = _.Ticks let v345 : int64 = v344 v336 let _run_target_args'_v341 = v345 #endif #if FABLE_COMPILER_RUST && CONTRACT let v346 : int64 = null |> unbox<int64> let _run_target_args'_v341 = v346 #endif #if FABLE_COMPILER_TYPESCRIPT let v349 : (System.DateTime -> int64) = _.Ticks let v350 : int64 = v349 v336 let _run_target_args'_v341 = v350 #endif #if FABLE_COMPILER_PYTHON let v351 : (System.DateTime -> int64) = _.Ticks let v352 : int64 = v351 v336 let _run_target_args'_v341 = v352 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v353 : (System.DateTime -> int64) = _.Ticks let v354 : int64 = v353 v336 let _run_target_args'_v341 = v354 #endif #else let v355 : (System.DateTime -> int64) = _.Ticks let v356 : int64 = v355 v336 let _run_target_args'_v341 = v356 #endif let v357 : int64 = _run_target_args'_v341 let v374 : int64 = v357 |> int64 let v377 : int64 = v374 - v325 let v378 : System.TimeSpan = v377 |> System.TimeSpan let v383 : (System.TimeSpan -> int32) = _.Hours let v384 : int32 = v383 v378 let v387 : (System.TimeSpan -> int32) = _.Minutes let v388 : int32 = v387 v378 let v391 : (System.TimeSpan -> int32) = _.Seconds let v392 : int32 = v391 v378 let v395 : (System.TimeSpan -> int32) = _.Milliseconds let v396 : int32 = v395 v378 let v399 : System.DateTime = System.DateTime (1, 1, 1, v384, v388, v392, v396) v399 let v419 : string = method12() let v422 : bool = v419 = "" let v424 : string = if v422 then let v423 : string = "M-d-y hh:mm:ss tt" v423 else v419 let v425 : (string -> string) = v418.ToString let v426 : string = v425 v424 let _run_target_args'_v6 = v426 #endif #if FABLE_COMPILER_PYTHON let v440 : (int64 -> US2) = method10() let v441 : US2 option = v5 |> Option.map v440 let v452 : US2 = US2_1 let v453 : US2 = v441 |> Option.defaultValue v452 let v550 : System.DateTime = match v453 with | US2_1 -> (* None *) let v534 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v535 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v535 #endif #if FABLE_COMPILER_RUST && WASM let v536 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v536 #endif #if FABLE_COMPILER_RUST && CONTRACT let v537 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v534 = v537 #endif #if FABLE_COMPILER_TYPESCRIPT let v540 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v540 #endif #if FABLE_COMPILER_PYTHON let v541 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v541 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v542 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v542 #endif #else let v543 : System.DateTime = System.DateTime.Now let _run_target_args'_v534 = v543 #endif let v544 : System.DateTime = _run_target_args'_v534 v544 | US2_0(v457) -> (* Some *) let v458 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v459 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v459 #endif #if FABLE_COMPILER_RUST && WASM let v460 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v460 #endif #if FABLE_COMPILER_RUST && CONTRACT let v461 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v458 = v461 #endif #if FABLE_COMPILER_TYPESCRIPT let v464 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v464 #endif #if FABLE_COMPILER_PYTHON let v465 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v465 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v466 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v466 #endif #else let v467 : System.DateTime = System.DateTime.Now let _run_target_args'_v458 = v467 #endif let v468 : System.DateTime = _run_target_args'_v458 let v473 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v474 : (System.DateTime -> int64) = _.Ticks let v475 : int64 = v474 v468 let _run_target_args'_v473 = v475 #endif #if FABLE_COMPILER_RUST && WASM let v476 : (System.DateTime -> int64) = _.Ticks let v477 : int64 = v476 v468 let _run_target_args'_v473 = v477 #endif #if FABLE_COMPILER_RUST && CONTRACT let v478 : int64 = null |> unbox<int64> let _run_target_args'_v473 = v478 #endif #if FABLE_COMPILER_TYPESCRIPT let v481 : (System.DateTime -> int64) = _.Ticks let v482 : int64 = v481 v468 let _run_target_args'_v473 = v482 #endif #if FABLE_COMPILER_PYTHON let v483 : (System.DateTime -> int64) = _.Ticks let v484 : int64 = v483 v468 let _run_target_args'_v473 = v484 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v485 : (System.DateTime -> int64) = _.Ticks let v486 : int64 = v485 v468 let _run_target_args'_v473 = v486 #endif #else let v487 : (System.DateTime -> int64) = _.Ticks let v488 : int64 = v487 v468 let _run_target_args'_v473 = v488 #endif let v489 : int64 = _run_target_args'_v473 let v506 : int64 = v489 |> int64 let v509 : int64 = v506 - v457 let v510 : System.TimeSpan = v509 |> System.TimeSpan let v515 : (System.TimeSpan -> int32) = _.Hours let v516 : int32 = v515 v510 let v519 : (System.TimeSpan -> int32) = _.Minutes let v520 : int32 = v519 v510 let v523 : (System.TimeSpan -> int32) = _.Seconds let v524 : int32 = v523 v510 let v527 : (System.TimeSpan -> int32) = _.Milliseconds let v528 : int32 = v527 v510 let v531 : System.DateTime = System.DateTime (1, 1, 1, v516, v520, v524, v528) v531 let v551 : string = method12() let v554 : bool = v551 = "" let v556 : string = if v554 then let v555 : string = "M-d-y hh:mm:ss tt" v555 else v551 let v557 : (string -> string) = v550.ToString let v558 : string = v557 v556 let _run_target_args'_v6 = v558 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v572 : (int64 -> US2) = method10() let v573 : US2 option = v5 |> Option.map v572 let v584 : US2 = US2_1 let v585 : US2 = v573 |> Option.defaultValue v584 let v682 : System.DateTime = match v585 with | US2_1 -> (* None *) let v666 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v667 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v667 #endif #if FABLE_COMPILER_RUST && WASM let v668 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v668 #endif #if FABLE_COMPILER_RUST && CONTRACT let v669 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v666 = v669 #endif #if FABLE_COMPILER_TYPESCRIPT let v672 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v672 #endif #if FABLE_COMPILER_PYTHON let v673 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v673 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v674 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v674 #endif #else let v675 : System.DateTime = System.DateTime.Now let _run_target_args'_v666 = v675 #endif let v676 : System.DateTime = _run_target_args'_v666 v676 | US2_0(v589) -> (* Some *) let v590 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v591 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v591 #endif #if FABLE_COMPILER_RUST && WASM let v592 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v592 #endif #if FABLE_COMPILER_RUST && CONTRACT let v593 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v590 = v593 #endif #if FABLE_COMPILER_TYPESCRIPT let v596 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v596 #endif #if FABLE_COMPILER_PYTHON let v597 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v597 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v598 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v598 #endif #else let v599 : System.DateTime = System.DateTime.Now let _run_target_args'_v590 = v599 #endif let v600 : System.DateTime = _run_target_args'_v590 let v605 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v606 : (System.DateTime -> int64) = _.Ticks let v607 : int64 = v606 v600 let _run_target_args'_v605 = v607 #endif #if FABLE_COMPILER_RUST && WASM let v608 : (System.DateTime -> int64) = _.Ticks let v609 : int64 = v608 v600 let _run_target_args'_v605 = v609 #endif #if FABLE_COMPILER_RUST && CONTRACT let v610 : int64 = null |> unbox<int64> let _run_target_args'_v605 = v610 #endif #if FABLE_COMPILER_TYPESCRIPT let v613 : (System.DateTime -> int64) = _.Ticks let v614 : int64 = v613 v600 let _run_target_args'_v605 = v614 #endif #if FABLE_COMPILER_PYTHON let v615 : (System.DateTime -> int64) = _.Ticks let v616 : int64 = v615 v600 let _run_target_args'_v605 = v616 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v617 : (System.DateTime -> int64) = _.Ticks let v618 : int64 = v617 v600 let _run_target_args'_v605 = v618 #endif #else let v619 : (System.DateTime -> int64) = _.Ticks let v620 : int64 = v619 v600 let _run_target_args'_v605 = v620 #endif let v621 : int64 = _run_target_args'_v605 let v638 : int64 = v621 |> int64 let v641 : int64 = v638 - v589 let v642 : System.TimeSpan = v641 |> System.TimeSpan let v647 : (System.TimeSpan -> int32) = _.Hours let v648 : int32 = v647 v642 let v651 : (System.TimeSpan -> int32) = _.Minutes let v652 : int32 = v651 v642 let v655 : (System.TimeSpan -> int32) = _.Seconds let v656 : int32 = v655 v642 let v659 : (System.TimeSpan -> int32) = _.Milliseconds let v660 : int32 = v659 v642 let v663 : System.DateTime = System.DateTime (1, 1, 1, v648, v652, v656, v660) v663 let v683 : string = method12() let v686 : bool = v683 = "" let v688 : string = if v686 then let v687 : string = "M-d-y hh:mm:ss tt" v687 else v683 let v689 : (string -> string) = v682.ToString let v690 : string = v689 v688 let _run_target_args'_v6 = v690 #endif #else let v704 : (int64 -> US2) = method10() let v705 : US2 option = v5 |> Option.map v704 let v716 : US2 = US2_1 let v717 : US2 = v705 |> Option.defaultValue v716 let v814 : System.DateTime = match v717 with | US2_1 -> (* None *) let v798 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v799 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v799 #endif #if FABLE_COMPILER_RUST && WASM let v800 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v800 #endif #if FABLE_COMPILER_RUST && CONTRACT let v801 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v798 = v801 #endif #if FABLE_COMPILER_TYPESCRIPT let v804 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v804 #endif #if FABLE_COMPILER_PYTHON let v805 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v805 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v806 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v806 #endif #else let v807 : System.DateTime = System.DateTime.Now let _run_target_args'_v798 = v807 #endif let v808 : System.DateTime = _run_target_args'_v798 v808 | US2_0(v721) -> (* Some *) let v722 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v723 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v723 #endif #if FABLE_COMPILER_RUST && WASM let v724 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v724 #endif #if FABLE_COMPILER_RUST && CONTRACT let v725 : System.DateTime = null |> unbox<System.DateTime> let _run_target_args'_v722 = v725 #endif #if FABLE_COMPILER_TYPESCRIPT let v728 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v728 #endif #if FABLE_COMPILER_PYTHON let v729 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v729 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v730 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v730 #endif #else let v731 : System.DateTime = System.DateTime.Now let _run_target_args'_v722 = v731 #endif let v732 : System.DateTime = _run_target_args'_v722 let v737 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v738 : (System.DateTime -> int64) = _.Ticks let v739 : int64 = v738 v732 let _run_target_args'_v737 = v739 #endif #if FABLE_COMPILER_RUST && WASM let v740 : (System.DateTime -> int64) = _.Ticks let v741 : int64 = v740 v732 let _run_target_args'_v737 = v741 #endif #if FABLE_COMPILER_RUST && CONTRACT let v742 : int64 = null |> unbox<int64> let _run_target_args'_v737 = v742 #endif #if FABLE_COMPILER_TYPESCRIPT let v745 : (System.DateTime -> int64) = _.Ticks let v746 : int64 = v745 v732 let _run_target_args'_v737 = v746 #endif #if FABLE_COMPILER_PYTHON let v747 : (System.DateTime -> int64) = _.Ticks let v748 : int64 = v747 v732 let _run_target_args'_v737 = v748 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v749 : (System.DateTime -> int64) = _.Ticks let v750 : int64 = v749 v732 let _run_target_args'_v737 = v750 #endif #else let v751 : (System.DateTime -> int64) = _.Ticks let v752 : int64 = v751 v732 let _run_target_args'_v737 = v752 #endif let v753 : int64 = _run_target_args'_v737 let v770 : int64 = v753 |> int64 let v773 : int64 = v770 - v721 let v774 : System.TimeSpan = v773 |> System.TimeSpan let v779 : (System.TimeSpan -> int32) = _.Hours let v780 : int32 = v779 v774 let v783 : (System.TimeSpan -> int32) = _.Minutes let v784 : int32 = v783 v774 let v787 : (System.TimeSpan -> int32) = _.Seconds let v788 : int32 = v787 v774 let v791 : (System.TimeSpan -> int32) = _.Milliseconds let v792 : int32 = v791 v774 let v795 : System.DateTime = System.DateTime (1, 1, 1, v780, v784, v788, v792) v795 let v815 : string = method12() let v818 : bool = v815 = "" let v820 : string = if v818 then let v819 : string = "M-d-y hh:mm:ss tt" v819 else v815 let v821 : (string -> string) = v814.ToString let v822 : string = v821 v820 let _run_target_args'_v6 = v822 #endif let v836 : string = _run_target_args'_v6 v836 and method15 () : string = let v0 : string = "" v0 and closure7 (v0 : Mut3, v1 : string) () : unit = let v2 : string = v0.l0 let v3 : string = v2 + v1 v0.l0 <- v3 () and method14 (v0 : char) : string = let v1 : string = method15() let v2 : Mut3 = {l0 = v1} : Mut3 let v3 : string = $"{v0}" let v6 : unit = () let v7 : (unit -> unit) = closure7(v2, v3) let v8 : unit = (fun () -> v7 (); v6) () let v11 : string = v2.l0 v11 and method16 () : string = let v0 : string = "\u001b[0m" v0 and method13 () : string = let v0 : string = "Verbose" let v1 : (unit -> string) = v0.ToLower let v2 : string = v1 () let v5 : char = v2.[int 0] let v6 : string = method14(v5) let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "inline_colorization::color_bright_black" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "&*$0" let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "&*$0" let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "&*$0" let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v23 #endif #else let v26 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v26 #endif let v29 : Ref<Str> = _run_target_args'_v10 let v34 : string = "inline_colorization::color_reset" let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 let v38 : string = "fable_library_rust::String_::fromString($0)" let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 let _run_target_args'_v7 = v39 #endif #if FABLE_COMPILER_RUST && WASM let v40 : string = "inline_colorization::color_bright_black" let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 let v42 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v43 : string = "&*$0" let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 let _run_target_args'_v42 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v45 : string = "&*$0" let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 let _run_target_args'_v42 = v46 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = "&*$0" let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 let _run_target_args'_v42 = v48 #endif #if FABLE_COMPILER_TYPESCRIPT let v49 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v49 #endif #if FABLE_COMPILER_PYTHON let v52 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v52 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v55 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v55 #endif #else let v58 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v58 #endif let v61 : Ref<Str> = _run_target_args'_v42 let v66 : string = "inline_colorization::color_reset" let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 let v70 : string = "fable_library_rust::String_::fromString($0)" let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 let _run_target_args'_v7 = v71 #endif #if FABLE_COMPILER_RUST && CONTRACT let v72 : string = "inline_colorization::color_bright_black" let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 let v74 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v75 : string = "&*$0" let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 let _run_target_args'_v74 = v76 #endif #if FABLE_COMPILER_RUST && WASM let v77 : string = "&*$0" let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 let _run_target_args'_v74 = v78 #endif #if FABLE_COMPILER_RUST && CONTRACT let v79 : string = "&*$0" let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 let _run_target_args'_v74 = v80 #endif #if FABLE_COMPILER_TYPESCRIPT let v81 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v81 #endif #if FABLE_COMPILER_PYTHON let v84 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v84 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v87 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v87 #endif #else let v90 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v90 #endif let v93 : Ref<Str> = _run_target_args'_v74 let v98 : string = "inline_colorization::color_reset" let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 let v102 : string = "fable_library_rust::String_::fromString($0)" let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 let _run_target_args'_v7 = v103 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : string = "\u001b[90m" let v105 : string = method16() let v106 : string = v104 + v6 let v107 : string = v106 + v105 let _run_target_args'_v7 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : string = "\u001b[90m" let v109 : string = method16() let v110 : string = v108 + v6 let v111 : string = v110 + v109 let _run_target_args'_v7 = v111 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v112 : string = "\u001b[90m" let v113 : string = method16() let v114 : string = v112 + v6 let v115 : string = v114 + v113 let _run_target_args'_v7 = v115 #endif #else let v116 : string = "\u001b[90m" let v117 : string = method16() let v118 : string = v116 + v6 let v119 : string = v118 + v117 let _run_target_args'_v7 = v119 #endif let v120 : string = _run_target_args'_v7 v120 and method18 (v0 : int32, v1 : string) : string = let v2 : string = method15() let v3 : Mut3 = {l0 = v2} : Mut3 let v4 : string = "{ " let v5 : string = $"{v4}" let v8 : unit = () let v9 : (unit -> unit) = closure7(v3, v5) let v10 : unit = (fun () -> v9 (); v8) () let v13 : string = "port" let v14 : string = $"{v13}" let v17 : unit = () let v18 : (unit -> unit) = closure7(v3, v14) let v19 : unit = (fun () -> v18 (); v17) () let v22 : string = " = " let v23 : string = $"{v22}" let v26 : unit = () let v27 : (unit -> unit) = closure7(v3, v23) let v28 : unit = (fun () -> v27 (); v26) () let v31 : string = $"{v0}" let v34 : unit = () let v35 : (unit -> unit) = closure7(v3, v31) let v36 : unit = (fun () -> v35 (); v34) () let v39 : string = "; " let v40 : string = $"{v39}" let v43 : unit = () let v44 : (unit -> unit) = closure7(v3, v40) let v45 : unit = (fun () -> v44 (); v43) () let v48 : string = "ex" let v49 : string = $"{v48}" let v52 : unit = () let v53 : (unit -> unit) = closure7(v3, v49) let v54 : unit = (fun () -> v53 (); v52) () let v57 : string = $"{v22}" let v60 : unit = () let v61 : (unit -> unit) = closure7(v3, v57) let v62 : unit = (fun () -> v61 (); v60) () let v65 : string = $"{v1}" let v68 : unit = () let v69 : (unit -> unit) = closure7(v3, v65) let v70 : unit = (fun () -> v69 (); v68) () let v73 : string = " }" let v74 : string = $"{v73}" let v77 : unit = () let v78 : (unit -> unit) = closure7(v3, v74) let v79 : unit = (fun () -> v78 (); v77) () let v82 : string = v3.l0 v82 and method19 (v0 : string) : string = let v1 : char list = [] let v2 : (char list -> (char [])) = List.toArray let v3 : (char []) = v2 v1 let v6 : string = v0.TrimStart v3 let v30 : char list = [] let v31 : char list = '/' :: v30 let v34 : char list = ' ' :: v31 let v37 : (char list -> (char [])) = List.toArray let v38 : (char []) = v37 v34 let v41 : string = v6.TrimEnd v38 v41 and method17 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string = let v10 : string = method18(v8, v9) let v11 : int64 = v0.l0 let v12 : string = "networking.test_port_open" let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}" method19(v13) and closure8 (v0 : Mut0) () : unit = let v1 : int64 = v0.l0 let v2 : int64 = v1 + 1L v0.l0 <- v2 () and closure10 (v0 : string) () : unit = let v1 : (string -> unit) = System.Console.WriteLine v1 v0 and closure9 () (v0 : string) : unit = let v1 : unit = () let v2 : (unit -> unit) = closure10(v0) let v3 : unit = (fun () -> v2 (); v1) () () and method20 (v0 : string) : unit = let v1 : unit = () let v2 : (unit -> unit) = closure0() let v3 : unit = (fun () -> v2 (); v1) () let struct (v17 : Mut0, v18 : Mut1, v19 : Mut2, v20 : Mut3, v21 : Mut4, v22 : int64 option) = TraceState.trace_state.Value let v35 : unit = () let v36 : (unit -> unit) = closure8(v17) let v37 : unit = (fun () -> v36 (); v35) () let v40 : (string -> unit) = closure9() let v41 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v42 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v0 v42 #endif #if FABLE_COMPILER_RUST && WASM let v43 : string = @"println!(""{}"", $0)" Fable.Core.RustInterop.emitRustExpr v0 v43 #endif #if FABLE_COMPILER_RUST && CONTRACT let v44 : string = v20.l0 let v45 : bool = v44 = "" let v53 : string = if v45 then v0 else let v46 : bool = v0 = "" if v46 then let v47 : string = v20.l0 v47 else let v48 : string = v20.l0 let v49 : string = "\n" let v50 : string = v48 + v49 let v51 : string = v50 + v0 v51 let v54 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v55 : string = "&*$0" let v56 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v55 let _run_target_args'_v54 = v56 #endif #if FABLE_COMPILER_RUST && WASM let v57 : string = "&*$0" let v58 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v57 let _run_target_args'_v54 = v58 #endif #if FABLE_COMPILER_RUST && CONTRACT let v59 : string = "&*$0" let v60 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v53 v59 let _run_target_args'_v54 = v60 #endif #if FABLE_COMPILER_TYPESCRIPT let v61 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v61 #endif #if FABLE_COMPILER_PYTHON let v64 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v64 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v67 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v67 #endif #else let v70 : Ref<Str> = v53 |> unbox<Ref<Str>> let _run_target_args'_v54 = v70 #endif let v73 : Ref<Str> = _run_target_args'_v54 let v78 : string = $"$0.chars()" let v79 : Mut<_> = Fable.Core.RustInterop.emitRustExpr v73 v78 let v80 : string = "$0" let v81 : _ = Fable.Core.RustInterop.emitRustExpr v79 v80 let v82 : string = "$0.collect::<Vec<_>>()" let v83 : Vec<char> = Fable.Core.RustInterop.emitRustExpr v81 v82 let v84 : string = "$0.chunks(15000).map(|x| x.into_iter().map(|x| x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()" let v85 : Vec<Vec<char>> = Fable.Core.RustInterop.emitRustExpr v83 v84 let v86 : string = "true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //" let v87 : bool = Fable.Core.RustInterop.emitRustExpr v85 v86 let v88 : string = "x" let v89 : Vec<char> = Fable.Core.RustInterop.emitRustExpr () v88 let v90 : string = "String::from_iter($0)" let v91 : std_string_String = Fable.Core.RustInterop.emitRustExpr v89 v90 let v92 : string = "true; $0 }).collect::<Vec<_>>()" let v93 : bool = Fable.Core.RustInterop.emitRustExpr v91 v92 let v94 : string = "_vec_map" let v95 : Vec<std_string_String> = Fable.Core.RustInterop.emitRustExpr () v94 let v96 : string = "$0.len()" let v97 : unativeint = Fable.Core.RustInterop.emitRustExpr v95 v96 let v98 : int32 = v97 |> int32 let v105 : string = "" let v106 : bool = v0 <> v105 let v110 : bool = if v106 then let v109 : bool = v98 <= 1 v109 else false if v110 then v20.l0 <- v53 () else v20.l0 <- v105 let v111 : string = "true; $0.into_iter().for_each(|x| { //" let v112 : bool = Fable.Core.RustInterop.emitRustExpr v95 v111 let v113 : string = "x" let v114 : std_string_String = Fable.Core.RustInterop.emitRustExpr () v113 let v115 : string = $"true; near_sdk::log!(\"{{}}\", $0)" let v116 : bool = Fable.Core.RustInterop.emitRustExpr v114 v115 let v117 : string = $"true" let v118 : bool = Fable.Core.RustInterop.emitRustExpr () v117 let v119 : string = "true; }); //" let v120 : bool = Fable.Core.RustInterop.emitRustExpr () v119 () #endif #if FABLE_COMPILER_TYPESCRIPT v40 v0 #endif #if FABLE_COMPILER_PYTHON v40 v0 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON v40 v0 #endif #else v40 v0 #endif // run_target_args' is_unit let v121 : (string -> unit) = v18.l0 v121 v0 and closure5 (v0 : int32, v1 : exn) () : unit = let v2 : US0 = US0_0 let v3 : bool = method8(v2) if v3 then let v4 : unit = () let v5 : (unit -> unit) = closure0() let v6 : unit = (fun () -> v5 (); v4) () let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value let v38 : string = method9(v20, v21, v22, v23, v24, v25) let v39 : string = method13() let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : string = $"%A{v1}" let _run_target_args'_v40 = v41 #endif #if FABLE_COMPILER_RUST && WASM let v44 : string = $"%A{v1}" let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = $"%A{v1}" let _run_target_args'_v40 = v47 #endif #if FABLE_COMPILER_TYPESCRIPT let v50 : string = $"%A{v1}" let _run_target_args'_v40 = v50 #endif #if FABLE_COMPILER_PYTHON let v53 : string = $"%A{v1}" let _run_target_args'_v40 = v53 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v56 : string = $"%A{v1}" let _run_target_args'_v40 = v56 #endif #else let v59 : string = $"{v1.GetType ()}: {v1.Message}" let _run_target_args'_v40 = v59 #endif let v60 : string = _run_target_args'_v40 let v65 : string = method17(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60) method20(v65) and method7 (v0 : string, v1 : int32) : Async<bool> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let v15 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v15 = v15 let v16 : System.Threading.CancellationToken = v15 let v17 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v18 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v18 #endif #if FABLE_COMPILER_RUST && WASM let v21 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v21 #endif #if FABLE_COMPILER_RUST && CONTRACT let v24 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v24 #endif #if FABLE_COMPILER_TYPESCRIPT let v27 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v27 #endif #if FABLE_COMPILER_PYTHON let v30 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v30 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v33 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v17 = v33 #endif #else let v36 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v17 = v36 #endif let v37 : System_Net_Sockets_TcpClient = _run_target_args'_v17 use v37 = v37 let v42 : System_Net_Sockets_TcpClient = v37 try let v43 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v44 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v47 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v47 #endif #if FABLE_COMPILER_RUST && CONTRACT let v50 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v50 #endif #if FABLE_COMPILER_TYPESCRIPT let v53 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v53 #endif #if FABLE_COMPILER_PYTHON let v56 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v56 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v59 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v43 = v59 #endif #else let v62 : System.Threading.Tasks.ValueTask = v42.ConnectAsync (v0, v1, v16) let _run_target_args'_v43 = v62 #endif let v63 : System.Threading.Tasks.ValueTask = _run_target_args'_v43 let v68 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v69 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v69 #endif #if FABLE_COMPILER_RUST && WASM let v72 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v72 #endif #if FABLE_COMPILER_RUST && CONTRACT let v75 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v75 #endif #if FABLE_COMPILER_TYPESCRIPT let v78 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v78 #endif #if FABLE_COMPILER_PYTHON let v81 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v81 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v84 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v68 = v84 #endif #else let v87 : (unit -> System.Threading.Tasks.Task) = v63.AsTask let v88 : System.Threading.Tasks.Task = v87 () let _run_target_args'_v68 = v88 #endif let v89 : System.Threading.Tasks.Task = _run_target_args'_v68 let v94 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v95 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v95 #endif #if FABLE_COMPILER_RUST && WASM let v98 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v98 #endif #if FABLE_COMPILER_RUST && CONTRACT let v101 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v94 = v101 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v105 : Async<unit> = v104 v89 let _run_target_args'_v94 = v105 #endif #if FABLE_COMPILER_PYTHON let v106 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v107 : Async<unit> = v106 v89 let _run_target_args'_v94 = v107 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v108 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v109 : Async<unit> = v108 v89 let _run_target_args'_v94 = v109 #endif #else let v110 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v111 : Async<unit> = v110 v89 let _run_target_args'_v94 = v111 #endif let v112 : Async<unit> = _run_target_args'_v94 do! v112 return true (* indent () indent *) with ex -> let v191 : exn = ex let v192 : unit = () let v193 : (unit -> unit) = closure5(v1, v191) let v194 : unit = (fun () -> v193 (); v192) () return false (* indent () indent *) (* try_unit let v327 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v2535 : Async<bool> = _let'_v12 let _run_target_args'_v2 = v2535 #endif #if FABLE_COMPILER_PYTHON let v2536 : unit = () let _let'_v2536 = async { let v2539 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v2539 = v2539 let v2540 : System.Threading.CancellationToken = v2539 let v2541 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2542 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2542 #endif #if FABLE_COMPILER_RUST && WASM let v2545 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2545 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2548 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2548 #endif #if FABLE_COMPILER_TYPESCRIPT let v2551 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2551 #endif #if FABLE_COMPILER_PYTHON let v2554 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2554 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2557 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v2541 = v2557 #endif #else let v2560 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v2541 = v2560 #endif let v2561 : System_Net_Sockets_TcpClient = _run_target_args'_v2541 use v2561 = v2561 let v2566 : System_Net_Sockets_TcpClient = v2561 try let v2567 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2568 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2568 #endif #if FABLE_COMPILER_RUST && WASM let v2571 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2571 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2574 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2574 #endif #if FABLE_COMPILER_TYPESCRIPT let v2577 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2577 #endif #if FABLE_COMPILER_PYTHON let v2580 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2580 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2583 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v2567 = v2583 #endif #else let v2586 : System.Threading.Tasks.ValueTask = v2566.ConnectAsync (v0, v1, v2540) let _run_target_args'_v2567 = v2586 #endif let v2587 : System.Threading.Tasks.ValueTask = _run_target_args'_v2567 let v2592 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2593 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2593 #endif #if FABLE_COMPILER_RUST && WASM let v2596 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2596 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2599 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2599 #endif #if FABLE_COMPILER_TYPESCRIPT let v2602 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2602 #endif #if FABLE_COMPILER_PYTHON let v2605 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2605 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2608 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v2592 = v2608 #endif #else let v2611 : (unit -> System.Threading.Tasks.Task) = v2587.AsTask let v2612 : System.Threading.Tasks.Task = v2611 () let _run_target_args'_v2592 = v2612 #endif let v2613 : System.Threading.Tasks.Task = _run_target_args'_v2592 let v2618 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2619 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2619 #endif #if FABLE_COMPILER_RUST && WASM let v2622 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2622 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2625 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v2618 = v2625 #endif #if FABLE_COMPILER_TYPESCRIPT let v2628 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2629 : Async<unit> = v2628 v2613 let _run_target_args'_v2618 = v2629 #endif #if FABLE_COMPILER_PYTHON let v2630 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2631 : Async<unit> = v2630 v2613 let _run_target_args'_v2618 = v2631 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2632 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2633 : Async<unit> = v2632 v2613 let _run_target_args'_v2618 = v2633 #endif #else let v2634 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v2635 : Async<unit> = v2634 v2613 let _run_target_args'_v2618 = v2635 #endif let v2636 : Async<unit> = _run_target_args'_v2618 do! v2636 return true (* indent () indent *) with ex -> let v2715 : exn = ex let v2716 : unit = () let v2717 : (unit -> unit) = closure5(v1, v2715) let v2718 : unit = (fun () -> v2717 (); v2716) () return false (* indent () indent *) (* try_unit let v2851 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v5059 : Async<bool> = _let'_v2536 let _run_target_args'_v2 = v5059 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5060 : unit = () let _let'_v5060 = async { let v5063 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v5063 = v5063 let v5064 : System.Threading.CancellationToken = v5063 let v5065 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5066 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5066 #endif #if FABLE_COMPILER_RUST && WASM let v5069 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5069 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5072 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5072 #endif #if FABLE_COMPILER_TYPESCRIPT let v5075 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5075 #endif #if FABLE_COMPILER_PYTHON let v5078 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5078 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5081 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v5065 = v5081 #endif #else let v5084 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v5065 = v5084 #endif let v5085 : System_Net_Sockets_TcpClient = _run_target_args'_v5065 use v5085 = v5085 let v5090 : System_Net_Sockets_TcpClient = v5085 try let v5091 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5092 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5092 #endif #if FABLE_COMPILER_RUST && WASM let v5095 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5095 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5098 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5098 #endif #if FABLE_COMPILER_TYPESCRIPT let v5101 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5101 #endif #if FABLE_COMPILER_PYTHON let v5104 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5104 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5107 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v5091 = v5107 #endif #else let v5110 : System.Threading.Tasks.ValueTask = v5090.ConnectAsync (v0, v1, v5064) let _run_target_args'_v5091 = v5110 #endif let v5111 : System.Threading.Tasks.ValueTask = _run_target_args'_v5091 let v5116 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5117 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5117 #endif #if FABLE_COMPILER_RUST && WASM let v5120 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5120 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5123 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5123 #endif #if FABLE_COMPILER_TYPESCRIPT let v5126 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5126 #endif #if FABLE_COMPILER_PYTHON let v5129 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5129 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5132 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v5116 = v5132 #endif #else let v5135 : (unit -> System.Threading.Tasks.Task) = v5111.AsTask let v5136 : System.Threading.Tasks.Task = v5135 () let _run_target_args'_v5116 = v5136 #endif let v5137 : System.Threading.Tasks.Task = _run_target_args'_v5116 let v5142 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v5143 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5143 #endif #if FABLE_COMPILER_RUST && WASM let v5146 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5146 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5149 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v5142 = v5149 #endif #if FABLE_COMPILER_TYPESCRIPT let v5152 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5153 : Async<unit> = v5152 v5137 let _run_target_args'_v5142 = v5153 #endif #if FABLE_COMPILER_PYTHON let v5154 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5155 : Async<unit> = v5154 v5137 let _run_target_args'_v5142 = v5155 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v5156 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5157 : Async<unit> = v5156 v5137 let _run_target_args'_v5142 = v5157 #endif #else let v5158 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v5159 : Async<unit> = v5158 v5137 let _run_target_args'_v5142 = v5159 #endif let v5160 : Async<unit> = _run_target_args'_v5142 do! v5160 return true (* indent () indent *) with ex -> let v5239 : exn = ex let v5240 : unit = () let v5241 : (unit -> unit) = closure5(v1, v5239) let v5242 : unit = (fun () -> v5241 (); v5240) () return false (* indent () indent *) (* try_unit let v5375 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v7583 : Async<bool> = _let'_v5060 let _run_target_args'_v2 = v7583 #endif #else let v7584 : unit = () let _let'_v7584 = async { let v7587 : Async<System.Threading.CancellationToken> = Async.CancellationToken let! v7587 = v7587 let v7588 : System.Threading.CancellationToken = v7587 let v7589 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7590 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7590 #endif #if FABLE_COMPILER_RUST && WASM let v7593 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7593 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7596 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7596 #endif #if FABLE_COMPILER_TYPESCRIPT let v7599 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7599 #endif #if FABLE_COMPILER_PYTHON let v7602 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7602 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7605 : System_Net_Sockets_TcpClient = null |> unbox<System_Net_Sockets_TcpClient> let _run_target_args'_v7589 = v7605 #endif #else let v7608 : System_Net_Sockets_TcpClient = new System_Net_Sockets_TcpClient () let _run_target_args'_v7589 = v7608 #endif let v7609 : System_Net_Sockets_TcpClient = _run_target_args'_v7589 use v7609 = v7609 let v7614 : System_Net_Sockets_TcpClient = v7609 try let v7615 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7616 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7616 #endif #if FABLE_COMPILER_RUST && WASM let v7619 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7619 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7622 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7622 #endif #if FABLE_COMPILER_TYPESCRIPT let v7625 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7625 #endif #if FABLE_COMPILER_PYTHON let v7628 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7628 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7631 : System.Threading.Tasks.ValueTask = null |> unbox<System.Threading.Tasks.ValueTask> let _run_target_args'_v7615 = v7631 #endif #else let v7634 : System.Threading.Tasks.ValueTask = v7614.ConnectAsync (v0, v1, v7588) let _run_target_args'_v7615 = v7634 #endif let v7635 : System.Threading.Tasks.ValueTask = _run_target_args'_v7615 let v7640 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7641 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7641 #endif #if FABLE_COMPILER_RUST && WASM let v7644 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7644 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7647 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7647 #endif #if FABLE_COMPILER_TYPESCRIPT let v7650 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7650 #endif #if FABLE_COMPILER_PYTHON let v7653 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7653 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7656 : System.Threading.Tasks.Task = null |> unbox<System.Threading.Tasks.Task> let _run_target_args'_v7640 = v7656 #endif #else let v7659 : (unit -> System.Threading.Tasks.Task) = v7635.AsTask let v7660 : System.Threading.Tasks.Task = v7659 () let _run_target_args'_v7640 = v7660 #endif let v7661 : System.Threading.Tasks.Task = _run_target_args'_v7640 let v7666 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v7667 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7667 #endif #if FABLE_COMPILER_RUST && WASM let v7670 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7670 #endif #if FABLE_COMPILER_RUST && CONTRACT let v7673 : Async<unit> = null |> unbox<Async<unit>> let _run_target_args'_v7666 = v7673 #endif #if FABLE_COMPILER_TYPESCRIPT let v7676 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7677 : Async<unit> = v7676 v7661 let _run_target_args'_v7666 = v7677 #endif #if FABLE_COMPILER_PYTHON let v7678 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7679 : Async<unit> = v7678 v7661 let _run_target_args'_v7666 = v7679 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v7680 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7681 : Async<unit> = v7680 v7661 let _run_target_args'_v7666 = v7681 #endif #else let v7682 : (System.Threading.Tasks.Task -> Async<unit>) = Async.AwaitTask let v7683 : Async<unit> = v7682 v7661 let _run_target_args'_v7666 = v7683 #endif let v7684 : Async<unit> = _run_target_args'_v7666 do! v7684 return true (* indent () indent *) with ex -> let v7763 : exn = ex let v7764 : unit = () let v7765 : (unit -> unit) = closure5(v1, v7763) let v7766 : unit = (fun () -> v7765 (); v7764) () return false (* indent () indent *) (* try_unit let v7899 : bool = try_unit *) (* indent () indent *) } (* indent () indent *) let v10107 : Async<bool> = _let'_v7584 let _run_target_args'_v2 = v10107 #endif let v10108 : Async<bool> = _run_target_args'_v2 v10108 and method6 (v0 : string, v1 : int32) : Async<bool> = method7(v0, v1) and closure4 (v0 : string) (v1 : int32) : Async<bool> = method6(v0, v1) and closure3 () (v0 : string) : (int32 -> Async<bool>) = closure4(v0) and closure14 () (v0 : bool) : US7 = US7_0(v0) and method26 () : (bool -> US7) = closure14() and closure15 () (v0 : exn) : US7 = US7_1(v0) and method27 () : (exn -> US7) = closure15() and method25 (v0 : Async<Choice<bool, exn>>) : Async<US7> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<US7> = null |> unbox<Async<US7>> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : unit = () let _let'_v11 = async { let! v0 = v0 let v14 : Choice<bool, exn> = v0 let v15 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v16 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v16 #endif #if FABLE_COMPILER_RUST && WASM let v19 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v19 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v22 #endif #if FABLE_COMPILER_TYPESCRIPT let v25 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v25 #endif #if FABLE_COMPILER_PYTHON let v28 : US7 = null |> unbox<US7> let _run_target_args'_v15 = v28 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v31 : (bool -> US7) = method26() let v32 : (exn -> US7) = method27() let v33 : US7 = match v14 with Choice1Of2 x -> v31 x | Choice2Of2 x -> v32 x let _run_target_args'_v15 = v33 #endif #else let v34 : (bool -> US7) = method26() let v35 : (exn -> US7) = method27() let v36 : US7 = match v14 with Choice1Of2 x -> v34 x | Choice2Of2 x -> v35 x let _run_target_args'_v15 = v36 #endif let v37 : US7 = _run_target_args'_v15 return v37 (* indent () indent *) } (* indent () indent *) let v238 : Async<US7> = _let'_v11 let _run_target_args'_v1 = v238 #endif #if FABLE_COMPILER_PYTHON let v239 : unit = () let _let'_v239 = async { let! v0 = v0 let v242 : Choice<bool, exn> = v0 let v243 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v244 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v244 #endif #if FABLE_COMPILER_RUST && WASM let v247 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v247 #endif #if FABLE_COMPILER_RUST && CONTRACT let v250 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v250 #endif #if FABLE_COMPILER_TYPESCRIPT let v253 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v253 #endif #if FABLE_COMPILER_PYTHON let v256 : US7 = null |> unbox<US7> let _run_target_args'_v243 = v256 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v259 : (bool -> US7) = method26() let v260 : (exn -> US7) = method27() let v261 : US7 = match v242 with Choice1Of2 x -> v259 x | Choice2Of2 x -> v260 x let _run_target_args'_v243 = v261 #endif #else let v262 : (bool -> US7) = method26() let v263 : (exn -> US7) = method27() let v264 : US7 = match v242 with Choice1Of2 x -> v262 x | Choice2Of2 x -> v263 x let _run_target_args'_v243 = v264 #endif let v265 : US7 = _run_target_args'_v243 return v265 (* indent () indent *) } (* indent () indent *) let v466 : Async<US7> = _let'_v239 let _run_target_args'_v1 = v466 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v467 : unit = () let _let'_v467 = async { let! v0 = v0 let v470 : Choice<bool, exn> = v0 let v471 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v472 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v472 #endif #if FABLE_COMPILER_RUST && WASM let v475 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v475 #endif #if FABLE_COMPILER_RUST && CONTRACT let v478 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v478 #endif #if FABLE_COMPILER_TYPESCRIPT let v481 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v481 #endif #if FABLE_COMPILER_PYTHON let v484 : US7 = null |> unbox<US7> let _run_target_args'_v471 = v484 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v487 : (bool -> US7) = method26() let v488 : (exn -> US7) = method27() let v489 : US7 = match v470 with Choice1Of2 x -> v487 x | Choice2Of2 x -> v488 x let _run_target_args'_v471 = v489 #endif #else let v490 : (bool -> US7) = method26() let v491 : (exn -> US7) = method27() let v492 : US7 = match v470 with Choice1Of2 x -> v490 x | Choice2Of2 x -> v491 x let _run_target_args'_v471 = v492 #endif let v493 : US7 = _run_target_args'_v471 return v493 (* indent () indent *) } (* indent () indent *) let v694 : Async<US7> = _let'_v467 let _run_target_args'_v1 = v694 #endif #else let v695 : unit = () let _let'_v695 = async { let! v0 = v0 let v698 : Choice<bool, exn> = v0 let v699 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v700 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v700 #endif #if FABLE_COMPILER_RUST && WASM let v703 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v703 #endif #if FABLE_COMPILER_RUST && CONTRACT let v706 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v706 #endif #if FABLE_COMPILER_TYPESCRIPT let v709 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v709 #endif #if FABLE_COMPILER_PYTHON let v712 : US7 = null |> unbox<US7> let _run_target_args'_v699 = v712 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v715 : (bool -> US7) = method26() let v716 : (exn -> US7) = method27() let v717 : US7 = match v698 with Choice1Of2 x -> v715 x | Choice2Of2 x -> v716 x let _run_target_args'_v699 = v717 #endif #else let v718 : (bool -> US7) = method26() let v719 : (exn -> US7) = method27() let v720 : US7 = match v698 with Choice1Of2 x -> v718 x | Choice2Of2 x -> v719 x let _run_target_args'_v699 = v720 #endif let v721 : US7 = _run_target_args'_v699 return v721 (* indent () indent *) } (* indent () indent *) let v922 : Async<US7> = _let'_v695 let _run_target_args'_v1 = v922 #endif let v923 : Async<US7> = _run_target_args'_v1 v923 and method28 (v0 : Async<US7>) : Async<US8> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<US8> = null |> unbox<Async<US8>> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : unit = () let _let'_v11 = async { let! v0 = v0 let v14 : US7 = v0 let v20 : US8 = match v14 with | US7_0(v15) -> (* C1of2 *) US8_0(v15) | US7_1(v17) -> (* C2of2 *) US8_1(v17) return v20 (* indent () indent *) } (* indent () indent *) let v70 : Async<US8> = _let'_v11 let _run_target_args'_v1 = v70 #endif #if FABLE_COMPILER_PYTHON let v71 : unit = () let _let'_v71 = async { let! v0 = v0 let v74 : US7 = v0 let v80 : US8 = match v74 with | US7_0(v75) -> (* C1of2 *) US8_0(v75) | US7_1(v77) -> (* C2of2 *) US8_1(v77) return v80 (* indent () indent *) } (* indent () indent *) let v130 : Async<US8> = _let'_v71 let _run_target_args'_v1 = v130 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v131 : unit = () let _let'_v131 = async { let! v0 = v0 let v134 : US7 = v0 let v140 : US8 = match v134 with | US7_0(v135) -> (* C1of2 *) US8_0(v135) | US7_1(v137) -> (* C2of2 *) US8_1(v137) return v140 (* indent () indent *) } (* indent () indent *) let v190 : Async<US8> = _let'_v131 let _run_target_args'_v1 = v190 #endif #else let v191 : unit = () let _let'_v191 = async { let! v0 = v0 let v194 : US7 = v0 let v200 : US8 = match v194 with | US7_0(v195) -> (* C1of2 *) US8_0(v195) | US7_1(v197) -> (* C2of2 *) US8_1(v197) return v200 (* indent () indent *) } (* indent () indent *) let v250 : Async<US8> = _let'_v191 let _run_target_args'_v1 = v250 #endif let v251 : Async<US8> = _run_target_args'_v1 v251 and method31 (v0 : int32) : string = let v1 : string = method15() let v2 : Mut3 = {l0 = v1} : Mut3 let v3 : string = "{ " let v4 : string = $"{v3}" let v7 : unit = () let v8 : (unit -> unit) = closure7(v2, v4) let v9 : unit = (fun () -> v8 (); v7) () let v12 : string = "timeout" let v13 : string = $"{v12}" let v16 : unit = () let v17 : (unit -> unit) = closure7(v2, v13) let v18 : unit = (fun () -> v17 (); v16) () let v21 : string = " = " let v22 : string = $"{v21}" let v25 : unit = () let v26 : (unit -> unit) = closure7(v2, v22) let v27 : unit = (fun () -> v26 (); v25) () let v30 : string = $"{v0}" let v33 : unit = () let v34 : (unit -> unit) = closure7(v2, v30) let v35 : unit = (fun () -> v34 (); v33) () let v38 : string = " }" let v39 : string = $"{v38}" let v42 : unit = () let v43 : (unit -> unit) = closure7(v2, v39) let v44 : unit = (fun () -> v43 (); v42) () let v47 : string = v2.l0 v47 and method30 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32) : string = let v9 : string = method31(v8) let v10 : int64 = v0.l0 let v11 : string = "async.run_with_timeout_async" let v12 : string = $"{v6} {v7} #{v10} %s{v11} / {v9}" method19(v12) and closure16 (v0 : int32) () : unit = let v1 : US0 = US0_0 let v2 : bool = method8(v1) if v2 then let v3 : unit = () let v4 : (unit -> unit) = closure0() let v5 : unit = (fun () -> v4 (); v3) () let struct (v19 : Mut0, v20 : Mut1, v21 : Mut2, v22 : Mut3, v23 : Mut4, v24 : int64 option) = TraceState.trace_state.Value let v37 : string = method9(v19, v20, v21, v22, v23, v24) let v38 : string = method13() let v39 : string = method30(v19, v20, v21, v22, v23, v24, v37, v38, v0) method20(v39) and method32 () : string = let v0 : string = "Critical" let v1 : (unit -> string) = v0.ToLower let v2 : string = v1 () let v5 : char = v2.[int 0] let v6 : string = method14(v5) let v7 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v8 : string = "inline_colorization::color_bright_red" let v9 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v8 let v10 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v11 : string = "&*$0" let v12 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v11 let _run_target_args'_v10 = v12 #endif #if FABLE_COMPILER_RUST && WASM let v13 : string = "&*$0" let v14 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v13 let _run_target_args'_v10 = v14 #endif #if FABLE_COMPILER_RUST && CONTRACT let v15 : string = "&*$0" let v16 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v15 let _run_target_args'_v10 = v16 #endif #if FABLE_COMPILER_TYPESCRIPT let v17 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v17 #endif #if FABLE_COMPILER_PYTHON let v20 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v20 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v23 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v23 #endif #else let v26 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v10 = v26 #endif let v29 : Ref<Str> = _run_target_args'_v10 let v34 : string = "inline_colorization::color_reset" let v35 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v34 let v36 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v37 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v9, v29, v35) v36 let v38 : string = "fable_library_rust::String_::fromString($0)" let v39 : string = Fable.Core.RustInterop.emitRustExpr v37 v38 let _run_target_args'_v7 = v39 #endif #if FABLE_COMPILER_RUST && WASM let v40 : string = "inline_colorization::color_bright_red" let v41 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v40 let v42 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v43 : string = "&*$0" let v44 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v43 let _run_target_args'_v42 = v44 #endif #if FABLE_COMPILER_RUST && WASM let v45 : string = "&*$0" let v46 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v45 let _run_target_args'_v42 = v46 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = "&*$0" let v48 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v47 let _run_target_args'_v42 = v48 #endif #if FABLE_COMPILER_TYPESCRIPT let v49 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v49 #endif #if FABLE_COMPILER_PYTHON let v52 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v52 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v55 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v55 #endif #else let v58 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v42 = v58 #endif let v61 : Ref<Str> = _run_target_args'_v42 let v66 : string = "inline_colorization::color_reset" let v67 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v66 let v68 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v69 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v41, v61, v67) v68 let v70 : string = "fable_library_rust::String_::fromString($0)" let v71 : string = Fable.Core.RustInterop.emitRustExpr v69 v70 let _run_target_args'_v7 = v71 #endif #if FABLE_COMPILER_RUST && CONTRACT let v72 : string = "inline_colorization::color_bright_red" let v73 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v72 let v74 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v75 : string = "&*$0" let v76 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v75 let _run_target_args'_v74 = v76 #endif #if FABLE_COMPILER_RUST && WASM let v77 : string = "&*$0" let v78 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v77 let _run_target_args'_v74 = v78 #endif #if FABLE_COMPILER_RUST && CONTRACT let v79 : string = "&*$0" let v80 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr v6 v79 let _run_target_args'_v74 = v80 #endif #if FABLE_COMPILER_TYPESCRIPT let v81 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v81 #endif #if FABLE_COMPILER_PYTHON let v84 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v84 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v87 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v87 #endif #else let v90 : Ref<Str> = v6 |> unbox<Ref<Str>> let _run_target_args'_v74 = v90 #endif let v93 : Ref<Str> = _run_target_args'_v74 let v98 : string = "inline_colorization::color_reset" let v99 : Ref<Str> = Fable.Core.RustInterop.emitRustExpr () v98 let v100 : string = $"format!(\"{{}}{{}}{{}}\", $0, $1, $2)" let v101 : std_string_String = Fable.Core.RustInterop.emitRustExpr struct (v73, v93, v99) v100 let v102 : string = "fable_library_rust::String_::fromString($0)" let v103 : string = Fable.Core.RustInterop.emitRustExpr v101 v102 let _run_target_args'_v7 = v103 #endif #if FABLE_COMPILER_TYPESCRIPT let v104 : string = "\u001b[91m" let v105 : string = method16() let v106 : string = v104 + v6 let v107 : string = v106 + v105 let _run_target_args'_v7 = v107 #endif #if FABLE_COMPILER_PYTHON let v108 : string = "\u001b[91m" let v109 : string = method16() let v110 : string = v108 + v6 let v111 : string = v110 + v109 let _run_target_args'_v7 = v111 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v112 : string = "\u001b[91m" let v113 : string = method16() let v114 : string = v112 + v6 let v115 : string = v114 + v113 let _run_target_args'_v7 = v115 #endif #else let v116 : string = "\u001b[91m" let v117 : string = method16() let v118 : string = v116 + v6 let v119 : string = v118 + v117 let _run_target_args'_v7 = v119 #endif let v120 : string = _run_target_args'_v7 v120 and method34 (v0 : int32, v1 : string) : string = let v2 : string = method15() let v3 : Mut3 = {l0 = v2} : Mut3 let v4 : string = "{ " let v5 : string = $"{v4}" let v8 : unit = () let v9 : (unit -> unit) = closure7(v3, v5) let v10 : unit = (fun () -> v9 (); v8) () let v13 : string = "timeout" let v14 : string = $"{v13}" let v17 : unit = () let v18 : (unit -> unit) = closure7(v3, v14) let v19 : unit = (fun () -> v18 (); v17) () let v22 : string = " = " let v23 : string = $"{v22}" let v26 : unit = () let v27 : (unit -> unit) = closure7(v3, v23) let v28 : unit = (fun () -> v27 (); v26) () let v31 : string = $"{v0}" let v34 : unit = () let v35 : (unit -> unit) = closure7(v3, v31) let v36 : unit = (fun () -> v35 (); v34) () let v39 : string = "; " let v40 : string = $"{v39}" let v43 : unit = () let v44 : (unit -> unit) = closure7(v3, v40) let v45 : unit = (fun () -> v44 (); v43) () let v48 : string = "ex" let v49 : string = $"{v48}" let v52 : unit = () let v53 : (unit -> unit) = closure7(v3, v49) let v54 : unit = (fun () -> v53 (); v52) () let v57 : string = $"{v22}" let v60 : unit = () let v61 : (unit -> unit) = closure7(v3, v57) let v62 : unit = (fun () -> v61 (); v60) () let v65 : string = $"{v1}" let v68 : unit = () let v69 : (unit -> unit) = closure7(v3, v65) let v70 : unit = (fun () -> v69 (); v68) () let v73 : string = " }" let v74 : string = $"{v73}" let v77 : unit = () let v78 : (unit -> unit) = closure7(v3, v74) let v79 : unit = (fun () -> v78 (); v77) () let v82 : string = v3.l0 v82 and method33 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : string) : string = let v10 : string = method34(v8, v9) let v11 : int64 = v0.l0 let v12 : string = "async.run_with_timeout_async**" let v13 : string = $"{v6} {v7} #{v11} %s{v12} / {v10}" method19(v13) and closure17 (v0 : int32, v1 : exn) () : unit = let v2 : US0 = US0_4 let v3 : bool = method8(v2) if v3 then let v4 : unit = () let v5 : (unit -> unit) = closure0() let v6 : unit = (fun () -> v5 (); v4) () let struct (v20 : Mut0, v21 : Mut1, v22 : Mut2, v23 : Mut3, v24 : Mut4, v25 : int64 option) = TraceState.trace_state.Value let v38 : string = method9(v20, v21, v22, v23, v24, v25) let v39 : string = method32() let v40 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v41 : string = $"%A{v1}" let _run_target_args'_v40 = v41 #endif #if FABLE_COMPILER_RUST && WASM let v44 : string = $"%A{v1}" let _run_target_args'_v40 = v44 #endif #if FABLE_COMPILER_RUST && CONTRACT let v47 : string = $"%A{v1}" let _run_target_args'_v40 = v47 #endif #if FABLE_COMPILER_TYPESCRIPT let v50 : string = $"%A{v1}" let _run_target_args'_v40 = v50 #endif #if FABLE_COMPILER_PYTHON let v53 : string = $"%A{v1}" let _run_target_args'_v40 = v53 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v56 : string = $"%A{v1}" let _run_target_args'_v40 = v56 #endif #else let v59 : string = $"{v1.GetType ()}: {v1.Message}" let _run_target_args'_v40 = v59 #endif let v60 : string = _run_target_args'_v40 let v65 : string = method33(v20, v21, v22, v23, v24, v25, v38, v39, v0, v60) method20(v65) and method29 (v0 : int32, v1 : Async<US8>) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let! v1 = v1 let v15 : US8 = v1 let v139 : US6 = match v15 with | US8_1(v18) -> (* Error *) let v19 : string = $"%A{v18}" let v22 : string = "System.TimeoutException" let v23 : bool = v19.Contains v22 if v23 then let v26 : unit = () let v27 : (unit -> unit) = closure16(v0) let v28 : unit = (fun () -> v27 (); v26) () US6_1 else let v69 : unit = () let v70 : (unit -> unit) = closure17(v0, v18) let v71 : unit = (fun () -> v70 (); v69) () US6_1 | US8_0(v16) -> (* Ok *) US6_0(v16) return v139 (* indent () indent *) } (* indent () indent *) let v1015 : Async<US6> = _let'_v12 let _run_target_args'_v2 = v1015 #endif #if FABLE_COMPILER_PYTHON let v1016 : unit = () let _let'_v1016 = async { let! v1 = v1 let v1019 : US8 = v1 let v1143 : US6 = match v1019 with | US8_1(v1022) -> (* Error *) let v1023 : string = $"%A{v1022}" let v1026 : string = "System.TimeoutException" let v1027 : bool = v1023.Contains v1026 if v1027 then let v1030 : unit = () let v1031 : (unit -> unit) = closure16(v0) let v1032 : unit = (fun () -> v1031 (); v1030) () US6_1 else let v1073 : unit = () let v1074 : (unit -> unit) = closure17(v0, v1022) let v1075 : unit = (fun () -> v1074 (); v1073) () US6_1 | US8_0(v1020) -> (* Ok *) US6_0(v1020) return v1143 (* indent () indent *) } (* indent () indent *) let v2019 : Async<US6> = _let'_v1016 let _run_target_args'_v2 = v2019 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2020 : unit = () let _let'_v2020 = async { let! v1 = v1 let v2023 : US8 = v1 let v2147 : US6 = match v2023 with | US8_1(v2026) -> (* Error *) let v2027 : string = $"%A{v2026}" let v2030 : string = "System.TimeoutException" let v2031 : bool = v2027.Contains v2030 if v2031 then let v2034 : unit = () let v2035 : (unit -> unit) = closure16(v0) let v2036 : unit = (fun () -> v2035 (); v2034) () US6_1 else let v2077 : unit = () let v2078 : (unit -> unit) = closure17(v0, v2026) let v2079 : unit = (fun () -> v2078 (); v2077) () US6_1 | US8_0(v2024) -> (* Ok *) US6_0(v2024) return v2147 (* indent () indent *) } (* indent () indent *) let v3023 : Async<US6> = _let'_v2020 let _run_target_args'_v2 = v3023 #endif #else let v3024 : unit = () let _let'_v3024 = async { let! v1 = v1 let v3027 : US8 = v1 let v3151 : US6 = match v3027 with | US8_1(v3030) -> (* Error *) let v3031 : string = $"%A{v3030}" let v3034 : string = "System.TimeoutException" let v3035 : bool = v3031.Contains v3034 if v3035 then let v3038 : unit = () let v3039 : (unit -> unit) = closure16(v0) let v3040 : unit = (fun () -> v3039 (); v3038) () US6_1 else let v3081 : unit = () let v3082 : (unit -> unit) = closure17(v0, v3030) let v3083 : unit = (fun () -> v3082 (); v3081) () US6_1 | US8_0(v3028) -> (* Ok *) US6_0(v3028) return v3151 (* indent () indent *) } (* indent () indent *) let v4027 : Async<US6> = _let'_v3024 let _run_target_args'_v2 = v4027 #endif let v4028 : Async<US6> = _run_target_args'_v2 v4028 and method24 (v0 : Async<bool>, v1 : int32) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v6 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_RUST && CONTRACT let v9 : Async<US6> = null |> unbox<Async<US6>> let _run_target_args'_v2 = v9 #endif #if FABLE_COMPILER_TYPESCRIPT let v12 : unit = () let _let'_v12 = async { let v15 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v16 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v16 #endif #if FABLE_COMPILER_RUST && WASM let v19 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v19 #endif #if FABLE_COMPILER_RUST && CONTRACT let v22 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v15 = v22 #endif #if FABLE_COMPILER_TYPESCRIPT let v25 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v25 #endif #if FABLE_COMPILER_PYTHON let v26 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v26 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v27 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v27 #endif #else let v28 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v15 = v28 #endif let v29 : Async<Async<bool>> = _run_target_args'_v15 let! v29 = v29 let v34 : Async<bool> = v29 let v35 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v36 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v36 #endif #if FABLE_COMPILER_RUST && WASM let v39 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v39 #endif #if FABLE_COMPILER_RUST && CONTRACT let v42 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v35 = v42 #endif #if FABLE_COMPILER_TYPESCRIPT let v45 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v46 : Async<Choice<bool, exn>> = v45 v34 let _run_target_args'_v35 = v46 #endif #if FABLE_COMPILER_PYTHON let v47 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v48 : Async<Choice<bool, exn>> = v47 v34 let _run_target_args'_v35 = v48 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v49 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v50 : Async<Choice<bool, exn>> = v49 v34 let _run_target_args'_v35 = v50 #endif #else let v51 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v52 : Async<Choice<bool, exn>> = v51 v34 let _run_target_args'_v35 = v52 #endif let v53 : Async<Choice<bool, exn>> = _run_target_args'_v35 let v58 : Async<US7> = method25(v53) let v59 : Async<US8> = method28(v58) let v60 : Async<US6> = method29(v1, v59) return! v60 (* indent () indent *) } (* indent () indent *) let v383 : Async<US6> = _let'_v12 let _run_target_args'_v2 = v383 #endif #if FABLE_COMPILER_PYTHON let v384 : unit = () let _let'_v384 = async { let v387 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v388 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v388 #endif #if FABLE_COMPILER_RUST && WASM let v391 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v391 #endif #if FABLE_COMPILER_RUST && CONTRACT let v394 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v387 = v394 #endif #if FABLE_COMPILER_TYPESCRIPT let v397 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v397 #endif #if FABLE_COMPILER_PYTHON let v398 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v398 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v399 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v399 #endif #else let v400 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v387 = v400 #endif let v401 : Async<Async<bool>> = _run_target_args'_v387 let! v401 = v401 let v406 : Async<bool> = v401 let v407 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v408 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v408 #endif #if FABLE_COMPILER_RUST && WASM let v411 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v411 #endif #if FABLE_COMPILER_RUST && CONTRACT let v414 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v407 = v414 #endif #if FABLE_COMPILER_TYPESCRIPT let v417 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v418 : Async<Choice<bool, exn>> = v417 v406 let _run_target_args'_v407 = v418 #endif #if FABLE_COMPILER_PYTHON let v419 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v420 : Async<Choice<bool, exn>> = v419 v406 let _run_target_args'_v407 = v420 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v421 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v422 : Async<Choice<bool, exn>> = v421 v406 let _run_target_args'_v407 = v422 #endif #else let v423 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v424 : Async<Choice<bool, exn>> = v423 v406 let _run_target_args'_v407 = v424 #endif let v425 : Async<Choice<bool, exn>> = _run_target_args'_v407 let v430 : Async<US7> = method25(v425) let v431 : Async<US8> = method28(v430) let v432 : Async<US6> = method29(v1, v431) return! v432 (* indent () indent *) } (* indent () indent *) let v755 : Async<US6> = _let'_v384 let _run_target_args'_v2 = v755 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v756 : unit = () let _let'_v756 = async { let v759 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v760 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v760 #endif #if FABLE_COMPILER_RUST && WASM let v763 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v763 #endif #if FABLE_COMPILER_RUST && CONTRACT let v766 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v759 = v766 #endif #if FABLE_COMPILER_TYPESCRIPT let v769 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v769 #endif #if FABLE_COMPILER_PYTHON let v770 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v770 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v771 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v771 #endif #else let v772 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v759 = v772 #endif let v773 : Async<Async<bool>> = _run_target_args'_v759 let! v773 = v773 let v778 : Async<bool> = v773 let v779 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v780 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v780 #endif #if FABLE_COMPILER_RUST && WASM let v783 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v783 #endif #if FABLE_COMPILER_RUST && CONTRACT let v786 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v779 = v786 #endif #if FABLE_COMPILER_TYPESCRIPT let v789 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v790 : Async<Choice<bool, exn>> = v789 v778 let _run_target_args'_v779 = v790 #endif #if FABLE_COMPILER_PYTHON let v791 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v792 : Async<Choice<bool, exn>> = v791 v778 let _run_target_args'_v779 = v792 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v793 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v794 : Async<Choice<bool, exn>> = v793 v778 let _run_target_args'_v779 = v794 #endif #else let v795 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v796 : Async<Choice<bool, exn>> = v795 v778 let _run_target_args'_v779 = v796 #endif let v797 : Async<Choice<bool, exn>> = _run_target_args'_v779 let v802 : Async<US7> = method25(v797) let v803 : Async<US8> = method28(v802) let v804 : Async<US6> = method29(v1, v803) return! v804 (* indent () indent *) } (* indent () indent *) let v1127 : Async<US6> = _let'_v756 let _run_target_args'_v2 = v1127 #endif #else let v1128 : unit = () let _let'_v1128 = async { let v1131 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1132 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1132 #endif #if FABLE_COMPILER_RUST && WASM let v1135 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1135 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1138 : Async<Async<bool>> = null |> unbox<Async<Async<bool>>> let _run_target_args'_v1131 = v1138 #endif #if FABLE_COMPILER_TYPESCRIPT let v1141 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1141 #endif #if FABLE_COMPILER_PYTHON let v1142 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1142 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1143 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1143 #endif #else let v1144 : Async<Async<bool>> = Async.StartChild (v0, v1) let _run_target_args'_v1131 = v1144 #endif let v1145 : Async<Async<bool>> = _run_target_args'_v1131 let! v1145 = v1145 let v1150 : Async<bool> = v1145 let v1151 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1152 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1152 #endif #if FABLE_COMPILER_RUST && WASM let v1155 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1155 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1158 : Async<Choice<bool, exn>> = null |> unbox<Async<Choice<bool, exn>>> let _run_target_args'_v1151 = v1158 #endif #if FABLE_COMPILER_TYPESCRIPT let v1161 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1162 : Async<Choice<bool, exn>> = v1161 v1150 let _run_target_args'_v1151 = v1162 #endif #if FABLE_COMPILER_PYTHON let v1163 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1164 : Async<Choice<bool, exn>> = v1163 v1150 let _run_target_args'_v1151 = v1164 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1165 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1166 : Async<Choice<bool, exn>> = v1165 v1150 let _run_target_args'_v1151 = v1166 #endif #else let v1167 : (Async<bool> -> Async<Choice<bool, exn>>) = Async.Catch let v1168 : Async<Choice<bool, exn>> = v1167 v1150 let _run_target_args'_v1151 = v1168 #endif let v1169 : Async<Choice<bool, exn>> = _run_target_args'_v1151 let v1174 : Async<US7> = method25(v1169) let v1175 : Async<US8> = method28(v1174) let v1176 : Async<US6> = method29(v1, v1175) return! v1176 (* indent () indent *) } (* indent () indent *) let v1499 : Async<US6> = _let'_v1128 let _run_target_args'_v2 = v1499 #endif let v1500 : Async<US6> = _run_target_args'_v2 v1500 and method23 (v0 : int32, v1 : Async<bool>) : Async<US6> = let v2 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v3 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v3 #endif #if FABLE_COMPILER_RUST && WASM let v4 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v5 #endif #if FABLE_COMPILER_TYPESCRIPT let v6 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v6 #endif #if FABLE_COMPILER_PYTHON let v7 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v7 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v8 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v8 #endif #else let v9 : Async<US6> = method24(v1, v0) let _run_target_args'_v2 = v9 #endif let v10 : Async<US6> = _run_target_args'_v2 v10 and method22 (v0 : int32, v1 : string, v2 : int32) : Async<bool> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<bool> = null |> unbox<Async<bool>> let _run_target_args'_v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : unit = () let _let'_v13 = async { let v16 : Async<bool> = method6(v1, v2) let v17 : Async<US6> = method23(v0, v16) let! v17 = v17 let v18 : US6 = v17 let v21 : bool = match v18 with | US6_1 -> (* None *) false | US6_0(v19) -> (* Some *) v19 return v21 (* indent () indent *) } (* indent () indent *) let v64 : Async<bool> = _let'_v13 let _run_target_args'_v3 = v64 #endif #if FABLE_COMPILER_PYTHON let v65 : unit = () let _let'_v65 = async { let v68 : Async<bool> = method6(v1, v2) let v69 : Async<US6> = method23(v0, v68) let! v69 = v69 let v70 : US6 = v69 let v73 : bool = match v70 with | US6_1 -> (* None *) false | US6_0(v71) -> (* Some *) v71 return v73 (* indent () indent *) } (* indent () indent *) let v116 : Async<bool> = _let'_v65 let _run_target_args'_v3 = v116 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v117 : unit = () let _let'_v117 = async { let v120 : Async<bool> = method6(v1, v2) let v121 : Async<US6> = method23(v0, v120) let! v121 = v121 let v122 : US6 = v121 let v125 : bool = match v122 with | US6_1 -> (* None *) false | US6_0(v123) -> (* Some *) v123 return v125 (* indent () indent *) } (* indent () indent *) let v168 : Async<bool> = _let'_v117 let _run_target_args'_v3 = v168 #endif #else let v169 : unit = () let _let'_v169 = async { let v172 : Async<bool> = method6(v1, v2) let v173 : Async<US6> = method23(v0, v172) let! v173 = v173 let v174 : US6 = v173 let v177 : bool = match v174 with | US6_1 -> (* None *) false | US6_0(v175) -> (* Some *) v175 return v177 (* indent () indent *) } (* indent () indent *) let v220 : Async<bool> = _let'_v169 let _run_target_args'_v3 = v220 #endif let v221 : Async<bool> = _run_target_args'_v3 v221 and method21 (v0 : int32, v1 : string, v2 : int32) : Async<bool> = method22(v0, v1, v2) and closure13 (v0 : int32, v1 : string) (v2 : int32) : Async<bool> = method21(v0, v1, v2) and closure12 (v0 : int32) (v1 : string) : (int32 -> Async<bool>) = closure13(v0, v1) and closure11 () (v0 : int32) : (string -> (int32 -> Async<bool>)) = closure12(v0) and closure22 () (v0 : int32) : US9 = US9_0(v0) and method38 () : (int32 -> US9) = closure22() and method40 (v0 : int32, v1 : int64, v2 : int32 option, v3 : bool) : string = let v4 : string = method15() let v5 : Mut3 = {l0 = v4} : Mut3 let v6 : string = "{ " let v7 : string = $"{v6}" let v10 : unit = () let v11 : (unit -> unit) = closure7(v5, v7) let v12 : unit = (fun () -> v11 (); v10) () let v15 : string = "port" let v16 : string = $"{v15}" let v19 : unit = () let v20 : (unit -> unit) = closure7(v5, v16) let v21 : unit = (fun () -> v20 (); v19) () let v24 : string = " = " let v25 : string = $"{v24}" let v28 : unit = () let v29 : (unit -> unit) = closure7(v5, v25) let v30 : unit = (fun () -> v29 (); v28) () let v33 : string = $"{v0}" let v36 : unit = () let v37 : (unit -> unit) = closure7(v5, v33) let v38 : unit = (fun () -> v37 (); v36) () let v41 : string = "; " let v42 : string = $"{v41}" let v45 : unit = () let v46 : (unit -> unit) = closure7(v5, v42) let v47 : unit = (fun () -> v46 (); v45) () let v50 : string = "retry" let v51 : string = $"{v50}" let v54 : unit = () let v55 : (unit -> unit) = closure7(v5, v51) let v56 : unit = (fun () -> v55 (); v54) () let v59 : string = $"{v24}" let v62 : unit = () let v63 : (unit -> unit) = closure7(v5, v59) let v64 : unit = (fun () -> v63 (); v62) () let v67 : string = $"{v1}" let v70 : unit = () let v71 : (unit -> unit) = closure7(v5, v67) let v72 : unit = (fun () -> v71 (); v70) () let v75 : string = $"{v41}" let v78 : unit = () let v79 : (unit -> unit) = closure7(v5, v75) let v80 : unit = (fun () -> v79 (); v78) () let v83 : string = "timeout" let v84 : string = $"{v83}" let v87 : unit = () let v88 : (unit -> unit) = closure7(v5, v84) let v89 : unit = (fun () -> v88 (); v87) () let v92 : string = $"{v24}" let v95 : unit = () let v96 : (unit -> unit) = closure7(v5, v92) let v97 : unit = (fun () -> v96 (); v95) () let v100 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v101 : string = "format!(\"{:#?}\", $0)" let v102 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v101 let v103 : string = "fable_library_rust::String_::fromString($0)" let v104 : string = Fable.Core.RustInterop.emitRustExpr v102 v103 let _run_target_args'_v100 = v104 #endif #if FABLE_COMPILER_RUST && WASM let v105 : string = "format!(\"{:#?}\", $0)" let v106 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v105 let v107 : string = "fable_library_rust::String_::fromString($0)" let v108 : string = Fable.Core.RustInterop.emitRustExpr v106 v107 let _run_target_args'_v100 = v108 #endif #if FABLE_COMPILER_RUST && CONTRACT let v109 : string = "format!(\"{:#?}\", $0)" let v110 : std_string_String = Fable.Core.RustInterop.emitRustExpr v2 v109 let v111 : string = "fable_library_rust::String_::fromString($0)" let v112 : string = Fable.Core.RustInterop.emitRustExpr v110 v111 let _run_target_args'_v100 = v112 #endif #if FABLE_COMPILER_TYPESCRIPT let v113 : string = $"%A{v2}" let _run_target_args'_v100 = v113 #endif #if FABLE_COMPILER_PYTHON let v116 : string = $"%A{v2}" let _run_target_args'_v100 = v116 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v119 : string = $"%A{v2}" let _run_target_args'_v100 = v119 #endif #else let v122 : string = $"%A{v2}" let _run_target_args'_v100 = v122 #endif let v125 : string = _run_target_args'_v100 let v130 : string = $"{v125}" let v133 : unit = () let v134 : (unit -> unit) = closure7(v5, v130) let v135 : unit = (fun () -> v134 (); v133) () let v138 : string = $"{v41}" let v141 : unit = () let v142 : (unit -> unit) = closure7(v5, v138) let v143 : unit = (fun () -> v142 (); v141) () let v146 : string = "status" let v147 : string = $"{v146}" let v150 : unit = () let v151 : (unit -> unit) = closure7(v5, v147) let v152 : unit = (fun () -> v151 (); v150) () let v155 : string = $"{v24}" let v158 : unit = () let v159 : (unit -> unit) = closure7(v5, v155) let v160 : unit = (fun () -> v159 (); v158) () let v165 : string = if v3 then let v163 : string = "true" v163 else let v164 : string = "false" v164 let v166 : string = $"{v165}" let v169 : unit = () let v170 : (unit -> unit) = closure7(v5, v166) let v171 : unit = (fun () -> v170 (); v169) () let v174 : string = " }" let v175 : string = $"{v174}" let v178 : unit = () let v179 : (unit -> unit) = closure7(v5, v175) let v180 : unit = (fun () -> v179 (); v178) () let v183 : string = v5.l0 v183 and method39 (v0 : Mut0, v1 : Mut1, v2 : Mut2, v3 : Mut3, v4 : Mut4, v5 : int64 option, v6 : string, v7 : string, v8 : int32, v9 : int64, v10 : int32 option, v11 : bool) : string = let v12 : string = method40(v8, v9, v10, v11) let v13 : int64 = v0.l0 let v14 : string = "networking.wait_for_port_access" let v15 : string = $"{v6} {v7} #{v13} %s{v14} / {v12}" method19(v15) and closure23 (v0 : int32 option, v1 : bool, v2 : int32, v3 : int64) () : unit = let v4 : US0 = US0_0 let v5 : bool = method8(v4) if v5 then let v6 : unit = () let v7 : (unit -> unit) = closure0() let v8 : unit = (fun () -> v7 (); v6) () let struct (v22 : Mut0, v23 : Mut1, v24 : Mut2, v25 : Mut3, v26 : Mut4, v27 : int64 option) = TraceState.trace_state.Value let v40 : string = method9(v22, v23, v24, v25, v26, v27) let v41 : string = method13() let v42 : string = method39(v22, v23, v24, v25, v26, v27, v40, v41, v2, v3, v0, v1) method20(v42) and method37 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> = let v5 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v6 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v6 #endif #if FABLE_COMPILER_RUST && WASM let v9 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v9 #endif #if FABLE_COMPILER_RUST && CONTRACT let v12 : Async<int64> = null |> unbox<Async<int64>> let _run_target_args'_v5 = v12 #endif #if FABLE_COMPILER_TYPESCRIPT let v15 : unit = () let _let'_v15 = async { let v18 : (int32 -> US9) = method38() let v19 : US9 option = v0 |> Option.map v18 let v30 : US9 = US9_1 let v31 : US9 = v19 |> Option.defaultValue v30 let v39 : Async<bool> = match v31 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v36) -> (* Some *) method21(v36, v2, v3) let! v39 = v39 let v40 : bool = v39 let v41 : bool = v40 = v1 if v41 then return v4 (* fix_condition then () else fix_condition then *) else let v42 : int64 = v4 % 100L let v43 : bool = v42 = 0L if v43 then let v44 : unit = () let v45 : (unit -> unit) = closure23(v0, v1, v3, v4) let v46 : unit = (fun () -> v45 (); v44) () () let v86 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v87 : (int32 -> Async<unit>) = Async.Sleep let v88 : Async<unit> = v87 10 let _run_target_args'_v86 = v88 #endif #if FABLE_COMPILER_RUST && WASM let v89 : (int32 -> Async<unit>) = Async.Sleep let v90 : Async<unit> = v89 10 let _run_target_args'_v86 = v90 #endif #if FABLE_COMPILER_RUST && CONTRACT let v91 : (int32 -> Async<unit>) = Async.Sleep let v92 : Async<unit> = v91 10 let _run_target_args'_v86 = v92 #endif #if FABLE_COMPILER_TYPESCRIPT let v93 : (int32 -> Async<unit>) = Async.Sleep let v94 : Async<unit> = v93 10 let _run_target_args'_v86 = v94 #endif #if FABLE_COMPILER_PYTHON let v95 : (int32 -> Async<unit>) = Async.Sleep let v96 : Async<unit> = v95 10 let _run_target_args'_v86 = v96 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v97 : (int32 -> Async<unit>) = Async.Sleep let v98 : Async<unit> = v97 10 let _run_target_args'_v86 = v98 #endif #else let v99 : (int32 -> Async<unit>) = Async.Sleep let v100 : Async<unit> = v99 10 let _run_target_args'_v86 = v100 #endif let v101 : Async<unit> = _run_target_args'_v86 do! v101 let v104 : int64 = v4 + 1L let v105 : Async<int64> = method36(v0, v1, v2, v3, v104) return! v105 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v722 : Async<int64> = _let'_v15 let _run_target_args'_v5 = v722 #endif #if FABLE_COMPILER_PYTHON let v723 : unit = () let _let'_v723 = async { let v726 : (int32 -> US9) = method38() let v727 : US9 option = v0 |> Option.map v726 let v738 : US9 = US9_1 let v739 : US9 = v727 |> Option.defaultValue v738 let v747 : Async<bool> = match v739 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v744) -> (* Some *) method21(v744, v2, v3) let! v747 = v747 let v748 : bool = v747 let v749 : bool = v748 = v1 if v749 then return v4 (* fix_condition then () else fix_condition then *) else let v750 : int64 = v4 % 100L let v751 : bool = v750 = 0L if v751 then let v752 : unit = () let v753 : (unit -> unit) = closure23(v0, v1, v3, v4) let v754 : unit = (fun () -> v753 (); v752) () () let v794 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v795 : (int32 -> Async<unit>) = Async.Sleep let v796 : Async<unit> = v795 10 let _run_target_args'_v794 = v796 #endif #if FABLE_COMPILER_RUST && WASM let v797 : (int32 -> Async<unit>) = Async.Sleep let v798 : Async<unit> = v797 10 let _run_target_args'_v794 = v798 #endif #if FABLE_COMPILER_RUST && CONTRACT let v799 : (int32 -> Async<unit>) = Async.Sleep let v800 : Async<unit> = v799 10 let _run_target_args'_v794 = v800 #endif #if FABLE_COMPILER_TYPESCRIPT let v801 : (int32 -> Async<unit>) = Async.Sleep let v802 : Async<unit> = v801 10 let _run_target_args'_v794 = v802 #endif #if FABLE_COMPILER_PYTHON let v803 : (int32 -> Async<unit>) = Async.Sleep let v804 : Async<unit> = v803 10 let _run_target_args'_v794 = v804 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v805 : (int32 -> Async<unit>) = Async.Sleep let v806 : Async<unit> = v805 10 let _run_target_args'_v794 = v806 #endif #else let v807 : (int32 -> Async<unit>) = Async.Sleep let v808 : Async<unit> = v807 10 let _run_target_args'_v794 = v808 #endif let v809 : Async<unit> = _run_target_args'_v794 do! v809 let v812 : int64 = v4 + 1L let v813 : Async<int64> = method36(v0, v1, v2, v3, v812) return! v813 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v1430 : Async<int64> = _let'_v723 let _run_target_args'_v5 = v1430 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1431 : unit = () let _let'_v1431 = async { let v1434 : (int32 -> US9) = method38() let v1435 : US9 option = v0 |> Option.map v1434 let v1446 : US9 = US9_1 let v1447 : US9 = v1435 |> Option.defaultValue v1446 let v1455 : Async<bool> = match v1447 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v1452) -> (* Some *) method21(v1452, v2, v3) let! v1455 = v1455 let v1456 : bool = v1455 let v1457 : bool = v1456 = v1 if v1457 then return v4 (* fix_condition then () else fix_condition then *) else let v1458 : int64 = v4 % 100L let v1459 : bool = v1458 = 0L if v1459 then let v1460 : unit = () let v1461 : (unit -> unit) = closure23(v0, v1, v3, v4) let v1462 : unit = (fun () -> v1461 (); v1460) () () let v1502 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1503 : (int32 -> Async<unit>) = Async.Sleep let v1504 : Async<unit> = v1503 10 let _run_target_args'_v1502 = v1504 #endif #if FABLE_COMPILER_RUST && WASM let v1505 : (int32 -> Async<unit>) = Async.Sleep let v1506 : Async<unit> = v1505 10 let _run_target_args'_v1502 = v1506 #endif #if FABLE_COMPILER_RUST && CONTRACT let v1507 : (int32 -> Async<unit>) = Async.Sleep let v1508 : Async<unit> = v1507 10 let _run_target_args'_v1502 = v1508 #endif #if FABLE_COMPILER_TYPESCRIPT let v1509 : (int32 -> Async<unit>) = Async.Sleep let v1510 : Async<unit> = v1509 10 let _run_target_args'_v1502 = v1510 #endif #if FABLE_COMPILER_PYTHON let v1511 : (int32 -> Async<unit>) = Async.Sleep let v1512 : Async<unit> = v1511 10 let _run_target_args'_v1502 = v1512 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v1513 : (int32 -> Async<unit>) = Async.Sleep let v1514 : Async<unit> = v1513 10 let _run_target_args'_v1502 = v1514 #endif #else let v1515 : (int32 -> Async<unit>) = Async.Sleep let v1516 : Async<unit> = v1515 10 let _run_target_args'_v1502 = v1516 #endif let v1517 : Async<unit> = _run_target_args'_v1502 do! v1517 let v1520 : int64 = v4 + 1L let v1521 : Async<int64> = method36(v0, v1, v2, v3, v1520) return! v1521 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v2138 : Async<int64> = _let'_v1431 let _run_target_args'_v5 = v2138 #endif #else let v2139 : unit = () let _let'_v2139 = async { let v2142 : (int32 -> US9) = method38() let v2143 : US9 option = v0 |> Option.map v2142 let v2154 : US9 = US9_1 let v2155 : US9 = v2143 |> Option.defaultValue v2154 let v2163 : Async<bool> = match v2155 with | US9_1 -> (* None *) method6(v2, v3) | US9_0(v2160) -> (* Some *) method21(v2160, v2, v3) let! v2163 = v2163 let v2164 : bool = v2163 let v2165 : bool = v2164 = v1 if v2165 then return v4 (* fix_condition then () else fix_condition then *) else let v2166 : int64 = v4 % 100L let v2167 : bool = v2166 = 0L if v2167 then let v2168 : unit = () let v2169 : (unit -> unit) = closure23(v0, v1, v3, v4) let v2170 : unit = (fun () -> v2169 (); v2168) () () let v2210 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2211 : (int32 -> Async<unit>) = Async.Sleep let v2212 : Async<unit> = v2211 10 let _run_target_args'_v2210 = v2212 #endif #if FABLE_COMPILER_RUST && WASM let v2213 : (int32 -> Async<unit>) = Async.Sleep let v2214 : Async<unit> = v2213 10 let _run_target_args'_v2210 = v2214 #endif #if FABLE_COMPILER_RUST && CONTRACT let v2215 : (int32 -> Async<unit>) = Async.Sleep let v2216 : Async<unit> = v2215 10 let _run_target_args'_v2210 = v2216 #endif #if FABLE_COMPILER_TYPESCRIPT let v2217 : (int32 -> Async<unit>) = Async.Sleep let v2218 : Async<unit> = v2217 10 let _run_target_args'_v2210 = v2218 #endif #if FABLE_COMPILER_PYTHON let v2219 : (int32 -> Async<unit>) = Async.Sleep let v2220 : Async<unit> = v2219 10 let _run_target_args'_v2210 = v2220 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v2221 : (int32 -> Async<unit>) = Async.Sleep let v2222 : Async<unit> = v2221 10 let _run_target_args'_v2210 = v2222 #endif #else let v2223 : (int32 -> Async<unit>) = Async.Sleep let v2224 : Async<unit> = v2223 10 let _run_target_args'_v2210 = v2224 #endif let v2225 : Async<unit> = _run_target_args'_v2210 do! v2225 let v2228 : int64 = v4 + 1L let v2229 : Async<int64> = method36(v0, v1, v2, v3, v2228) return! v2229 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v2846 : Async<int64> = _let'_v2139 let _run_target_args'_v5 = v2846 #endif let v2847 : Async<int64> = _run_target_args'_v5 v2847 and method36 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32, v4 : int64) : Async<int64> = method37(v0, v1, v2, v3, v4) and method35 (v0 : int32 option, v1 : bool, v2 : string, v3 : int32) : Async<int64> = let v4 : int64 = 1L method36(v0, v1, v2, v3, v4) and closure21 (v0 : int32 option, v1 : bool, v2 : string) (v3 : int32) : Async<int64> = method35(v0, v1, v2, v3) and closure20 (v0 : int32 option, v1 : bool) (v2 : string) : (int32 -> Async<int64>) = closure21(v0, v1, v2) and closure19 (v0 : int32 option) (v1 : bool) : (string -> (int32 -> Async<int64>)) = closure20(v0, v1) and closure18 () (v0 : int32 option) : (bool -> (string -> (int32 -> Async<int64>))) = closure19(v0) and method43 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = let v3 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v4 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v4 #endif #if FABLE_COMPILER_RUST && WASM let v7 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v7 #endif #if FABLE_COMPILER_RUST && CONTRACT let v10 : Async<int32> = null |> unbox<Async<int32>> let _run_target_args'_v3 = v10 #endif #if FABLE_COMPILER_TYPESCRIPT let v13 : unit = () let _let'_v13 = async { let v16 : (int32 -> US9) = method38() let v17 : US9 option = v0 |> Option.map v16 let v28 : US9 = US9_1 let v29 : US9 = v17 |> Option.defaultValue v28 let v37 : Async<bool> = match v29 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v34) -> (* Some *) method21(v34, v1, v2) let! v37 = v37 let v38 : bool = v37 let v39 : bool = v38 = false if v39 then return v2 (* fix_condition then () else fix_condition then *) else let v40 : int32 = v2 + 1 let v41 : Async<int32> = method42(v0, v1, v40) return! v41 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v224 : Async<int32> = _let'_v13 let _run_target_args'_v3 = v224 #endif #if FABLE_COMPILER_PYTHON let v225 : unit = () let _let'_v225 = async { let v228 : (int32 -> US9) = method38() let v229 : US9 option = v0 |> Option.map v228 let v240 : US9 = US9_1 let v241 : US9 = v229 |> Option.defaultValue v240 let v249 : Async<bool> = match v241 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v246) -> (* Some *) method21(v246, v1, v2) let! v249 = v249 let v250 : bool = v249 let v251 : bool = v250 = false if v251 then return v2 (* fix_condition then () else fix_condition then *) else let v252 : int32 = v2 + 1 let v253 : Async<int32> = method42(v0, v1, v252) return! v253 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v436 : Async<int32> = _let'_v225 let _run_target_args'_v3 = v436 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v437 : unit = () let _let'_v437 = async { let v440 : (int32 -> US9) = method38() let v441 : US9 option = v0 |> Option.map v440 let v452 : US9 = US9_1 let v453 : US9 = v441 |> Option.defaultValue v452 let v461 : Async<bool> = match v453 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v458) -> (* Some *) method21(v458, v1, v2) let! v461 = v461 let v462 : bool = v461 let v463 : bool = v462 = false if v463 then return v2 (* fix_condition then () else fix_condition then *) else let v464 : int32 = v2 + 1 let v465 : Async<int32> = method42(v0, v1, v464) return! v465 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v648 : Async<int32> = _let'_v437 let _run_target_args'_v3 = v648 #endif #else let v649 : unit = () let _let'_v649 = async { let v652 : (int32 -> US9) = method38() let v653 : US9 option = v0 |> Option.map v652 let v664 : US9 = US9_1 let v665 : US9 = v653 |> Option.defaultValue v664 let v673 : Async<bool> = match v665 with | US9_1 -> (* None *) method6(v1, v2) | US9_0(v670) -> (* Some *) method21(v670, v1, v2) let! v673 = v673 let v674 : bool = v673 let v675 : bool = v674 = false if v675 then return v2 (* fix_condition then () else fix_condition then *) else let v676 : int32 = v2 + 1 let v677 : Async<int32> = method42(v0, v1, v676) return! v677 (* fix_condition else () fix_condition else *) (* indent () indent *) } (* indent () indent *) let v860 : Async<int32> = _let'_v649 let _run_target_args'_v3 = v860 #endif let v861 : Async<int32> = _run_target_args'_v3 v861 and method42 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = method43(v0, v1, v2) and method41 (v0 : int32 option, v1 : string, v2 : int32) : Async<int32> = method42(v0, v1, v2) and closure26 (v0 : int32 option, v1 : string) (v2 : int32) : Async<int32> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib 00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / code.Length: 4638 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml" } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 339 ms). 00:00:12 v #11 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll 00:00:12 v #12 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist 00:00:12 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 728 }
In [ ]:
{ pwsh ../lib/spiral/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path parsing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "parsing.dib", "--retries", "3"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # parsing 00:00:05 v #13 > > 00:00:05 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > //// test 00:00:05 v #16 > > 00:00:05 v #17 > > open testing 00:00:08 v #18 > > 00:00:08 v #19 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:08 v #20 > > │ ## fparsec 00:00:08 v #21 > > 00:00:08 v #22 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:08 v #23 > > │ <div><div></div><div><strong>Installing 00:00:08 v #24 > > Packages</strong><ul><li><span>FParsec</span></li></ul></div><div></div></div> 00:00:09 v #25 > > 00:00:09 v #26 > > │ <div><div></div><div><strong>Installing 00:00:09 v #27 > > Packages</strong><ul><li><span>FParsec.</span></li></ul></div><div></div></div> 00:00:09 v #28 > > 00:00:09 v #29 > > │ <div><div></div><div><strong>Installing 00:00:09 v #30 > > Packages</strong><ul><li><span>FParsec..</span></li></ul></div><div></div></div> 00:00:10 v #31 > > 00:00:10 v #32 > > │ <div><div></div><div><strong>Installing 00:00:10 v #33 > > Packages</strong><ul><li><span>FParsec...</span></li></ul></div><div></div></div 00:00:10 v #34 > > > 00:00:10 v #35 > > 00:00:10 v #36 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #37 > > │ Package added: fsharp.core,4.3.4 00:00:10 v #38 > > 00:00:10 v #39 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #40 > > │ Package added: FParsec,1.1.1 00:00:10 v #41 > > 00:00:10 v #42 > > │ <div><div></div><div></div><div><strong>Installed 00:00:10 v #43 > > Packages</strong><ul><li><span>FParsec, 1.1.1</span></li></ul></div></div> 00:00:11 v #44 > > 00:00:11 v #45 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #46 > > //// test 00:00:11 v #47 > > 00:00:11 v #48 > > nominal position_ = $'FParsec.Position' 00:00:11 v #49 > > nominal parser_error_ = $'FParsec.Error.ParserError' 00:00:11 v #50 > > 00:00:11 v #51 > > nominal reply_ t = $'FParsec.Reply<`t>' 00:00:11 v #52 > > 00:00:11 v #53 > > nominal char_stream_ t = $'FParsec.CharStream<`t>' 00:00:11 v #54 > > 00:00:11 v #55 > > // nominal parser t u = char_stream u -> reply t 00:00:11 v #56 > > nominal parser_ t u = $'FParsec.Primitives.Parser<`t, `u>' 00:00:11 v #57 > > 00:00:11 v #58 > > inl p_char_ forall t. (x : char) : parser_ char t = 00:00:11 v #59 > > x |> $'FParsec.CharParsers.pchar' 00:00:11 v #60 > > 00:00:11 v #61 > > inl p_string_ forall t. (x : string) : parser_ string t = 00:00:11 v #62 > > x |> $'FParsec.CharParsers.pstring' 00:00:11 v #63 > > 00:00:11 v #64 > > inl (>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ u v = 00:00:11 v #65 > > b |> $'FParsec.Primitives.(>>.)' a 00:00:11 v #66 > > 00:00:11 v #67 > > inl (.>>$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ t v = 00:00:11 v #68 > > b |> $'FParsec.Primitives.(.>>)' a 00:00:11 v #69 > > 00:00:11 v #70 > > inl (.>>.$) forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ (pair t 00:00:11 v #71 > > u) v = 00:00:11 v #72 > > b |> $'FParsec.Primitives.(.>>.)' a 00:00:11 v #73 > > 00:00:11 v #74 > > inl (>>%$) forall t u v. (a : parser_ t v) (b : u) : parser_ u v = 00:00:11 v #75 > > b |> $'FParsec.Primitives.(>>%)' a 00:00:11 v #76 > > 00:00:11 v #77 > > inl (>>=$) forall t u v. (a : parser_ t v) (b : t -> parser_ u v) : parser_ u v 00:00:11 v #78 > > = 00:00:11 v #79 > > b |> $'FParsec.Primitives.(>>=)' a 00:00:11 v #80 > > 00:00:11 v #81 > > inl (|>>$) forall t u v. (a : parser_ t v) (b : t -> u) : parser_ u v = 00:00:11 v #82 > > inl b = fun x => x |> b 00:00:11 v #83 > > b |> $'FParsec.Primitives.(|>>)' a 00:00:11 v #84 > > 00:00:11 v #85 > > inl any_char_ () : parser_ char _ = 00:00:11 v #86 > > $'FParsec.CharParsers.anyChar' 00:00:11 v #87 > > 00:00:11 v #88 > > inl any_string_ () : parser_ string _ = 00:00:11 v #89 > > $'FParsec.CharParsers.anyString' 00:00:11 v #90 > > 00:00:11 v #91 > > inl any_string__ (n : i32) : parser_ string _ = 00:00:11 v #92 > > n |> $'FParsec.CharParsers.anyString' 00:00:11 v #93 > > 00:00:11 v #94 > > inl eof_ () : parser_ () _ = 00:00:11 v #95 > > $'FParsec.CharParsers.eof' 00:00:11 v #96 > > 00:00:11 v #97 > > inl spaces_ () : parser_ () () = 00:00:11 v #98 > > $'FParsec.CharParsers.spaces' 00:00:11 v #99 > > 00:00:11 v #100 > > inl spaces1_ () : parser_ () () = 00:00:11 v #101 > > $'FParsec.CharParsers.spaces1' 00:00:11 v #102 > > 00:00:11 v #103 > > inl (<|>$) forall t u. (a : parser_ t u) (b : parser_ t u) : parser_ t u = 00:00:11 v #104 > > b |> $'FParsec.Primitives.(<|>)' a 00:00:11 v #105 > > 00:00:11 v #106 > > inl many_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:00:11 v #107 > > x |> $'FParsec.CharParsers.manySatisfy' 00:00:11 v #108 > > 00:00:11 v #109 > > inl satisfy_ forall t. (x : char -> bool) : parser_ char t = 00:00:11 v #110 > > x |> $'FParsec.CharParsers.satisfy' 00:00:11 v #111 > > 00:00:11 v #112 > > inl none_of_ (x : list char) : parser_ char () = 00:00:11 v #113 > > x 00:00:11 v #114 > > |> listm'.box 00:00:11 v #115 > > |> listm'.to_array' 00:00:11 v #116 > > |> $'FParsec.CharParsers.noneOf' 00:00:11 v #117 > > 00:00:11 v #118 > > inl any_of_ (x : list char) : parser_ char () = 00:00:11 v #119 > > x 00:00:11 v #120 > > |> listm'.box 00:00:11 v #121 > > |> listm'.to_array' 00:00:11 v #122 > > |> $'FParsec.CharParsers.anyOf' 00:00:11 v #123 > > 00:00:11 v #124 > > inl skip_any_of_ (x : list char) : parser_ () () = 00:00:11 v #125 > > x 00:00:11 v #126 > > |> listm'.box 00:00:11 v #127 > > |> listm'.to_array' 00:00:11 v #128 > > |> $'FParsec.CharParsers.skipAnyOf' 00:00:11 v #129 > > 00:00:11 v #130 > > inl between_ forall t u v x. (a : parser_ t x) (b : parser_ u x) (c : parser_ v 00:00:11 v #131 > > x) : parser_ v x = 00:00:11 v #132 > > c |> $'FParsec.Primitives.between' a b 00:00:11 v #133 > > 00:00:11 v #134 > > inl many_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:00:11 v #135 > > x |> $'FParsec.CharParsers.manyChars' 00:00:11 v #136 > > 00:00:11 v #137 > > inl many1_chars_ forall t. (x : parser_ char t) : parser_ string t = 00:00:11 v #138 > > x |> $'FParsec.CharParsers.many1Chars' 00:00:11 v #139 > > 00:00:11 v #140 > > inl many_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:00:11 v #141 > > x |> $'FParsec.CharParsers.manyStrings' 00:00:11 v #142 > > 00:00:11 v #143 > > inl skip_any_string_ forall t. (n : i32) : parser_ () t = 00:00:11 v #144 > > n |> $'FParsec.CharParsers.skipAnyString' 00:00:11 v #145 > > 00:00:11 v #146 > > inl many1_strings_ forall t. (x : parser_ string t) : parser_ string t = 00:00:11 v #147 > > x |> $'FParsec.CharParsers.many1Strings' 00:00:11 v #148 > > 00:00:11 v #149 > > inl opt_ forall t u. (a : parser_ t u) : parser_ (optionm'.option' t) u = 00:00:11 v #150 > > a |> $'FParsec.Primitives.opt' 00:00:11 v #151 > > 00:00:11 v #152 > > inl choice_ forall t u. (a : list (parser_ t u)) : parser_ t u = 00:00:11 v #153 > > a 00:00:11 v #154 > > |> listm'.box 00:00:11 v #155 > > |> seq.of_list' 00:00:11 v #156 > > |> $'FParsec.Primitives.choice' 00:00:11 v #157 > > 00:00:11 v #158 > > inl delay_ forall t u. (fn : () -> parser_ t u) : parser_ t u = 00:00:11 v #159 > > fn |> $'FParsec.Primitives.parse.Delay' 00:00:11 v #160 > > 00:00:11 v #161 > > inl peek_ forall t u. (a : parser_ t u) : parser_ char u = 00:00:11 v #162 > > $'!a.Peek ()' 00:00:11 v #163 > > 00:00:11 v #164 > > inl not_followed_by_ forall t u. (a : parser_ t u) : parser_ () u = 00:00:11 v #165 > > a |> $'FParsec.Primitives.notFollowedBy' 00:00:11 v #166 > > 00:00:11 v #167 > > inl sep_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:11 v #168 > > (listm'.list' t) v = 00:00:11 v #169 > > b |> $'FParsec.Primitives.sepBy' a 00:00:11 v #170 > > 00:00:11 v #171 > > inl sep_by1_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:11 v #172 > > (listm'.list' t) v = 00:00:11 v #173 > > b |> $'FParsec.Primitives.sepBy1' a 00:00:11 v #174 > > 00:00:11 v #175 > > inl sep_end_by_ forall t u v. (a : parser_ t v) (b : parser_ u v) : parser_ 00:00:11 v #176 > > (listm'.list' t) v = 00:00:11 v #177 > > b |> $'FParsec.Primitives.sepEndBy' a 00:00:11 v #178 > > 00:00:11 v #179 > > inl many_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:00:11 v #180 > > a |> $'FParsec.Primitives.many' 00:00:11 v #181 > > 00:00:11 v #182 > > inl many1_ forall t u. (a : parser_ t u) : parser_ (listm'.list' t) u = 00:00:11 v #183 > > a |> $'FParsec.Primitives.many1' 00:00:11 v #184 > > 00:00:11 v #185 > > inl many1_satisfy_ forall t. (x : char -> bool) : parser_ string t = 00:00:11 v #186 > > x |> $'FParsec.CharParsers.many1Satisfy' 00:00:11 v #187 > > 00:00:11 v #188 > > nominal parser_result'_ t u = $'FParsec.CharParsers.ParserResult<`t, `u>' 00:00:11 v #189 > > 00:00:11 v #190 > > inl run_ forall t. (parser : parser_ t ()) (x : string) : parser_result'_ t () = 00:00:11 v #191 > > x |> $'FParsec.CharParsers.run' parser 00:00:11 v #192 > > 00:00:11 v #193 > > union parser_result_ t u = 00:00:11 v #194 > > | Success : t * u * position_ 00:00:11 v #195 > > | Failure : string * parser_error_ * u 00:00:11 v #196 > > 00:00:11 v #197 > > inl parser_result_ forall t u. = function 00:00:11 v #198 > > | Success (a, b, c) => $'`(parser_result'_ t u).Success (!a, !b, !c)' : 00:00:11 v #199 > > parser_result'_ t u 00:00:11 v #200 > > | Failure (a, b, c) => $'`(parser_result'_ t u).Failure (!a, !b, !c)' : 00:00:11 v #201 > > parser_result'_ t u 00:00:11 v #202 > > 00:00:11 v #203 > > inl parser_result'_ forall t u. (x : parser_result'_ t u) : parser_result_ t u = 00:00:11 v #204 > > $'let mutable _!x = None ' 00:00:11 v #205 > > $'match !x with' 00:00:11 v #206 > > $'| FParsec.CharParsers.Success (a, b, c) -> (' : () 00:00:11 v #207 > > $'(fun () ->' 00:00:11 v #208 > > $'(fun () ->' 00:00:11 v #209 > > (Success ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:00:11 v #210 > > $')' 00:00:11 v #211 > > $'|> fun x -> x ()' 00:00:11 v #212 > > $') () ) | FParsec.CharParsers.Failure (a, b, c) -> (' : () 00:00:11 v #213 > > $'(fun () ->' 00:00:11 v #214 > > $'(fun () ->' 00:00:11 v #215 > > (Failure ((dyn $'a'), dyn $'b', dyn $'c') : _ t u) |> emit_unit 00:00:11 v #216 > > $')' 00:00:11 v #217 > > $'|> fun x -> x ()' 00:00:11 v #218 > > $') () )' : () 00:00:11 v #219 > > $'|> fun x -> _!x <- Some x' 00:00:11 v #220 > > $'match _!x with Some x -> x | None -> failwith "??? / _!x=None"' 00:00:11 v #221 > > 00:00:11 v #222 > > inl parse_ parser input : result _ _ = 00:00:11 v #223 > > match input |> run_ parser |> parser_result'_ with 00:00:11 v #224 > > | Success (result, b, c) => Ok (result, c) 00:00:11 v #225 > > | Failure (error_msg, b, c) => Error (error_msg, b) 00:00:11 v #226 > > 00:00:11 v #227 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #228 > > //// test 00:00:11 v #229 > > 00:00:11 v #230 > > inl split_args (args : string) : result (array_base (string * position_)) 00:00:11 v #231 > > (string * parser_error_) = 00:00:11 v #232 > > inl esc = [[ '\\'; '`' ]] 00:00:11 v #233 > > inl quotes = [[ '"' ]] 00:00:11 v #234 > > inl special = esc ++ quotes 00:00:11 v #235 > > inl p_esc_char c = 00:00:11 v #236 > > p_char_ c >>.$ any_char_ () |>>$ fun c' => $'$"{!c}{!c'}"' 00:00:11 v #237 > > inl p_word = special |> none_of_ |>>$ sm'.obj_to_string 00:00:11 v #238 > > inl p_plain = special ++ [[ ' ' ]] |> none_of_ |> many1_chars_ 00:00:11 v #239 > > inl p_text = p_word |> many1_strings_ 00:00:11 v #240 > > inl p_esc = esc |> listm.map p_esc_char |> choice_ 00:00:11 v #241 > > inl p_quoted = (p_word <|>$ p_esc) |> many_ |>>$ (seq.of_list' >> sm'.concat 00:00:11 v #242 > > "") 00:00:11 v #243 > > inl p_quoted_all = p_quoted |> between_ (p_char_ '"') (p_char_ '"') 00:00:11 v #244 > > inl p_esc_root = p_esc |>>$ (fun _ => "") >>.$ (p_word |> many_) |>>$ 00:00:11 v #245 > > (seq.of_list' >> sm'.concat "") 00:00:11 v #246 > > inl p_content = p_plain <|>$ p_quoted_all <|>$ p_esc_root 00:00:11 v #247 > > inl p_args = spaces1_ () |> sep_by_ p_content 00:00:11 v #248 > > args 00:00:11 v #249 > > |> parse_ p_args 00:00:11 v #250 > > |> resultm.map fun (a', b') => 00:00:11 v #251 > > ( 00:00:11 v #252 > > ( 00:00:11 v #253 > > a' 00:00:11 v #254 > > |> listm'.to_array' 00:00:11 v #255 > > |> a 00:00:11 v #256 > > |> am.map fun x => x, b' 00:00:11 v #257 > > |> fun (a x : _ i32 _) => x 00:00:11 v #258 > > ) 00:00:11 v #259 > > ) 00:00:11 v #260 > > 00:00:11 v #261 > > [[ 00:00:11 v #262 > > "a b c", 00:00:11 v #263 > > ;[[ "a"; "b"; "c" ]] 00:00:11 v #264 > > 00:00:11 v #265 > > "e f \"g h\" i", 00:00:11 v #266 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:00:11 v #267 > > 00:00:11 v #268 > > "\"j k\" \"l\" \"m\"", 00:00:11 v #269 > > ;[[ "j k"; "l"; "m" ]] 00:00:11 v #270 > > 00:00:11 v #271 > > "s -t \"u \`\"v\`\" w\"", 00:00:11 v #272 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:00:11 v #273 > > 00:00:11 v #274 > > "n -o \"p \\\"q\\\" r\"", 00:00:11 v #275 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:00:11 v #276 > > 00:00:11 v #277 > > "r -s \"t \\\"u\\\"\"", 00:00:11 v #278 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:00:11 v #279 > > 00:00:11 v #280 > > $'$"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{{8}}\', {{ \`$_[[1]] + 00:00:11 v #281 > > \`$d++ }}\\\""', 00:00:11 v #282 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:00:11 v #283 > > ]] 00:00:11 v #284 > > 00:00:11 v #285 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:00:11 v #286 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:00:11 v #287 > > ]] 00:00:11 v #288 > > 00:00:11 v #289 > > $'$"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:00:11 v #290 > > ;[[ "--l"; "''' m '''" ]] 00:00:11 v #291 > > 00:00:11 v #292 > > $'$"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:00:11 v #293 > > \\\"\\\\e{{f-g}}\\\" h.i \\\"j (k)\\\""', 00:00:11 v #294 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:00:11 v #295 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:00:11 v #296 > > 00:00:11 v #297 > > $'\@$"l ""m n:\\o.p"""', 00:00:11 v #298 > > ;[[ "l"; "m n:\\o.p" ]] 00:00:11 v #299 > > ]] 00:00:11 v #300 > > |> listm.rev 00:00:11 v #301 > > |> listm.map fun input, expected => 00:00:11 v #302 > > input 00:00:11 v #303 > > |> split_args 00:00:11 v #304 > > |> fun x => 00:00:11 v #305 > > try 00:00:11 v #306 > > fun () => 00:00:11 v #307 > > ($'$"\ninput: {!input}"' : string) 00:00:11 v #308 > > |> console.write_line 00:00:11 v #309 > > x 00:00:11 v #310 > > |> resultm.get 00:00:11 v #311 > > |> am'.map_base fst 00:00:11 v #312 > > |> _assert_eq' expected 00:00:11 v #313 > > false 00:00:11 v #314 > > fun ex => 00:00:11 v #315 > > ($'$"error / expected: %A{!expected} / ex: %A{!ex}"' : string) 00:00:11 v #316 > > |> console.write_line 00:00:11 v #317 > > Some true 00:00:11 v #318 > > |> optionm.value 00:00:11 v #319 > > |> listm'.filter id 00:00:11 v #320 > > |> function 00:00:11 v #321 > > | [[]] => () 00:00:11 v #322 > > | x => failwith $'$"{!x}"' 00:00:14 v #323 > > 00:00:14 v #324 > > ── [ 2.90s - stdout ] ────────────────────────────────────────────────────────── 00:00:14 v #325 > > │ 00:00:14 v #326 > > │ input: a b c 00:00:14 v #327 > > │ __assert_eq' / actual: [|"a"; "b"; "c"|] / expected: [|"a"; 00:00:14 v #328 > > "b"; "c"|] 00:00:14 v #329 > > │ 00:00:14 v #330 > > │ input: e f "g h" i 00:00:14 v #331 > > │ __assert_eq' / actual: [|"e"; "f"; "g h"; "i"|] / expected: 00:00:14 v #332 > > [|"e"; "f"; "g h"; "i"|] 00:00:14 v #333 > > │ 00:00:14 v #334 > > │ input: "j k" "l" "m" 00:00:14 v #335 > > │ __assert_eq' / actual: [|"j k"; "l"; "m"|] / expected: [|"j 00:00:14 v #336 > > k"; "l"; "m"|] 00:00:14 v #337 > > │ 00:00:14 v #338 > > │ input: s -t "u `"v`" w" 00:00:14 v #339 > > │ __assert_eq' / actual: [|"s"; "-t"; "u `"v`" w"|] / expected: 00:00:14 v #340 > > [|"s"; "-t"; "u `"v`" w"|] 00:00:14 v #341 > > │ 00:00:14 v #342 > > │ input: n -o "p \"q\" r" 00:00:14 v #343 > > │ __assert_eq' / actual: [|"n"; "-o"; "p \"q\" r"|] / expected: 00:00:14 v #344 > > [|"n"; "-o"; "p \"q\" r"|] 00:00:14 v #345 > > │ 00:00:14 v #346 > > │ input: r -s "t \"u\"" 00:00:14 v #347 > > │ __assert_eq' / actual: [|"r"; "-s"; "t \"u\""|] / expected: 00:00:14 v #348 > > [|"r"; "-s"; "t \"u\""|] 00:00:14 v #349 > > │ 00:00:14 v #350 > > │ input: x -y "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + 00:00:14 v #351 > > `$d++ }" 00:00:14 v #352 > > │ __assert_eq' / actual: [|"x"; "-y"; "$z -a 00:00:14 v #353 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] / expected: [|"x"; "-y"; "$z 00:00:14 v #354 > > -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|] 00:00:14 v #355 > > │ 00:00:14 v #356 > > │ input: e -f "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + 00:00:14 v #357 > > `$k++ }" 00:00:14 v #358 > > │ __assert_eq' / actual: [|"e"; "-f"; "$g -h 00:00:14 v #359 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] / expected: [|"e"; "-f"; "$g 00:00:14 v #360 > > -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|] 00:00:14 v #361 > > │ 00:00:14 v #362 > > │ input: --l \"''' m '''\" 00:00:14 v #363 > > │ __assert_eq' / actual: [|"--l"; "''' m '''"|] / expected: 00:00:14 v #364 > > [|"--l"; "''' m '''"|] 00:00:14 v #365 > > │ 00:00:14 v #366 > > │ input: n --o --p q --r "s:/t u/v.w" --x "y:/z.a" --b c.d 00:00:14 v #367 > > "\e{f-g}" h.i "j (k)" 00:00:14 v #368 > > │ __assert_eq' / actual: [|"n"; "--o"; "--p"; "q"; "--r"; "s:/t 00:00:14 v #369 > > u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; 00:00:14 v #370 > > │ "\e{f-g}"; "h.i"; "j (k)"|] / expected: [|"n"; "--o"; 00:00:14 v #371 > > "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; 00:00:14 v #372 > > │ "\e{f-g}"; "h.i"; "j (k)"|] 00:00:14 v #373 > > │ 00:00:14 v #374 > > │ input: l "m n:\o.p" 00:00:14 v #375 > > │ __assert_eq' / actual: [|"l"; "m n:\o.p"|] / expected: [|"l"; 00:00:14 v #376 > > "m n:\o.p"|] 00:00:14 v #377 > > │ 00:00:14 v #378 > > 00:00:14 v #379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #380 > > │ ## parsing 00:00:14 v #381 > > 00:00:14 v #382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #383 > > │ ### range 00:00:14 v #384 > > 00:00:14 v #385 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #386 > > type range = 00:00:14 v #387 > > { 00:00:14 v #388 > > from : int 00:00:14 v #389 > > to : int 00:00:14 v #390 > > } 00:00:14 v #391 > > 00:00:14 v #392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #393 > > │ ### position 00:00:14 v #394 > > 00:00:14 v #395 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #396 > > type position = 00:00:14 v #397 > > { 00:00:14 v #398 > > line : int 00:00:14 v #399 > > col : int 00:00:14 v #400 > > } 00:00:14 v #401 > > 00:00:14 v #402 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #403 > > │ ### parser_state 00:00:14 v #404 > > 00:00:14 v #405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #406 > > nominal parser_state = 00:00:14 v #407 > > { 00:00:14 v #408 > > line_text : sm'.string_builder 00:00:14 v #409 > > position : position 00:00:14 v #410 > > } 00:00:14 v #411 > > 00:00:14 v #412 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #413 > > │ ### parser 00:00:14 v #414 > > 00:00:14 v #415 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #416 > > type parser t = string * parser_state -> result (t * string * parser_state) 00:00:14 v #417 > > string 00:00:15 v #418 > > 00:00:15 v #419 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #420 > > │ ### parse 00:00:15 v #421 > > 00:00:15 v #422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #423 > > inl parse forall t. (p : parser t) (input : string) : result (t * string * 00:00:15 v #424 > > parser_state) string = 00:00:15 v #425 > > inl input = 00:00:15 v #426 > > input 00:00:15 v #427 > > |> optionm'.of_obj 00:00:15 v #428 > > |> optionm'.default_value' "" 00:00:15 v #429 > > p (input, { line_text = "" |> sm'.string_builder; position = { line = 1; col 00:00:15 v #430 > > = 1 } } |> parser_state) 00:00:15 v #431 > > 00:00:15 v #432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #433 > > │ ### inc 00:00:15 v #434 > > 00:00:15 v #435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #436 > > inl inc (parser_state s) = function 00:00:15 v #437 > > | '\n' => { line = s.position.line + 1; col = 1 } 00:00:15 v #438 > > | _ => { s.position with col = s.position.col + 1 }.position 00:00:15 v #439 > > 00:00:15 v #440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #441 > > │ ### update 00:00:15 v #442 > > 00:00:15 v #443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #444 > > inl update result s = 00:00:15 v #445 > > (s, result |> sm'.to_char_array |> am'.to_list_base' |> listm'.unbox) 00:00:15 v #446 > > ||> listm.fold fun (parser_state s as s') c => 00:00:15 v #447 > > { s with 00:00:15 v #448 > > position = c |> inc s' 00:00:15 v #449 > > line_text = 00:00:15 v #450 > > match c with 00:00:15 v #451 > > | '\n' => s.line_text |> sm'.builder_clear 00:00:15 v #452 > > | c => s.line_text |> sm'.builder_append (c |> 00:00:15 v #453 > > sm'.obj_to_string) 00:00:15 v #454 > > } |> parser_state 00:00:15 v #455 > > 00:00:15 v #456 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:15 v #457 > > │ ### any_char 00:00:15 v #458 > > 00:00:15 v #459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #460 > > inl any_char () : parser char = function 00:00:15 v #461 > > | "", s => 00:00:15 v #462 > > backend_switch { 00:00:15 v #463 > > Fsharp = fun () => $'$"parsing.any_char / unexpected end of input 00:00:15 v #464 > > s: %A{!s}"' : string 00:00:15 v #465 > > Python = fun () => $'f"parsing.any_char / unexpected end of input 00:00:15 v #466 > > s: {!s}"' : string 00:00:15 v #467 > > } 00:00:15 v #468 > > |> Error 00:00:15 v #469 > > | x, s => 00:00:15 v #470 > > inl first_char = x |> sm'.index 0i32 00:00:15 v #471 > > Ok ( 00:00:15 v #472 > > first_char, 00:00:15 v #473 > > x |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:15 v #474 > > s |> update (first_char |> sm'.obj_to_string) 00:00:15 v #475 > > ) 00:00:15 v #476 > > 00:00:15 v #477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:15 v #478 > > //// test 00:00:15 v #479 > > ///! fsharp 00:00:15 v #480 > > ///! cuda 00:00:15 v #481 > > ///! typescript 00:00:15 v #482 > > 00:00:15 v #483 > > "abc" 00:00:15 v #484 > > |> parse (any_char ()) 00:00:15 v #485 > > |> resultm.get 00:00:15 v #486 > > |> sm'.format_debug 00:00:15 v #487 > > |> _assert_eq ( 00:00:15 v #488 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:15 v #489 > > 1i32; col = 2i32 } }) 00:00:15 v #490 > > |> sm'.format_debug 00:00:15 v #491 > > ) 00:00:22 v #492 > > 00:00:22 v #493 > > ── [ 6.62s - return value ] ──────────────────────────────────────────────────── 00:00:22 v #494 > > │ .py output (Cuda): 00:00:22 v #495 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 00:00:22 v #496 > > 'bc', a, 1, 2) 00:00:22 v #497 > > │ 00:00:22 v #498 > > │ .ts output: 00:00:22 v #499 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 00:00:22 v #500 > > │ 00:00:22 v #501 > > │ 00:00:22 v #502 > > 00:00:22 v #503 > > ── [ 6.62s - stdout ] ────────────────────────────────────────────────────────── 00:00:22 v #504 > > │ .fsx output: 00:00:22 v #505 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" 00:00:22 v #506 > > expected: "struct ('a', "bc", a, 1, 2)" 00:00:22 v #507 > > │ 00:00:22 v #508 > > 00:00:22 v #509 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #510 > > //// test 00:00:22 v #511 > > 00:00:22 v #512 > > "abc" 00:00:22 v #513 > > |> parse_ (any_char_ ()) 00:00:22 v #514 > > |> resultm.get 00:00:22 v #515 > > |> sm'.format_debug 00:00:22 v #516 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:22 v #517 > > sm'.format_debug) 00:00:22 v #518 > > 00:00:22 v #519 > > ── [ 287.91ms - stdout ] ─────────────────────────────────────────────────────── 00:00:22 v #520 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" 00:00:22 v #521 > > expected: "struct ('a', (Ln: 1, Col: 2))" 00:00:22 v #522 > > │ 00:00:22 v #523 > > 00:00:22 v #524 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:22 v #525 > > │ ### p_char 00:00:22 v #526 > > 00:00:22 v #527 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #528 > > inl p_char (c : char) : parser char = function 00:00:22 v #529 > > | "", s => 00:00:22 v #530 > > backend_switch { 00:00:22 v #531 > > Fsharp = fun () => $'$"parsing.p_char / unexpected end of input / c: 00:00:22 v #532 > > \'{!c}\' / s: %A{!s}"' : string 00:00:22 v #533 > > Python = fun () => $'f"parsing.p_char / unexpected end of input / c: 00:00:22 v #534 > > \'{!c}\' / s: {!s}"' : string 00:00:22 v #535 > > } 00:00:22 v #536 > > |> Error 00:00:22 v #537 > > | input, (parser_state ({ line_text position = { line col } } as s) as s') 00:00:22 v #538 > > => 00:00:22 v #539 > > inl first_char = input |> sm'.index 0i32 00:00:22 v #540 > > if first_char = c then 00:00:22 v #541 > > Ok ( 00:00:22 v #542 > > first_char, 00:00:22 v #543 > > input |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:22 v #544 > > s' |> update (first_char |> sm'.obj_to_string) 00:00:22 v #545 > > ) 00:00:22 v #546 > > else 00:00:22 v #547 > > inl message : string = 00:00:22 v #548 > > inl rest = 00:00:22 v #549 > > input 00:00:22 v #550 > > |> sm'.range 00:00:22 v #551 > > (am'.Start 0i32) 00:00:22 v #552 > > (am'.End fun l => 00:00:22 v #553 > > match (input |> sm'.index_of "\n") - 1 with 00:00:22 v #554 > > | -2 => l () + 1 00:00:22 v #555 > > | i => i + 1 00:00:22 v #556 > > ) 00:00:22 v #557 > > backend_switch { 00:00:22 v #558 > > Fsharp = fun () => $'$"parsing.p_char / expected: \'{!c}\' 00:00:22 v #559 > > line: {!line} / col: {!col}\n{!line_text}{!rest}"' : string 00:00:22 v #560 > > Python = fun () => $'f"""parsing.p_char / expected: \'{!c}\' 00:00:22 v #561 > > / line: {!line} / col: {!col}\n{!line_text}{!rest}"""' : string 00:00:22 v #562 > > } 00:00:22 v #563 > > inl pointer_line = (sm'.replicate (col - 1) " ") +. "^" 00:00:22 v #564 > > backend_switch { 00:00:22 v #565 > > Fsharp = fun () => $'$"{!message}\n{!pointer_line}\n"' : string 00:00:22 v #566 > > Python = fun () => $'f"""{!message}\n{!pointer_line}\n"""' : 00:00:22 v #567 > > string 00:00:22 v #568 > > } 00:00:22 v #569 > > |> Error 00:00:22 v #570 > > 00:00:22 v #571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:22 v #572 > > //// test 00:00:22 v #573 > > ///! fsharp 00:00:22 v #574 > > ///! cuda 00:00:22 v #575 > > ///! typescript 00:00:22 v #576 > > 00:00:22 v #577 > > "abc" 00:00:22 v #578 > > |> parse (p_char 'a') 00:00:22 v #579 > > |> resultm.get 00:00:22 v #580 > > |> sm'.format_debug 00:00:22 v #581 > > |> _assert_eq ( 00:00:22 v #582 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:22 v #583 > > 1i32; col = 2i32 } }) 00:00:22 v #584 > > |> sm'.format_debug 00:00:22 v #585 > > ) 00:00:28 v #586 > > 00:00:28 v #587 > > ── [ 6.12s - return value ] ──────────────────────────────────────────────────── 00:00:28 v #588 > > │ .py output (Cuda): 00:00:28 v #589 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 00:00:28 v #590 > > 'bc', a, 1, 2) 00:00:28 v #591 > > │ 00:00:28 v #592 > > │ .ts output: 00:00:28 v #593 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 00:00:28 v #594 > > │ 00:00:28 v #595 > > │ 00:00:28 v #596 > > 00:00:28 v #597 > > ── [ 6.12s - stdout ] ────────────────────────────────────────────────────────── 00:00:28 v #598 > > │ .fsx output: 00:00:28 v #599 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" 00:00:28 v #600 > > expected: "struct ('a', "bc", a, 1, 2)" 00:00:28 v #601 > > │ 00:00:28 v #602 > > 00:00:28 v #603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:28 v #604 > > //// test 00:00:28 v #605 > > 00:00:28 v #606 > > "abc" 00:00:28 v #607 > > |> parse_ (p_char_ 'a') 00:00:28 v #608 > > |> resultm.get 00:00:28 v #609 > > |> sm'.format_debug 00:00:28 v #610 > > |> _assert_eq' (('a', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:28 v #611 > > sm'.format_debug) 00:00:29 v #612 > > 00:00:29 v #613 > > ── [ 214.55ms - stdout ] ─────────────────────────────────────────────────────── 00:00:29 v #614 > > │ __assert_eq' / actual: "struct ('a', (Ln: 1, Col: 2))" 00:00:29 v #615 > > expected: "struct ('a', (Ln: 1, Col: 2))" 00:00:29 v #616 > > │ 00:00:29 v #617 > > 00:00:29 v #618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:29 v #619 > > │ ### any_string 00:00:29 v #620 > > 00:00:29 v #621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 v #622 > > inl any_string length : parser string = fun input, s => 00:00:29 v #623 > > if sm'.length input < length then 00:00:29 v #624 > > backend_switch { 00:00:29 v #625 > > Fsharp = fun () => $'$"parsing.any_string / unexpected end of input 00:00:29 v #626 > > / s: %A{!s}"' : string 00:00:29 v #627 > > Python = fun () => $'f"parsing.any_string / unexpected end of input 00:00:29 v #628 > > / s: {!s}"' : string 00:00:29 v #629 > > } 00:00:29 v #630 > > |> Error 00:00:29 v #631 > > else 00:00:29 v #632 > > inl result = input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:00:29 v #633 > > length) 00:00:29 v #634 > > Ok ( 00:00:29 v #635 > > result, 00:00:29 v #636 > > input |> sm'.range (am'.Start length) (am'.End eval), 00:00:29 v #637 > > s |> update result 00:00:29 v #638 > > ) 00:00:29 v #639 > > 00:00:29 v #640 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:29 v #641 > > //// test 00:00:29 v #642 > > ///! fsharp 00:00:29 v #643 > > ///! cuda 00:00:29 v #644 > > ///! typescript 00:00:29 v #645 > > 00:00:29 v #646 > > "abcdef" 00:00:29 v #647 > > |> parse (any_string 3i32) 00:00:29 v #648 > > |> resultm.get 00:00:29 v #649 > > |> sm'.format_debug 00:00:29 v #650 > > |> _assert_eq ( 00:00:29 v #651 > > ("abc", "def", { line_text = "abc" |> sm'.string_builder; position = { line 00:00:29 v #652 > > = 1i32; col = 4i32 } }) 00:00:29 v #653 > > |> sm'.format_debug 00:00:29 v #654 > > ) 00:00:35 v #655 > > 00:00:35 v #656 > > ── [ 6.22s - return value ] ──────────────────────────────────────────────────── 00:00:35 v #657 > > │ .py output (Cuda): 00:00:35 v #658 > > │ __assert_eq / actual: ('abc', 'def', abc, 1, 4) / expected: 00:00:35 v #659 > > ('abc', 'def', abc, 1, 4) 00:00:35 v #660 > > │ 00:00:35 v #661 > > │ .ts output: 00:00:35 v #662 > > │ __assert_eq / actual: abc,def,abc,1,4 / expected: 00:00:35 v #663 > > abc,def,abc,1,4 00:00:35 v #664 > > │ 00:00:35 v #665 > > │ 00:00:35 v #666 > > 00:00:35 v #667 > > ── [ 6.22s - stdout ] ────────────────────────────────────────────────────────── 00:00:35 v #668 > > │ .fsx output: 00:00:35 v #669 > > │ __assert_eq / actual: "struct ("abc", "def", abc, 1, 4)" 00:00:35 v #670 > > expected: "struct ("abc", "def", abc, 1, 4)" 00:00:35 v #671 > > │ 00:00:35 v #672 > > 00:00:35 v #673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 v #674 > > //// test 00:00:35 v #675 > > 00:00:35 v #676 > > "abcdef" 00:00:35 v #677 > > |> parse_ (any_string__ 3) 00:00:35 v #678 > > |> resultm.get 00:00:35 v #679 > > |> sm'.obj_to_string 00:00:35 v #680 > > |> _assert_eq' (("abc", ($'FParsec.Position (null, 0, 1, 4)' : position_)) |> 00:00:35 v #681 > > sm'.obj_to_string) 00:00:35 v #682 > > 00:00:35 v #683 > > ── [ 209.12ms - stdout ] ─────────────────────────────────────────────────────── 00:00:35 v #684 > > │ __assert_eq' / actual: "(abc, (Ln: 1, Col: 4))" / expected: 00:00:35 v #685 > > "(abc, (Ln: 1, Col: 4))" 00:00:35 v #686 > > │ 00:00:35 v #687 > > 00:00:35 v #688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 v #689 > > │ ### skip_any_string 00:00:35 v #690 > > 00:00:35 v #691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 v #692 > > inl skip_any_string length : parser () = fun input, s => 00:00:35 v #693 > > if sm'.length input < length then 00:00:35 v #694 > > backend_switch { 00:00:35 v #695 > > Fsharp = fun () => $'$"parsing.skip_any_string / unexpected end of 00:00:35 v #696 > > input / s: %A{!s}"' : string 00:00:35 v #697 > > Python = fun () => $'f"parsing.skip_any_string / unexpected end of 00:00:35 v #698 > > input / s: {!s}"' : string 00:00:35 v #699 > > } 00:00:35 v #700 > > |> Error 00:00:35 v #701 > > else 00:00:35 v #702 > > Ok ( 00:00:35 v #703 > > (), 00:00:35 v #704 > > input |> sm'.range (am'.Start length) (am'.End eval), 00:00:35 v #705 > > s |> update (input |> sm'.range (am'.Start 0i32) (am'.End fun _ => 00:00:35 v #706 > > length)) 00:00:35 v #707 > > ) 00:00:35 v #708 > > 00:00:35 v #709 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:35 v #710 > > //// test 00:00:35 v #711 > > ///! fsharp 00:00:35 v #712 > > ///! cuda 00:00:35 v #713 > > ///! typescript 00:00:35 v #714 > > 00:00:35 v #715 > > "abcdef" 00:00:35 v #716 > > |> parse (skip_any_string 3i32) 00:00:35 v #717 > > |> resultm.get 00:00:35 v #718 > > |> sm'.format_debug 00:00:35 v #719 > > |> _assert_eq ( 00:00:35 v #720 > > ((), "def", { line_text = "abc" |> sm'.string_builder; position = { line = 00:00:35 v #721 > > 1i32; col = 4i32 } }) 00:00:35 v #722 > > |> sm'.format_debug 00:00:35 v #723 > > ) 00:00:42 v #724 > > 00:00:42 v #725 > > ── [ 6.17s - return value ] ──────────────────────────────────────────────────── 00:00:42 v #726 > > │ .py output (Cuda): 00:00:42 v #727 > > │ __assert_eq / actual: ('def', abc, 1, 4) / expected: ('def', 00:00:42 v #728 > > abc, 1, 4) 00:00:42 v #729 > > │ 00:00:42 v #730 > > │ .ts output: 00:00:42 v #731 > > │ __assert_eq / actual: def,abc,1,4 / expected: def,abc,1,4 00:00:42 v #732 > > │ 00:00:42 v #733 > > │ 00:00:42 v #734 > > 00:00:42 v #735 > > ── [ 6.17s - stdout ] ────────────────────────────────────────────────────────── 00:00:42 v #736 > > │ .fsx output: 00:00:42 v #737 > > │ __assert_eq / actual: "struct ("def", abc, 1, 4)" / expected: 00:00:42 v #738 > > "struct ("def", abc, 1, 4)" 00:00:42 v #739 > > │ 00:00:42 v #740 > > 00:00:42 v #741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #742 > > │ ### (>>.) 00:00:42 v #743 > > 00:00:42 v #744 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #745 > > inl (>>.) forall t u. (a : parser t) (b : parser u) : parser u = fun input, s => 00:00:42 v #746 > > match a (input, s) with 00:00:42 v #747 > > | Ok (_, rest, s) => b (rest, s) 00:00:42 v #748 > > | Error e => Error e 00:00:42 v #749 > > 00:00:42 v #750 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #751 > > │ ### (>>.) 00:00:42 v #752 > > 00:00:42 v #753 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #754 > > inl (.>>) forall t u. (a : parser t) (b : parser u) : parser t = fun input, s => 00:00:42 v #755 > > match a (input, s) with 00:00:42 v #756 > > | Ok (result, rest, s) => 00:00:42 v #757 > > b (rest, s) 00:00:42 v #758 > > |> resultm.map fun _, rest, s => 00:00:42 v #759 > > result, rest, s 00:00:42 v #760 > > | Error e => Error e 00:00:42 v #761 > > 00:00:42 v #762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #763 > > │ ### (.>>.) 00:00:42 v #764 > > 00:00:42 v #765 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #766 > > inl (.>>.) forall t u. (a : parser t) (b : parser u) : parser (t * u) = fun 00:00:42 v #767 > > input, s => 00:00:42 v #768 > > match a (input, s) with 00:00:42 v #769 > > | Ok (result_a, rest, s) => 00:00:42 v #770 > > b (rest, s) 00:00:42 v #771 > > |> resultm.map fun result_b, rest, s => 00:00:42 v #772 > > (result_a, result_b), rest, s 00:00:42 v #773 > > | Error e => Error e 00:00:42 v #774 > > 00:00:42 v #775 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:42 v #776 > > │ ### (>>%) 00:00:42 v #777 > > 00:00:42 v #778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #779 > > inl (>>%) forall t u. (a : parser t) (b : u) : parser u = 00:00:42 v #780 > > a >> resultm.map fun _, rest, s => 00:00:42 v #781 > > b, rest, s 00:00:42 v #782 > > 00:00:42 v #783 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:42 v #784 > > //// test 00:00:42 v #785 > > ///! fsharp 00:00:42 v #786 > > ///! cuda 00:00:42 v #787 > > ///! typescript 00:00:42 v #788 > > 00:00:42 v #789 > > "abc" 00:00:42 v #790 > > |> parse (p_char 'a' >>. p_char 'b') 00:00:42 v #791 > > |> resultm.get 00:00:42 v #792 > > |> sm'.format_debug 00:00:42 v #793 > > |> _assert_eq ( 00:00:42 v #794 > > ('b', "c", { line_text = "ab" |> sm'.string_builder; position = { line = 00:00:42 v #795 > > 1i32; col = 3i32 } }) 00:00:42 v #796 > > |> sm'.format_debug 00:00:42 v #797 > > ) 00:00:42 v #798 > > 00:00:42 v #799 > > "abc\ndef\nghi" 00:00:42 v #800 > > |> parse (skip_any_string 5i32 >>. p_char 'a') 00:00:42 v #801 > > |> _assert_eq (Error "parsing.p_char / expected: 'a' / line: 2 / col: 2\ndef\n 00:00:42 v #802 > > ^\n") 00:00:49 v #803 > > 00:00:49 v #804 > > ── [ 6.35s - return value ] ──────────────────────────────────────────────────── 00:00:49 v #805 > > │ 00:00:49 v #806 > > │ .py output (Cuda): 00:00:49 v #807 > > │ __assert_eq / actual: ('b', 'c', ab, 1, 3) / expected: ('b', 00:00:49 v #808 > > 'c', ab, 1, 3) 00:00:49 v #809 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 00:00:49 v #810 > > 'a' / line: 2 / col: 2\ndef\n ^\n") / expected: US0_1(v0="parsing.p_char 00:00:49 v #811 > > expected: 'a' / line: 2 / col: 2\ndef\n ^\n") 00:00:49 v #812 > > │ 00:00:49 v #813 > > │ 00:00:49 v #814 > > │ .ts output: 00:00:49 v #815 > > │ __assert_eq / actual: b,c,ab,1,3 / expected: b,c,ab,1,3 00:00:49 v #816 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'a' 00:00:49 v #817 > > line: 2 / col: 2 00:00:49 v #818 > > │ def 00:00:49 v #819 > > │ ^ 00:00:49 v #820 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'a' / line: 2 00:00:49 v #821 > > / col: 2 00:00:49 v #822 > > │ def 00:00:49 v #823 > > │ ^ 00:00:49 v #824 > > │ ) 00:00:49 v #825 > > │ 00:00:49 v #826 > > │ 00:00:49 v #827 > > │ 00:00:49 v #828 > > 00:00:49 v #829 > > ── [ 6.35s - stdout ] ────────────────────────────────────────────────────────── 00:00:49 v #830 > > │ .fsx output: 00:00:49 v #831 > > │ __assert_eq / actual: "struct ('b', "c", ab, 1, 3)" 00:00:49 v #832 > > expected: "struct ('b', "c", ab, 1, 3)" 00:00:49 v #833 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'a' 00:00:49 v #834 > > line: 2 / col: 2 00:00:49 v #835 > > │ def 00:00:49 v #836 > > │ ^ 00:00:49 v #837 > > │ " / expected: US0_1 "parsing.p_char / expected: 'a' / line: 2 00:00:49 v #838 > > / col: 2 00:00:49 v #839 > > │ def 00:00:49 v #840 > > │ ^ 00:00:49 v #841 > > │ " 00:00:49 v #842 > > │ 00:00:49 v #843 > > 00:00:49 v #844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #845 > > //// test 00:00:49 v #846 > > 00:00:49 v #847 > > "abc" 00:00:49 v #848 > > |> parse_ (p_char_ 'a' >>.$ p_char_ 'b') 00:00:49 v #849 > > |> resultm.get 00:00:49 v #850 > > |> sm'.obj_to_string 00:00:49 v #851 > > |> _assert_eq' (('b', ($'FParsec.Position (null, 0, 1, 3)' : position_)) |> 00:00:49 v #852 > > sm'.obj_to_string) 00:00:49 v #853 > > 00:00:49 v #854 > > ── [ 187.43ms - stdout ] ─────────────────────────────────────────────────────── 00:00:49 v #855 > > │ __assert_eq' / actual: "(b, (Ln: 1, Col: 3))" / expected: 00:00:49 v #856 > > "(b, (Ln: 1, Col: 3))" 00:00:49 v #857 > > │ 00:00:49 v #858 > > 00:00:49 v #859 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #860 > > //// test 00:00:49 v #861 > > 00:00:49 v #862 > > "abc\ndef\nghi" 00:00:49 v #863 > > |> parse_ (skip_any_string_ 5 >>.$ p_char_ 'a') 00:00:49 v #864 > > |> resultm.unwrap_err 00:00:49 v #865 > > |> sm'.obj_to_string 00:00:49 v #866 > > |> sm'.replace "\r\n" "\n" 00:00:49 v #867 > > |> _assert_eq "(Error in Ln: 2 Col: 2\ndef\n ^\nExpecting: 'a'\n, Error in Ln: 2 00:00:49 v #868 > > Col: 2\nExpecting: 'a'\n)" 00:00:49 v #869 > > 00:00:49 v #870 > > ── [ 226.46ms - stdout ] ─────────────────────────────────────────────────────── 00:00:49 v #871 > > │ __assert_eq / actual: "(Error in Ln: 2 Col: 2 00:00:49 v #872 > > │ def 00:00:49 v #873 > > │ ^ 00:00:49 v #874 > > │ Expecting: 'a' 00:00:49 v #875 > > │ , Error in Ln: 2 Col: 2 00:00:49 v #876 > > │ Expecting: 'a' 00:00:49 v #877 > > │ )" / expected: "(Error in Ln: 2 Col: 2 00:00:49 v #878 > > │ def 00:00:49 v #879 > > │ ^ 00:00:49 v #880 > > │ Expecting: 'a' 00:00:49 v #881 > > │ , Error in Ln: 2 Col: 2 00:00:49 v #882 > > │ Expecting: 'a' 00:00:49 v #883 > > │ )" 00:00:49 v #884 > > │ 00:00:49 v #885 > > 00:00:49 v #886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:49 v #887 > > │ ### none_of 00:00:49 v #888 > > 00:00:49 v #889 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #890 > > inl none_of (chars : list char) : parser char = function 00:00:49 v #891 > > | "", s => 00:00:49 v #892 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:00:49 v #893 > > backend_switch { 00:00:49 v #894 > > Fsharp = fun () => $'$"parsing.none_of / unexpected end of input 00:00:49 v #895 > > chars: %A{!chars} / s: %A{!s}"' : string 00:00:49 v #896 > > Python = fun () => $'f"parsing.none_of / unexpected end of input 00:00:49 v #897 > > chars: {!chars} / s: {!s}"' : string 00:00:49 v #898 > > } 00:00:49 v #899 > > |> Error 00:00:49 v #900 > > | x, s => 00:00:49 v #901 > > inl first_char = x |> sm'.index 0i32 00:00:49 v #902 > > if chars |> listm'.exists' ((=) first_char) |> not then 00:00:49 v #903 > > Ok ( 00:00:49 v #904 > > first_char, 00:00:49 v #905 > > x |> sm'.range (am'.Start 1i32) (am'.End eval), 00:00:49 v #906 > > s |> update (first_char |> sm'.obj_to_string) 00:00:49 v #907 > > ) 00:00:49 v #908 > > else 00:00:49 v #909 > > inl chars = chars |> listm'.box |> listm'.to_array' 00:00:49 v #910 > > backend_switch { 00:00:49 v #911 > > Fsharp = fun () => $'$"parsing.none_of / unexpected char: 00:00:49 v #912 > > \'{!first_char}\' / chars: %A{!chars} / s: %A{!s}"' : string 00:00:49 v #913 > > Python = fun () => $'f"parsing.none_of / unexpected char: 00:00:49 v #914 > > \'{!first_char}\' / chars: {!chars} / s: {!s}"' : string 00:00:49 v #915 > > } 00:00:49 v #916 > > |> Error 00:00:49 v #917 > > 00:00:49 v #918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:49 v #919 > > //// test 00:00:49 v #920 > > ///! fsharp 00:00:49 v #921 > > ///! cuda 00:00:49 v #922 > > ///! typescript 00:00:49 v #923 > > 00:00:49 v #924 > > "abc" 00:00:49 v #925 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:00:49 v #926 > > |> _assert_eq ( 00:00:49 v #927 > > backend_switch { 00:00:49 v #928 > > Fsharp = fun () => 00:00:49 v #929 > > run_target function 00:00:49 v #930 > > | TypeScript _ => fun () => "parsing.none_of / unexpected char: 00:00:49 v #931 > > \'a\' / chars: a,b,c / s: ,1,1" : string 00:00:49 v #932 > > | _ => fun () => join "parsing.none_of / unexpected char: \'a\' 00:00:49 v #933 > > chars: [[|'a'; 'b'; 'c'|]] / s: struct (, 1, 1)" : string 00:00:49 v #934 > > Python = fun () => "parsing.none_of / unexpected char: \'a\' / chars: 00:00:49 v #935 > > [['a' 'b' 'c']] / s: (, 1, 1)" : string 00:00:49 v #936 > > } 00:00:49 v #937 > > |> Error 00:00:49 v #938 > > ) 00:00:49 v #939 > > 00:00:49 v #940 > > "def" 00:00:49 v #941 > > |> parse (none_of [['a'; 'b'; 'c']]) 00:00:49 v #942 > > |> resultm.get 00:00:49 v #943 > > |> sm'.format_debug 00:00:49 v #944 > > |> _assert_eq ( 00:00:49 v #945 > > ('d', "ef", { line_text = "d" |> sm'.string_builder; position = { line = 00:00:49 v #946 > > 1i32; col = 2i32 } }) 00:00:49 v #947 > > |> sm'.format_debug 00:00:49 v #948 > > ) 00:00:55 v #949 > > 00:00:55 v #950 > > ── [ 5.99s - return value ] ──────────────────────────────────────────────────── 00:00:55 v #951 > > │ 00:00:55 v #952 > > │ .py output (Cuda): 00:00:55 v #953 > > │ __assert_eq / actual: US0_1(v0="parsing.none_of / unexpected 00:00:55 v #954 > > char: 'a' / chars: ['a' 'b' 'c'] / s: (, 1, 1)") / expected: 00:00:55 v #955 > > US0_1(v0="parsing.none_of / unexpected char: 'a' / chars: ['a' 'b' 'c'] / s: (, 00:00:55 v #956 > > 1, 1)") 00:00:55 v #957 > > │ __assert_eq / actual: ('d', 'ef', d, 1, 2) / expected: ('d', 00:00:55 v #958 > > 'ef', d, 1, 2) 00:00:55 v #959 > > │ 00:00:55 v #960 > > │ 00:00:55 v #961 > > │ .ts output: 00:00:55 v #962 > > │ __assert_eq / actual: US0_1 (parsing.none_of / unexpected 00:00:55 v #963 > > char: 'a' / chars: a,b,c / s: ,1,1) / expected: US0_1 (parsing.none_of 00:00:55 v #964 > > unexpected char: 'a' / chars: a,b,c / s: ,1,1) 00:00:55 v #965 > > │ __assert_eq / actual: d,ef,d,1,2 / expected: d,ef,d,1,2 00:00:55 v #966 > > │ 00:00:55 v #967 > > │ 00:00:55 v #968 > > │ 00:00:55 v #969 > > 00:00:55 v #970 > > ── [ 5.99s - stdout ] ────────────────────────────────────────────────────────── 00:00:55 v #971 > > │ .fsx output: 00:00:55 v #972 > > │ __assert_eq / actual: US0_1 00:00:55 v #973 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 00:00:55 v #974 > > 'b'; 'c'|] / s: struct (, 1, 1)" / expected: US0_1 00:00:55 v #975 > > │ "parsing.none_of / unexpected char: 'a' / chars: [|'a'; 00:00:55 v #976 > > 'b'; 'c'|] / s: struct (, 1, 1)" 00:00:55 v #977 > > │ __assert_eq / actual: "struct ('d', "ef", d, 1, 2)" 00:00:55 v #978 > > expected: "struct ('d', "ef", d, 1, 2)" 00:00:55 v #979 > > │ 00:00:55 v #980 > > 00:00:55 v #981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:55 v #982 > > //// test 00:00:55 v #983 > > 00:00:55 v #984 > > "abc" 00:00:55 v #985 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:00:55 v #986 > > |> resultm.unwrap_err 00:00:55 v #987 > > |> sm'.obj_to_string 00:00:55 v #988 > > |> sm'.replace "\r\n" "\n" 00:00:55 v #989 > > |> _assert_eq ($'"(Error in Ln: 1 Col: 1\nabc\n^\nExpecting: any char not in 00:00:55 v #990 > > ‘abc’\n, Error in Ln: 1 Col: 1\nExpecting: any char not in ‘abc’\n)"') 00:00:55 v #991 > > 00:00:55 v #992 > > "def" 00:00:55 v #993 > > |> parse_ (none_of_ [['a'; 'b'; 'c']]) 00:00:55 v #994 > > |> resultm.get 00:00:55 v #995 > > |> sm'.obj_to_string 00:00:55 v #996 > > |> _assert_eq' (('d', ($'FParsec.Position (null, 0, 1, 2)' : position_)) |> 00:00:55 v #997 > > sm'.obj_to_string) 00:00:56 v #998 > > 00:00:56 v #999 > > ── [ 291.34ms - stdout ] ─────────────────────────────────────────────────────── 00:00:56 v #1000 > > │ __assert_eq / actual: "(Error in Ln: 1 Col: 1 00:00:56 v #1001 > > │ abc 00:00:56 v #1002 > > │ ^ 00:00:56 v #1003 > > │ Expecting: any char not in ‘abc’ 00:00:56 v #1004 > > │ , Error in Ln: 1 Col: 1 00:00:56 v #1005 > > │ Expecting: any char not in ‘abc’ 00:00:56 v #1006 > > │ )" / expected: "(Error in Ln: 1 Col: 1 00:00:56 v #1007 > > │ abc 00:00:56 v #1008 > > │ ^ 00:00:56 v #1009 > > │ Expecting: any char not in ‘abc’ 00:00:56 v #1010 > > │ , Error in Ln: 1 Col: 1 00:00:56 v #1011 > > │ Expecting: any char not in ‘abc’ 00:00:56 v #1012 > > │ )" 00:00:56 v #1013 > > │ __assert_eq' / actual: "(d, (Ln: 1, Col: 2))" / expected: 00:00:56 v #1014 > > "(d, (Ln: 1, Col: 2))" 00:00:56 v #1015 > > │ 00:00:56 v #1016 > > 00:00:56 v #1017 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:56 v #1018 > > │ ### (<|>) 00:00:56 v #1019 > > 00:00:56 v #1020 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:56 v #1021 > > inl (<|>) forall t. (a : parser t) (b : parser t) : parser t = fun input, s => 00:00:56 v #1022 > > match a (input, s) with 00:00:56 v #1023 > > | Ok _ as result => result 00:00:56 v #1024 > > | Error _ => b (input, s) 00:00:56 v #1025 > > 00:00:56 v #1026 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:56 v #1027 > > //// test 00:00:56 v #1028 > > ///! fsharp 00:00:56 v #1029 > > ///! cuda 00:00:56 v #1030 > > ///! typescript 00:00:56 v #1031 > > 00:00:56 v #1032 > > "abc" 00:00:56 v #1033 > > |> parse (p_char 'a' <|> p_char 'b') 00:00:56 v #1034 > > |> resultm.get 00:00:56 v #1035 > > |> sm'.format_debug 00:00:56 v #1036 > > |> _assert_eq ( 00:00:56 v #1037 > > ('a', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:00:56 v #1038 > > 1i32; col = 2i32 } }) 00:00:56 v #1039 > > |> sm'.format_debug 00:00:56 v #1040 > > ) 00:00:56 v #1041 > > 00:00:56 v #1042 > > "cba" 00:00:56 v #1043 > > |> parse (p_char 'a' <|> p_char 'b') 00:00:56 v #1044 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:00:56 v #1045 > > 1\ncba\n^\n") 00:01:02 v #1046 > > 00:01:02 v #1047 > > ── [ 6.36s - return value ] ──────────────────────────────────────────────────── 00:01:02 v #1048 > > │ 00:01:02 v #1049 > > │ .py output (Cuda): 00:01:02 v #1050 > > │ __assert_eq / actual: ('a', 'bc', a, 1, 2) / expected: ('a', 00:01:02 v #1051 > > 'bc', a, 1, 2) 00:01:02 v #1052 > > │ __assert_eq / actual: US0_1(v0="parsing.p_char / expected: 00:01:02 v #1053 > > 'b' / line: 1 / col: 1\ncba\n^\n") / expected: US0_1(v0="parsing.p_char 00:01:02 v #1054 > > expected: 'b' / line: 1 / col: 1\ncba\n^\n") 00:01:02 v #1055 > > │ 00:01:02 v #1056 > > │ 00:01:02 v #1057 > > │ .ts output: 00:01:02 v #1058 > > │ __assert_eq / actual: a,bc,a,1,2 / expected: a,bc,a,1,2 00:01:02 v #1059 > > │ __assert_eq / actual: US0_1 (parsing.p_char / expected: 'b' 00:01:02 v #1060 > > line: 1 / col: 1 00:01:02 v #1061 > > │ cba 00:01:02 v #1062 > > │ ^ 00:01:02 v #1063 > > │ ) / expected: US0_1 (parsing.p_char / expected: 'b' / line: 1 00:01:02 v #1064 > > / col: 1 00:01:02 v #1065 > > │ cba 00:01:02 v #1066 > > │ ^ 00:01:02 v #1067 > > │ ) 00:01:02 v #1068 > > │ 00:01:02 v #1069 > > │ 00:01:02 v #1070 > > │ 00:01:02 v #1071 > > 00:01:02 v #1072 > > ── [ 6.36s - stdout ] ────────────────────────────────────────────────────────── 00:01:02 v #1073 > > │ .fsx output: 00:01:02 v #1074 > > │ __assert_eq / actual: "struct ('a', "bc", a, 1, 2)" 00:01:02 v #1075 > > expected: "struct ('a', "bc", a, 1, 2)" 00:01:02 v #1076 > > │ __assert_eq / actual: US0_1 "parsing.p_char / expected: 'b' 00:01:02 v #1077 > > line: 1 / col: 1 00:01:02 v #1078 > > │ cba 00:01:02 v #1079 > > │ ^ 00:01:02 v #1080 > > │ " / expected: US0_1 "parsing.p_char / expected: 'b' / line: 1 00:01:02 v #1081 > > / col: 1 00:01:02 v #1082 > > │ cba 00:01:02 v #1083 > > │ ^ 00:01:02 v #1084 > > │ " 00:01:02 v #1085 > > │ 00:01:02 v #1086 > > 00:01:02 v #1087 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:02 v #1088 > > │ ### (|>>) 00:01:02 v #1089 > > 00:01:02 v #1090 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1091 > > inl (|>>) p f : parser _ = 00:01:02 v #1092 > > p >> resultm.map fun result, rest => 00:01:02 v #1093 > > f result, rest 00:01:02 v #1094 > > 00:01:02 v #1095 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:02 v #1096 > > //// test 00:01:02 v #1097 > > ///! fsharp 00:01:02 v #1098 > > ///! cuda 00:01:02 v #1099 > > ///! typescript 00:01:02 v #1100 > > 00:01:02 v #1101 > > "abc" 00:01:02 v #1102 > > |> parse (p_char 'a' |>> sm'.char_to_upper) 00:01:02 v #1103 > > |> resultm.get 00:01:02 v #1104 > > |> sm'.format_debug 00:01:02 v #1105 > > |> _assert_eq ( 00:01:02 v #1106 > > ('A', "bc", { line_text = "a" |> sm'.string_builder; position = { line = 00:01:02 v #1107 > > 1i32; col = 2i32 } }) 00:01:02 v #1108 > > |> sm'.format_debug 00:01:02 v #1109 > > ) 00:01:08 v #1110 > > 00:01:08 v #1111 > > ── [ 6.09s - return value ] ──────────────────────────────────────────────────── 00:01:08 v #1112 > > │ .py output (Cuda): 00:01:08 v #1113 > > │ __assert_eq / actual: ('A', 'bc', a, 1, 2) / expected: ('A', 00:01:08 v #1114 > > 'bc', a, 1, 2) 00:01:08 v #1115 > > │ 00:01:08 v #1116 > > │ .ts output: 00:01:08 v #1117 > > │ __assert_eq / actual: A,bc,a,1,2 / expected: A,bc,a,1,2 00:01:08 v #1118 > > │ 00:01:08 v #1119 > > │ 00:01:08 v #1120 > > 00:01:08 v #1121 > > ── [ 6.09s - stdout ] ────────────────────────────────────────────────────────── 00:01:08 v #1122 > > │ .fsx output: 00:01:08 v #1123 > > │ __assert_eq / actual: "struct ('A', "bc", a, 1, 2)" 00:01:08 v #1124 > > expected: "struct ('A', "bc", a, 1, 2)" 00:01:08 v #1125 > > │ 00:01:08 v #1126 > > 00:01:08 v #1127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:08 v #1128 > > │ ### many 00:01:08 v #1129 > > 00:01:08 v #1130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:08 v #1131 > > inl many p : parser (list _) = fun input => 00:01:08 v #1132 > > let rec loop acc input = 00:01:08 v #1133 > > match p input with 00:01:08 v #1134 > > | Ok (result, rest) => loop (result :: acc) rest 00:01:08 v #1135 > > | Error _ => Ok (acc |> listm.rev, input) 00:01:08 v #1136 > > loop [[]] input 00:01:09 v #1137 > > 00:01:09 v #1138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:09 v #1139 > > //// test 00:01:09 v #1140 > > ///! fsharp 00:01:09 v #1141 > > ///! cuda 00:01:09 v #1142 > > ///! typescript 00:01:09 v #1143 > > 00:01:09 v #1144 > > "aaabbc" 00:01:09 v #1145 > > |> parse (many (p_char 'a' <|> p_char 'b')) 00:01:09 v #1146 > > |> resultm.get 00:01:09 v #1147 > > |> sm'.format_debug 00:01:09 v #1148 > > |> _assert_eq ( 00:01:09 v #1149 > > ( 00:01:09 v #1150 > > [['a'; 'a'; 'a'; 'b'; 'b']], 00:01:09 v #1151 > > "c", 00:01:09 v #1152 > > { line_text = "aaabb" |> sm'.string_builder; position = { line = 1i32; 00:01:09 v #1153 > > col = 6i32 } } 00:01:09 v #1154 > > ) 00:01:09 v #1155 > > |> sm'.format_debug 00:01:09 v #1156 > > ) 00:01:15 v #1157 > > 00:01:15 v #1158 > > ── [ 6.12s - return value ] ──────────────────────────────────────────────────── 00:01:15 v #1159 > > │ .py output (Cuda): 00:01:15 v #1160 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', 00:01:15 v #1161 > > v1=UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 00:01:15 v #1162 > > 1, 6) / expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', 00:01:15 v #1163 > > v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) 00:01:15 v #1164 > > │ 00:01:15 v #1165 > > │ .ts output: 00:01:15 v #1166 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, 00:01:15 v #1167 > > UH0_1 (b, UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 00:01:15 v #1168 > > (b, UH0_1 (b, UH0_0))))),c,aaabb,1,6 00:01:15 v #1169 > > │ 00:01:15 v #1170 > > │ 00:01:15 v #1171 > > 00:01:15 v #1172 > > ── [ 6.12s - stdout ] ────────────────────────────────────────────────────────── 00:01:15 v #1173 > > │ .fsx output: 00:01:15 v #1174 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 00:01:15 v #1175 > > ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), 00:01:15 v #1176 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', 00:01:15 v #1177 > > UH0_1 ('a', UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), 00:01:15 v #1178 > > │ "c", aaabb, 1, 6)" 00:01:15 v #1179 > > │ 00:01:15 v #1180 > > 00:01:15 v #1181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:15 v #1182 > > │ ### many1_chars 00:01:15 v #1183 > > 00:01:15 v #1184 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:15 v #1185 > > inl many1_chars p : parser string = 00:01:15 v #1186 > > p >> resultm.map fun first_result, rest => 00:01:15 v #1187 > > let rec loop acc input = 00:01:15 v #1188 > > match p input with 00:01:15 v #1189 > > | Ok (result, rest) => loop (acc +. sm'.obj_to_string result) rest 00:01:15 v #1190 > > | Error _ => acc, input 00:01:15 v #1191 > > loop (first_result |> sm'.obj_to_string) rest 00:01:15 v #1192 > > 00:01:15 v #1193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:15 v #1194 > > //// test 00:01:15 v #1195 > > ///! fsharp 00:01:15 v #1196 > > ///! cuda 00:01:15 v #1197 > > ///! typescript 00:01:15 v #1198 > > 00:01:15 v #1199 > > "aaabbc" 00:01:15 v #1200 > > |> parse (many1_chars (p_char 'a' <|> p_char 'b')) 00:01:15 v #1201 > > |> resultm.get 00:01:15 v #1202 > > |> sm'.format_debug 00:01:15 v #1203 > > |> _assert_eq ( 00:01:15 v #1204 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:01:15 v #1205 > > line = 1i32; col = 6i32 } }) 00:01:15 v #1206 > > |> sm'.format_debug 00:01:15 v #1207 > > ) 00:01:21 v #1208 > > 00:01:21 v #1209 > > ── [ 6.34s - return value ] ──────────────────────────────────────────────────── 00:01:21 v #1210 > > │ .py output (Cuda): 00:01:21 v #1211 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: 00:01:21 v #1212 > > ('aaabb', 'c', aaabb, 1, 6) 00:01:21 v #1213 > > │ 00:01:21 v #1214 > > │ .ts output: 00:01:21 v #1215 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: 00:01:21 v #1216 > > aaabb,c,aaabb,1,6 00:01:21 v #1217 > > │ 00:01:21 v #1218 > > │ 00:01:21 v #1219 > > 00:01:21 v #1220 > > ── [ 6.34s - stdout ] ────────────────────────────────────────────────────────── 00:01:21 v #1221 > > │ .fsx output: 00:01:21 v #1222 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" 00:01:21 v #1223 > > expected: "struct ("aaabb", "c", aaabb, 1, 6)" 00:01:21 v #1224 > > │ 00:01:21 v #1225 > > 00:01:21 v #1226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 v #1227 > > │ ### many_chars 00:01:21 v #1228 > > 00:01:21 v #1229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 v #1230 > > inl many_chars p : parser string = fun input => 00:01:21 v #1231 > > match many1_chars p input with 00:01:21 v #1232 > > | Ok (result, rest) => Ok (result, rest) 00:01:21 v #1233 > > | Error e => Ok ("", input) 00:01:21 v #1234 > > 00:01:21 v #1235 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:21 v #1236 > > │ ### many_chars_till 00:01:21 v #1237 > > 00:01:21 v #1238 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:21 v #1239 > > inl many_chars_till p end_p : parser string = fun input => 00:01:21 v #1240 > > match end_p input with 00:01:21 v #1241 > > | Ok _ => Ok ("", input) 00:01:21 v #1242 > > | Error _ => many_chars p input 00:01:22 v #1243 > > 00:01:22 v #1244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:22 v #1245 > > │ ### many1 00:01:22 v #1246 > > 00:01:22 v #1247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #1248 > > inl many1 p : parser (list _) = 00:01:22 v #1249 > > p >> resultm.map fun first_result, rest => 00:01:22 v #1250 > > let rec loop acc input = 00:01:22 v #1251 > > match p input with 00:01:22 v #1252 > > | Ok (result, rest) => loop (result :: acc) rest 00:01:22 v #1253 > > | Error _ => acc |> listm.rev, input 00:01:22 v #1254 > > loop [[ first_result ]] rest 00:01:22 v #1255 > > 00:01:22 v #1256 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:22 v #1257 > > //// test 00:01:22 v #1258 > > ///! fsharp 00:01:22 v #1259 > > ///! cuda 00:01:22 v #1260 > > ///! typescript 00:01:22 v #1261 > > 00:01:22 v #1262 > > "aaabbc" 00:01:22 v #1263 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:01:22 v #1264 > > |> resultm.get 00:01:22 v #1265 > > |> sm'.format_debug 00:01:22 v #1266 > > |> _assert_eq ( 00:01:22 v #1267 > > ([['a'; 'a'; 'a'; 'b'; 'b']], "c", { line_text = "aaabb" |> 00:01:22 v #1268 > > sm'.string_builder; position = { line = 1i32; col = 6i32 } }) 00:01:22 v #1269 > > |> sm'.format_debug 00:01:22 v #1270 > > ) 00:01:22 v #1271 > > 00:01:22 v #1272 > > "bcc" 00:01:22 v #1273 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:01:22 v #1274 > > |> resultm.get 00:01:22 v #1275 > > |> sm'.format_debug 00:01:22 v #1276 > > |> _assert_eq ( 00:01:22 v #1277 > > ([['b']], "cc", { line_text = "b" |> sm'.string_builder; position = { line = 00:01:22 v #1278 > > 1i32; col = 2i32 } }) 00:01:22 v #1279 > > |> sm'.format_debug 00:01:22 v #1280 > > ) 00:01:22 v #1281 > > 00:01:22 v #1282 > > "cba" 00:01:22 v #1283 > > |> parse (many1 (p_char 'a' <|> p_char 'b')) 00:01:22 v #1284 > > |> _assert_eq (Error "parsing.p_char / expected: 'b' / line: 1 / col: 00:01:22 v #1285 > > 1\ncba\n^\n") 00:01:29 v #1286 > > 00:01:29 v #1287 > > ── [ 6.69s - return value ] ──────────────────────────────────────────────────── 00:01:29 v #1288 > > │ 00:01:29 v #1289 > > │ .py output (Cuda): 00:01:29 v #1290 > > │ __assert_eq / actual: (UH0_1(v0='a', v1=UH0_1(v0='a', 00:01:29 v #1291 > > v1=UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 00:01:29 v #1292 > > 1, 6) / expected: (UH0_1(v0='a', v1=UH0_1(v0='a', v1=UH0_1(v0='a', 00:01:29 v #1293 > > v1=UH0_1(v0='b', v1=UH0_1(v0='b', v1=UH0_0()))))), 'c', aaabb, 1, 6) 00:01:29 v #1294 > > │ __assert_eq / actual: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 00:01:29 v #1295 > > 2) / expected: (UH0_1(v0='b', v1=UH0_0()), 'cc', b, 1, 2) 00:01:29 v #1296 > > │ __assert_eq / actual: US1_1(v0="parsing.p_char / expected: 00:01:29 v #1297 > > 'b' / line: 1 / col: 1\ncba\n^\n") / expected: US1_1(v0="parsing.p_char 00:01:29 v #1298 > > expected: 'b' / line: 1 / col: 1\ncba\n^\n") 00:01:29 v #1299 > > │ 00:01:29 v #1300 > > │ 00:01:29 v #1301 > > │ .ts output: 00:01:29 v #1302 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 (b, 00:01:29 v #1303 > > UH0_1 (b, UH0_0))))),c,aaabb,1,6 / expected: UH0_1 (a, UH0_1 (a, UH0_1 (a, UH0_1 00:01:29 v #1304 > > (b, UH0_1 (b, UH0_0))))),c,aaabb,1,6 00:01:29 v #1305 > > │ __assert_eq / actual: UH0_1 (b, UH0_0),cc,b,1,2 / expected: 00:01:29 v #1306 > > UH0_1 (b, UH0_0),cc,b,1,2 00:01:29 v #1307 > > │ __assert_eq / actual: US1_1 (parsing.p_char / expected: 'b' 00:01:29 v #1308 > > line: 1 / col: 1 00:01:29 v #1309 > > │ cba 00:01:29 v #1310 > > │ ^ 00:01:29 v #1311 > > │ ) / expected: US1_1 (parsing.p_char / expected: 'b' / line: 1 00:01:29 v #1312 > > / col: 1 00:01:29 v #1313 > > │ cba 00:01:29 v #1314 > > │ ^ 00:01:29 v #1315 > > │ ) 00:01:29 v #1316 > > │ 00:01:29 v #1317 > > │ 00:01:29 v #1318 > > │ 00:01:29 v #1319 > > 00:01:29 v #1320 > > ── [ 6.69s - stdout ] ────────────────────────────────────────────────────────── 00:01:29 v #1321 > > │ .fsx output: 00:01:29 v #1322 > > │ __assert_eq / actual: "struct (UH0_1 ('a', UH0_1 ('a', UH0_1 00:01:29 v #1323 > > ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), 00:01:29 v #1324 > > │ "c", aaabb, 1, 6)" / expected: "struct (UH0_1 ('a', 00:01:29 v #1325 > > UH0_1 ('a', UH0_1 ('a', UH0_1 ('b', UH0_1 ('b', UH0_0))))), 00:01:29 v #1326 > > │ "c", aaabb, 1, 6)" 00:01:29 v #1327 > > │ __assert_eq / actual: "struct (UH0_1 ('b', UH0_0), "cc", b, 00:01:29 v #1328 > > 1, 2)" / expected: "struct (UH0_1 ('b', UH0_0), "cc", b, 1, 2)" 00:01:29 v #1329 > > │ __assert_eq / actual: US1_1 "parsing.p_char / expected: 'b' 00:01:29 v #1330 > > line: 1 / col: 1 00:01:29 v #1331 > > │ cba 00:01:29 v #1332 > > │ ^ 00:01:29 v #1333 > > │ " / expected: US1_1 "parsing.p_char / expected: 'b' / line: 1 00:01:29 v #1334 > > / col: 1 00:01:29 v #1335 > > │ cba 00:01:29 v #1336 > > │ ^ 00:01:29 v #1337 > > │ " 00:01:29 v #1338 > > │ 00:01:29 v #1339 > > 00:01:29 v #1340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:29 v #1341 > > │ ### many1_strings 00:01:29 v #1342 > > 00:01:29 v #1343 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #1344 > > inl many1_strings p : parser string = 00:01:29 v #1345 > > many1 p >> resultm.map fun results, rest => 00:01:29 v #1346 > > results 00:01:29 v #1347 > > |> listm.map sm'.obj_to_string 00:01:29 v #1348 > > |> listm'.box 00:01:29 v #1349 > > |> seq.of_list' 00:01:29 v #1350 > > |> sm'.concat "", 00:01:29 v #1351 > > rest 00:01:29 v #1352 > > 00:01:29 v #1353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:29 v #1354 > > //// test 00:01:29 v #1355 > > ///! fsharp 00:01:29 v #1356 > > ///! cuda 00:01:29 v #1357 > > ///! typescript 00:01:29 v #1358 > > 00:01:29 v #1359 > > "aaabbc" 00:01:29 v #1360 > > |> parse (many1_strings (p_char 'a' <|> p_char 'b')) 00:01:29 v #1361 > > |> resultm.get 00:01:29 v #1362 > > |> sm'.format_debug 00:01:29 v #1363 > > |> _assert_eq ( 00:01:29 v #1364 > > ("aaabb", "c", { line_text = "aaabb" |> sm'.string_builder; position = { 00:01:29 v #1365 > > line = 1i32; col = 6i32 } }) 00:01:29 v #1366 > > |> sm'.format_debug 00:01:29 v #1367 > > ) 00:01:35 v #1368 > > 00:01:35 v #1369 > > ── [ 6.28s - return value ] ──────────────────────────────────────────────────── 00:01:35 v #1370 > > │ .py output (Cuda): 00:01:35 v #1371 > > │ __assert_eq / actual: ('aaabb', 'c', aaabb, 1, 6) / expected: 00:01:35 v #1372 > > ('aaabb', 'c', aaabb, 1, 6) 00:01:35 v #1373 > > │ 00:01:35 v #1374 > > │ .ts output: 00:01:35 v #1375 > > │ __assert_eq / actual: aaabb,c,aaabb,1,6 / expected: 00:01:35 v #1376 > > aaabb,c,aaabb,1,6 00:01:35 v #1377 > > │ 00:01:35 v #1378 > > │ 00:01:35 v #1379 > > 00:01:35 v #1380 > > ── [ 6.28s - stdout ] ────────────────────────────────────────────────────────── 00:01:35 v #1381 > > │ .fsx output: 00:01:35 v #1382 > > │ __assert_eq / actual: "struct ("aaabb", "c", aaabb, 1, 6)" 00:01:35 v #1383 > > expected: "struct ("aaabb", "c", aaabb, 1, 6)" 00:01:35 v #1384 > > │ 00:01:35 v #1385 > > 00:01:35 v #1386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #1387 > > │ ### many_strings 00:01:35 v #1388 > > 00:01:35 v #1389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #1390 > > inl many_strings p : parser string = fun input => 00:01:35 v #1391 > > match many p input with 00:01:35 v #1392 > > | Ok (results, rest) => 00:01:35 v #1393 > > Ok (results |> listm.map sm'.obj_to_string |> listm'.box |> seq.of_list' 00:01:35 v #1394 > > |> sm'.concat "", rest) 00:01:35 v #1395 > > | Error e => Ok ("", input) 00:01:35 v #1396 > > 00:01:35 v #1397 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:35 v #1398 > > │ ### choice 00:01:35 v #1399 > > 00:01:35 v #1400 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #1401 > > inl choice parsers : parser _ = fun input => 00:01:35 v #1402 > > let rec loop = function 00:01:35 v #1403 > > | [[]] => Error "parsing.choice / no parsers succeeded" 00:01:35 v #1404 > > | p :: ps => 00:01:35 v #1405 > > match p input with 00:01:35 v #1406 > > | Ok _ as result => result 00:01:35 v #1407 > > | Error _ => loop ps 00:01:35 v #1408 > > loop parsers 00:01:35 v #1409 > > 00:01:35 v #1410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:35 v #1411 > > //// test 00:01:35 v #1412 > > ///! fsharp 00:01:35 v #1413 > > ///! cuda 00:01:35 v #1414 > > ///! typescript 00:01:35 v #1415 > > 00:01:35 v #1416 > > "bca" 00:01:35 v #1417 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]]) 00:01:35 v #1418 > > |> resultm.get 00:01:35 v #1419 > > |> sm'.format_debug 00:01:35 v #1420 > > |> _assert_eq ( 00:01:35 v #1421 > > ('b', "ca", { line_text = "b" |> sm'.string_builder; position = { line = 00:01:35 v #1422 > > 1i32; col = 2i32 } }) 00:01:35 v #1423 > > |> sm'.format_debug 00:01:35 v #1424 > > ) 00:01:35 v #1425 > > 00:01:35 v #1426 > > "cba" 00:01:35 v #1427 > > |> parse (choice [[ p_char 'a'; p_char 'b'; p_char 'c' ]]) 00:01:35 v #1428 > > |> resultm.get 00:01:35 v #1429 > > |> sm'.format_debug 00:01:35 v #1430 > > |> _assert_eq ( 00:01:35 v #1431 > > ('c', "ba", { line_text = "c" |> sm'.string_builder; position = { line = 00:01:35 v #1432 > > 1i32; col = 2i32 } }) 00:01:35 v #1433 > > |> sm'.format_debug 00:01:35 v #1434 > > ) 00:01:42 v #1435 > > 00:01:42 v #1436 > > ── [ 6.26s - return value ] ──────────────────────────────────────────────────── 00:01:42 v #1437 > > │ 00:01:42 v #1438 > > │ .py output (Cuda): 00:01:42 v #1439 > > │ __assert_eq / actual: ('b', 'ca', b, 1, 2) / expected: ('b', 00:01:42 v #1440 > > 'ca', b, 1, 2) 00:01:42 v #1441 > > │ __assert_eq / actual: ('c', 'ba', c, 1, 2) / expected: ('c', 00:01:42 v #1442 > > 'ba', c, 1, 2) 00:01:42 v #1443 > > │ 00:01:42 v #1444 > > │ 00:01:42 v #1445 > > │ .ts output: 00:01:42 v #1446 > > │ __assert_eq / actual: b,ca,b,1,2 / expected: b,ca,b,1,2 00:01:42 v #1447 > > │ __assert_eq / actual: c,ba,c,1,2 / expected: c,ba,c,1,2 00:01:42 v #1448 > > │ 00:01:42 v #1449 > > │ 00:01:42 v #1450 > > │ 00:01:42 v #1451 > > 00:01:42 v #1452 > > ── [ 6.26s - stdout ] ────────────────────────────────────────────────────────── 00:01:42 v #1453 > > │ .fsx output: 00:01:42 v #1454 > > │ __assert_eq / actual: "struct ('b', "ca", b, 1, 2)" 00:01:42 v #1455 > > expected: "struct ('b', "ca", b, 1, 2)" 00:01:42 v #1456 > > │ __assert_eq / actual: "struct ('c', "ba", c, 1, 2)" 00:01:42 v #1457 > > expected: "struct ('c', "ba", c, 1, 2)" 00:01:42 v #1458 > > │ 00:01:42 v #1459 > > 00:01:42 v #1460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:42 v #1461 > > │ ### between 00:01:42 v #1462 > > 00:01:42 v #1463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:42 v #1464 > > inl between p_open p_close p_content : parser _ = fun input => 00:01:42 v #1465 > > match p_open input with 00:01:42 v #1466 > > | Ok (_, rest1) => 00:01:42 v #1467 > > match p_content rest1 with 00:01:42 v #1468 > > | Ok (result, rest2) => 00:01:42 v #1469 > > match p_close rest2 with 00:01:42 v #1470 > > | Ok (_, rest3) => Ok (result, rest3) 00:01:42 v #1471 > > | Error e => 00:01:42 v #1472 > > backend_switch { 00:01:42 v #1473 > > Fsharp = fun () => $'$"parsing.between / expected closing 00:01:42 v #1474 > > delimiter / e: %A{!e} / input: %A{!input} / rest1: %A{!rest1} / rest2: 00:01:42 v #1475 > > %A{!rest2}"' : string 00:01:42 v #1476 > > Python = fun () => $'f"parsing.between / expected closing 00:01:42 v #1477 > > delimiter / e: {!e} / input: {!input} / rest1: {!rest1} / rest2: {!rest2}"' : 00:01:42 v #1478 > > string 00:01:42 v #1479 > > } 00:01:42 v #1480 > > |> Error 00:01:42 v #1481 > > | Error _ => Error "parsing.between / expected content" 00:01:42 v #1482 > > | Error e => Error e 00:01:42 v #1483 > > 00:01:42 v #1484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:42 v #1485 > > //// test 00:01:42 v #1486 > > 00:01:42 v #1487 > > "[[aaabb" 00:01:42 v #1488 > > |> parse_ (between_ (p_char_ '[[') (p_char_ ']]') (many1_chars_ (p_char_ 'a' 00:01:42 v #1489 > > <|>$ p_char_ 'b'))) 00:01:42 v #1490 > > |> resultm.unwrap_err 00:01:42 v #1491 > > |> sm'.format_debug 00:01:42 v #1492 > > 00:01:42 v #1493 > > ── [ 215.97ms - return value ] ───────────────────────────────────────────────── 00:01:42 v #1494 > > │ struct ("Error in Ln: 1 Col: 7 00:01:42 v #1495 > > │ [aaabb 00:01:42 v #1496 > > │ ^ 00:01:42 v #1497 > > │ Note: The error occurred at the end of the input stream. 00:01:42 v #1498 > > │ Expecting: ']', 'a' or 'b' 00:01:42 v #1499 > > │ ", 00:01:42 v #1500 > > │ Error in Ln: 1 Col: 7 00:01:42 v #1501 > > │ Expecting: ']', 'a' or 'b' 00:01:42 v #1502 > > │ ) 00:01:42 v #1503 > > 00:01:42 v #1504 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:42 v #1505 > > //// test 00:01:42 v #1506 > > ///! fsharp 00:01:42 v #1507 > > ///! cuda 00:01:42 v #1508 > > ///! typescript 00:01:42 v #1509 > > 00:01:42 v #1510 > > "[[aaabb]]" 00:01:42 v #1511 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:01:42 v #1512 > > p_char 'b'))) 00:01:42 v #1513 > > |> resultm.get 00:01:42 v #1514 > > |> sm'.format_debug 00:01:42 v #1515 > > |> _assert_eq ( 00:01:42 v #1516 > > ("aaabb", "", { line_text = "[[aaabb]]" |> sm'.string_builder; position = { 00:01:42 v #1517 > > line = 1i32; col = 8i32 } }) 00:01:42 v #1518 > > |> sm'.format_debug 00:01:42 v #1519 > > ) 00:01:42 v #1520 > > 00:01:42 v #1521 > > "[[aaabb" 00:01:42 v #1522 > > |> parse (between (p_char '[[') (p_char ']]') (many1_chars (p_char 'a' <|> 00:01:42 v #1523 > > p_char 'b'))) 00:01:42 v #1524 > > |> resultm.unwrap_err 00:01:42 v #1525 > > |> sm'.format_debug 00:01:42 v #1526 > > |> _assert_eq ( 00:01:42 v #1527 > > backend_switch { 00:01:42 v #1528 > > Fsharp = fun () => 00:01:42 v #1529 > > run_target function 00:01:42 v #1530 > > | TypeScript _ => fun () => "parsing.between / expected closing 00:01:42 v #1531 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']]' / s: 00:01:42 v #1532 > > [[aaabb,1,7 / input: [[aaabb,[[aaabb,1,1 / rest1: aaabb,[[aaabb,1,2 / rest2: 00:01:42 v #1533 > > ,[[aaabb,1,7" : string 00:01:42 v #1534 > > | _ => fun () => join "\"parsing.between / expected closing 00:01:42 v #1535 > > delimiter / e: \"parsing.p_char / unexpected end of input / c: ']]' / s: struct 00:01:42 v #1536 > > ([[aaabb, 1, 7)\" / input: struct (\"[[aaabb\", [[aaabb, 1, 1) / rest1: struct 00:01:42 v #1537 > > (\"aaabb\", [[aaabb, 1, 2) / rest2: struct (\"\", [[aaabb, 1, 7)\"" : string 00:01:42 v #1538 > > Python = fun () => "parsing.between / expected closing delimiter / e: 00:01:42 v #1539 > > parsing.p_char / unexpected end of input / c: ']]' / s: ([[aaabb, 1, 7) / input: 00:01:42 v #1540 > > ('[[aaabb', [[aaabb, 1, 1) / rest1: ('aaabb', [[aaabb, 1, 2) / rest2: ('', 00:01:42 v #1541 > > [[aaabb, 1, 7)" : string 00:01:42 v #1542 > > } 00:01:42 v #1543 > > ) 00:01:49 v #1544 > > 00:01:49 v #1545 > > ── [ 6.81s - return value ] ──────────────────────────────────────────────────── 00:01:49 v #1546 > > │ 00:01:49 v #1547 > > │ .py output (Cuda): 00:01:49 v #1548 > > │ __assert_eq / actual: ('aaabb', '', [aaabb], 1, 8) 00:01:49 v #1549 > > expected: ('aaabb', '', [aaabb], 1, 8) 00:01:49 v #1550 > > │ __assert_eq / actual: parsing.between / expected closing 00:01:49 v #1551 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 00:01:49 v #1552 > > 1, 7) / input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) 00:01:49 v #1553 > > rest2: ('', [aaabb, 1, 7) / expected: parsing.between / expected closing 00:01:49 v #1554 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: ([aaabb, 00:01:49 v #1555 > > 1, 7) / input: ('[aaabb', [aaabb, 1, 1) / rest1: ('aaabb', [aaabb, 1, 2) 00:01:49 v #1556 > > rest2: ('', [aaabb, 1, 7) 00:01:49 v #1557 > > │ 00:01:49 v #1558 > > │ 00:01:49 v #1559 > > │ .ts output: 00:01:49 v #1560 > > │ __assert_eq / actual: aaabb,,[aaabb],1,8 / expected: 00:01:49 v #1561 > > aaabb,,[aaabb],1,8 00:01:49 v #1562 > > │ __assert_eq / actual: parsing.between / expected closing 00:01:49 v #1563 > > delimiter / e: parsing.p_char / unexpected end of input / c: ']' / s: [aaabb,1,7 00:01:49 v #1564 > > / input: [aaabb,[aaabb,1,1 / rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7 00:01:49 v #1565 > > expected: parsing.between / expected closing delimiter / e: parsing.p_char 00:01:49 v #1566 > > unexpected end of input / c: ']' / s: [aaabb,1,7 / input: [aaabb,[aaabb,1,1 00:01:49 v #1567 > > rest1: aaabb,[aaabb,1,2 / rest2: ,[aaabb,1,7 00:01:49 v #1568 > > │ 00:01:49 v #1569 > > │ 00:01:49 v #1570 > > │ 00:01:49 v #1571 > > 00:01:49 v #1572 > > ── [ 6.81s - stdout ] ────────────────────────────────────────────────────────── 00:01:49 v #1573 > > │ .fsx output: 00:01:49 v #1574 > > │ __assert_eq / actual: "struct ("aaabb", "", [aaabb], 1, 8)" 00:01:49 v #1575 > > expected: "struct ("aaabb", "", [aaabb], 1, 8)" 00:01:49 v #1576 > > │ __assert_eq / actual: ""parsing.between / expected closing 00:01:49 v #1577 > > delimiter / e: "parsing.p_char / unexpected end of input / c: ']' / s: struct 00:01:49 v #1578 > > ([aaabb, 1, 7)" / input: struct ("[aaabb", [aaabb, 1, 1) / rest1: struct 00:01:49 v #1579 > > ("aaabb", [aaabb, 1, 2) / rest2: struct ("", [aaabb, 1, 7)"" / expected: 00:01:49 v #1580 > > ""parsing.between / expected closing delimiter / e: "parsing.p_char / unexpected 00:01:49 v #1581 > > end of input / c: ']' / s: struct ([aaabb, 1, 7)" / input: struct ("[aaabb", 00:01:49 v #1582 > > [aaabb, 1, 1) / rest1: struct ("aaabb", [aaabb, 1, 2) / rest2: struct ("", 00:01:49 v #1583 > > [aaabb, 1, 7)"" 00:01:49 v #1584 > > │ 00:01:49 v #1585 > > 00:01:49 v #1586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:49 v #1587 > > │ ### sep_by 00:01:49 v #1588 > > 00:01:49 v #1589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:49 v #1590 > > inl sep_by p sep : parser (list _) = fun input, s => 00:01:49 v #1591 > > let rec loop acc input s = 00:01:49 v #1592 > > match p (input, s) with 00:01:49 v #1593 > > | Ok (result, rest, s) => 00:01:49 v #1594 > > match sep (rest, s) with 00:01:49 v #1595 > > | Ok (_, rest, s) => loop (result :: acc) rest s 00:01:49 v #1596 > > | Error _ => Ok ((result :: acc) |> listm.rev, rest, s) 00:01:49 v #1597 > > | Error _ => Ok (acc |> listm.rev, input, s) 00:01:49 v #1598 > > loop [[]] input s 00:01:49 v #1599 > > 00:01:49 v #1600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:49 v #1601 > > │ ### span 00:01:49 v #1602 > > 00:01:49 v #1603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:49 v #1604 > > inl span pred str = 00:01:49 v #1605 > > let rec loop i = 00:01:49 v #1606 > > if i >= sm'.length str 00:01:49 v #1607 > > then i 00:01:49 v #1608 > > elif pred (str |> sm'.index i) 00:01:49 v #1609 > > then loop (i + 1) 00:01:49 v #1610 > > else i 00:01:49 v #1611 > > loop 0 00:01:49 v #1612 > > 00:01:49 v #1613 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:49 v #1614 > > │ ### spaces1 00:01:49 v #1615 > > 00:01:49 v #1616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:49 v #1617 > > inl spaces1 () : parser () = fun input, s => 00:01:49 v #1618 > > match input |> span ((=) ' ') with 00:01:49 v #1619 > > | 0i32 => Error "parsing.spaces1 / expected at least one space" 00:01:49 v #1620 > > | n => Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s) 00:01:50 v #1621 > > 00:01:50 v #1622 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:50 v #1623 > > │ ### spaces 00:01:50 v #1624 > > 00:01:50 v #1625 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:50 v #1626 > > inl spaces () : parser () = fun input, s => 00:01:50 v #1627 > > input 00:01:50 v #1628 > > |> span ((=) ' ') 00:01:50 v #1629 > > |> fun (n : i32) => 00:01:50 v #1630 > > Ok ((), input |> sm'.range (am'.Start n) (am'.End eval), s) 00:01:50 v #1631 > > 00:01:50 v #1632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:50 v #1633 > > │ ### p_digit 00:01:50 v #1634 > > 00:01:50 v #1635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:50 v #1636 > > inl p_digit () : parser char = fun input, s => 00:01:50 v #1637 > > match input |> sm'.index 0i32 with 00:01:50 v #1638 > > | ('0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9') as c => 00:01:50 v #1639 > > Ok (c, input |> sm'.range (am'.Start 1i32) (am'.End eval), s) 00:01:50 v #1640 > > | c => 00:01:50 v #1641 > > backend_switch { 00:01:50 v #1642 > > Fsharp = fun () => $'$"parsing.p_digit / unexpected char: {!c}"' : 00:01:50 v #1643 > > string 00:01:50 v #1644 > > Python = fun () => $'f"parsing.p_digit / unexpected char: {!c}"' : 00:01:50 v #1645 > > string 00:01:50 v #1646 > > } 00:01:50 v #1647 > > |> Error 00:01:50 v #1648 > > 00:01:50 v #1649 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:50 v #1650 > > //// test 00:01:50 v #1651 > > ///! fsharp 00:01:50 v #1652 > > ///! cuda 00:01:50 v #1653 > > ///! typescript 00:01:50 v #1654 > > 00:01:50 v #1655 > > "1 2 3" 00:01:50 v #1656 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:01:50 v #1657 > > |> resultm.get 00:01:50 v #1658 > > |> sm'.format_debug 00:01:50 v #1659 > > |> _assert_eq ( 00:01:50 v #1660 > > ([['1'; '2'; '3']], "", { line_text = "" |> sm'.string_builder; position = { 00:01:50 v #1661 > > col = 1i32; line = 1i32 } }) 00:01:50 v #1662 > > |> sm'.format_debug 00:01:50 v #1663 > > ) 00:01:56 v #1664 > > 00:01:56 v #1665 > > ── [ 5.93s - return value ] ──────────────────────────────────────────────────── 00:01:56 v #1666 > > │ .py output (Cuda): 00:01:56 v #1667 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_1(v0='2', 00:01:56 v #1668 > > v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1) / expected: (UH0_1(v0='1', 00:01:56 v #1669 > > v1=UH0_1(v0='2', v1=UH0_1(v0='3', v1=UH0_0()))), '', , 1, 1) 00:01:56 v #1670 > > │ 00:01:56 v #1671 > > │ .ts output: 00:01:56 v #1672 > > │ __assert_eq / actual: UH0_1 (1, UH0_1 (2, UH0_1 (3, 00:01:56 v #1673 > > UH0_0))),,,1,1 / expected: UH0_1 (1, UH0_1 (2, UH0_1 (3, UH0_0))),,,1,1 00:01:56 v #1674 > > │ 00:01:56 v #1675 > > │ 00:01:56 v #1676 > > 00:01:56 v #1677 > > ── [ 5.93s - stdout ] ────────────────────────────────────────────────────────── 00:01:56 v #1678 > > │ .fsx output: 00:01:56 v #1679 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 00:01:56 v #1680 > > ('3', UH0_0))), "", , 1, 1)" / expected: "struct (UH0_1 ('1', UH0_1 ('2', UH0_1 00:01:56 v #1681 > > ('3', UH0_0))), "", , 1, 1)" 00:01:56 v #1682 > > │ 00:01:56 v #1683 > > 00:01:56 v #1684 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:56 v #1685 > > //// test 00:01:56 v #1686 > > ///! fsharp 00:01:56 v #1687 > > ///! cuda 00:01:56 v #1688 > > ///! typescript 00:01:56 v #1689 > > 00:01:56 v #1690 > > "1 a 2" 00:01:56 v #1691 > > |> parse (sep_by (p_digit ()) (spaces1 ())) 00:01:56 v #1692 > > |> resultm.get 00:01:56 v #1693 > > |> sm'.format_debug 00:01:56 v #1694 > > |> _assert_eq ( 00:01:56 v #1695 > > ([['1']], "a 2", { line_text = "" |> sm'.string_builder; position = { col = 00:01:56 v #1696 > > 1i32; line = 1i32 } }) 00:01:56 v #1697 > > |> sm'.format_debug 00:01:56 v #1698 > > ) 00:02:02 v #1699 > > 00:02:02 v #1700 > > ── [ 5.89s - return value ] ──────────────────────────────────────────────────── 00:02:02 v #1701 > > │ .py output (Cuda): 00:02:02 v #1702 > > │ __assert_eq / actual: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 00:02:02 v #1703 > > 1) / expected: (UH0_1(v0='1', v1=UH0_0()), 'a 2', , 1, 1) 00:02:02 v #1704 > > │ 00:02:02 v #1705 > > │ .ts output: 00:02:02 v #1706 > > │ __assert_eq / actual: UH0_1 (1, UH0_0),a 2,,1,1 / expected: 00:02:02 v #1707 > > UH0_1 (1, UH0_0),a 2,,1,1 00:02:02 v #1708 > > │ 00:02:02 v #1709 > > │ 00:02:02 v #1710 > > 00:02:02 v #1711 > > ── [ 5.89s - stdout ] ────────────────────────────────────────────────────────── 00:02:02 v #1712 > > │ .fsx output: 00:02:02 v #1713 > > │ __assert_eq / actual: "struct (UH0_1 ('1', UH0_0), "a 2", , 00:02:02 v #1714 > > 1, 1)" / expected: "struct (UH0_1 ('1', UH0_0), "a 2", , 1, 1)" 00:02:02 v #1715 > > │ 00:02:02 v #1716 > > 00:02:02 v #1717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 v #1718 > > │ ### opt 00:02:02 v #1719 > > 00:02:02 v #1720 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 v #1721 > > inl opt p : parser (option _) = fun input, s => 00:02:02 v #1722 > > match p (input, s) with 00:02:02 v #1723 > > | Ok (result, rest, s) => Ok (Some result, rest, s) 00:02:02 v #1724 > > | Error _ => Ok (None, input, s) 00:02:02 v #1725 > > 00:02:02 v #1726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 v #1727 > > │ ### rest_of_line 00:02:02 v #1728 > > 00:02:02 v #1729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 v #1730 > > inl rest_of_line () : parser string = fun input, s => 00:02:02 v #1731 > > inl i : i32 = input |> span ((<>) '\n') 00:02:02 v #1732 > > inl result = input |> sm'.range (am'.Start i) (am'.End eval) 00:02:02 v #1733 > > Ok (result, result, s) 00:02:02 v #1734 > > 00:02:02 v #1735 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:02 v #1736 > > │ ### eof 00:02:02 v #1737 > > 00:02:02 v #1738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:02 v #1739 > > inl eof () : parser () = fun input, s => 00:02:02 v #1740 > > if sm'.length input = 0i32 00:02:02 v #1741 > > then Ok ((), input, s) 00:02:02 v #1742 > > else 00:02:02 v #1743 > > backend_switch { 00:02:02 v #1744 > > Fsharp = fun () => $'$"parsing.eof / expected end of input / input: 00:02:02 v #1745 > > %A{!input}"' : string 00:02:02 v #1746 > > Python = fun () => $'f"parsing.eof / expected end of input / input: 00:02:02 v #1747 > > {!input}"' : string 00:02:02 v #1748 > > } 00:02:02 v #1749 > > |> Error 00:02:03 v #1750 > 00:02:01 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 65218 } 00:02:03 v #1751 > 00:02:01 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:03 v #1752 > 00:02:02 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.ipynb to html 00:02:03 v #1753 > 00:02:02 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:03 v #1754 > 00:02:02 v #7 ! validate(nb) 00:02:04 v #1755 > 00:02:02 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:04 v #1756 > 00:02:02 v #9 ! return _pygments_highlight( 00:02:05 v #1757 > 00:02:03 v #10 ! [NbConvertApp] Writing 502616 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html 00:02:05 v #1758 > 00:02:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:02:05 v #1759 > 00:02:03 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:02:05 v #1760 > 00:02:03 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/parsing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:05 v #1761 > 00:02:04 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:05 v #1762 > 00:02:04 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:05 v #1763 > 00:02:04 d #16 spiral.run / dib / { exit_code = 0; result_length = 66175 } 00:02:05 d #1764 runtime.execute_with_options_async / { exit_code = 0; output_length = 72319 } 00:02:05 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path parsing.dib --retries 3 00:02:05 d #1765 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path sm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:05 v #1766 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "sm'.dib", "--retries", "3"])) } 00:02:05 v #1767 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:02:06 v #1768 > > 00:02:06 v #1769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:06 v #1770 > > │ # sm' 00:02:09 v #1771 > > 00:02:09 v #1772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:09 v #1773 > > //// test 00:02:09 v #1774 > > 00:02:09 v #1775 > > open testing 00:02:10 v #1776 > > 00:02:10 v #1777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1778 > > open rust 00:02:10 v #1779 > > open rust_operators 00:02:10 v #1780 > > open sm'_real 00:02:10 v #1781 > > 00:02:10 v #1782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1783 > > │ ## rust 00:02:10 v #1784 > > 00:02:10 v #1785 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1786 > > │ ### std_string 00:02:10 v #1787 > > 00:02:10 v #1788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1789 > > //// real 00:02:10 v #1790 > > 00:02:10 v #1791 > > nominal std_string = 00:02:10 v #1792 > > `( 00:02:10 v #1793 > > backend_switch `(()) `({}) { 00:02:10 v #1794 > > Fsharp = 00:02:10 v #1795 > > (fun () => 00:02:10 v #1796 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:02:10 v #1797 > > Fable.Core.Emit(\"std::string::String\")>]]\ntype std_string_String = class 00:02:10 v #1798 > > end\n#else\ntype std_string_String = string\n#endif\n" 00:02:10 v #1799 > > ) : () -> () 00:02:10 v #1800 > > } 00:02:10 v #1801 > > $'' : $'std_string_String' 00:02:10 v #1802 > > ) 00:02:10 v #1803 > > 00:02:10 v #1804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1805 > > type std_string = sm'_real.std_string 00:02:10 v #1806 > > 00:02:10 v #1807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1808 > > │ ### to_string' 00:02:10 v #1809 > > 00:02:10 v #1810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1811 > > inl to_string' forall t. (x : t) : std_string = 00:02:10 v #1812 > > !\($'$"!x.to_string()"') 00:02:10 v #1813 > > 00:02:10 v #1814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1815 > > │ ### from_std_string 00:02:10 v #1816 > > 00:02:10 v #1817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1818 > > //// real 00:02:10 v #1819 > > 00:02:10 v #1820 > > inl from_std_string (str : std_string) : string = 00:02:10 v #1821 > > open rust 00:02:10 v #1822 > > rust.emit_expr `std_string `string str 00:02:10 v #1823 > > ($'"fable_library_rust::String_::fromString($0)"' : string) 00:02:10 v #1824 > > 00:02:10 v #1825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1826 > > inl from_std_string (str : std_string) : string = 00:02:10 v #1827 > > real sm'_real.from_std_string str 00:02:10 v #1828 > > 00:02:10 v #1829 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1830 > > │ ## sm' 00:02:10 v #1831 > > 00:02:10 v #1832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:10 v #1833 > > │ ### symbol_to_string 00:02:10 v #1834 > > 00:02:10 v #1835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:10 v #1836 > > //// real 00:02:10 v #1837 > > 00:02:10 v #1838 > > inl symbol_to_string forall t {symbol}. : string = 00:02:10 v #1839 > > // inl x = real_core.type_lit_to_lit `t 00:02:10 v #1840 > > // inl x = real_core.type_to_symbol `t 00:02:10 v #1841 > > // inl x = real_core.type_lit_to_lit `t 00:02:10 v #1842 > > // !!!!SymbolToString (`(`t)) 00:02:10 v #1843 > > inl x = real_core.type_to_symbol `t 00:02:10 v #1844 > > !!!!SymbolToString (x) 00:02:11 v #1845 > > 00:02:11 v #1846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:11 v #1847 > > inl symbol_to_string forall t {symbol}. (x : t) : string = 00:02:11 v #1848 > > real symbol_to_string `t 00:02:11 v #1849 > > 00:02:11 v #1850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:11 v #1851 > > //// test 00:02:11 v #1852 > > ///! fsharp 00:02:11 v #1853 > > ///! cuda 00:02:11 v #1854 > > 00:02:11 v #1855 > > .test 00:02:11 v #1856 > > |> symbol_to_string 00:02:11 v #1857 > > |> _assert_eq "test" 00:02:12 v #1858 > > 00:02:12 v #1859 > > ── [ 1.04s - return value ] ──────────────────────────────────────────────────── 00:02:12 v #1860 > > │ .py output (Cuda): 00:02:12 v #1861 > > │ __assert_eq / actual: test / expected: test 00:02:12 v #1862 > > │ 00:02:12 v #1863 > > │ 00:02:12 v #1864 > > 00:02:12 v #1865 > > ── [ 1.05s - stdout ] ────────────────────────────────────────────────────────── 00:02:12 v #1866 > > │ .fsx output: 00:02:12 v #1867 > > │ __assert_eq / actual: "test" / expected: "test" 00:02:12 v #1868 > > │ 00:02:12 v #1869 > > 00:02:12 v #1870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:12 v #1871 > > //// test 00:02:12 v #1872 > > //// real 00:02:12 v #1873 > > ///! fsharp 00:02:12 v #1874 > > ///! cuda 00:02:12 v #1875 > > 00:02:12 v #1876 > > open testing 00:02:12 v #1877 > > inl x = .test 00:02:12 v #1878 > > inl x = symbol_to_string `(`x) 00:02:12 v #1879 > > _assert_eq `string "test" x 00:02:12 v #1880 > > 00:02:12 v #1881 > > ── [ 518.19ms - return value ] ───────────────────────────────────────────────── 00:02:12 v #1882 > > │ .py output (Cuda): 00:02:12 v #1883 > > │ __assert_eq / actual: test / expected: test 00:02:12 v #1884 > > │ 00:02:12 v #1885 > > │ 00:02:12 v #1886 > > 00:02:12 v #1887 > > ── [ 518.67ms - stdout ] ─────────────────────────────────────────────────────── 00:02:12 v #1888 > > │ .fsx output: 00:02:12 v #1889 > > │ __assert_eq / actual: "test" / expected: "test" 00:02:12 v #1890 > > │ 00:02:12 v #1891 > > 00:02:12 v #1892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:12 v #1893 > > │ ### index 00:02:12 v #1894 > > 00:02:12 v #1895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:12 v #1896 > > inl index i (str : string) : char = 00:02:12 v #1897 > > sm.index str i 00:02:13 v #1898 > > 00:02:13 v #1899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:13 v #1900 > > │ ### length 00:02:13 v #1901 > > 00:02:13 v #1902 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:13 v #1903 > > inl length forall dim {int}. (input : string) : dim = 00:02:13 v #1904 > > input |> sm.length 00:02:13 v #1905 > > 00:02:13 v #1906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:13 v #1907 > > //// test 00:02:13 v #1908 > > ///! fsharp 00:02:13 v #1909 > > ///! cuda 00:02:13 v #1910 > > 00:02:13 v #1911 > > "abc" 00:02:13 v #1912 > > |> length 00:02:13 v #1913 > > |> _assert_eq 3i32 00:02:13 v #1914 > > 00:02:13 v #1915 > > ── [ 594.60ms - return value ] ───────────────────────────────────────────────── 00:02:13 v #1916 > > │ .py output (Cuda): 00:02:13 v #1917 > > │ __assert_eq / actual: 3 / expected: 3 00:02:13 v #1918 > > │ 00:02:13 v #1919 > > │ 00:02:13 v #1920 > > 00:02:13 v #1921 > > ── [ 595.11ms - stdout ] ─────────────────────────────────────────────────────── 00:02:13 v #1922 > > │ .fsx output: 00:02:13 v #1923 > > │ __assert_eq / actual: 3 / expected: 3 00:02:13 v #1924 > > │ 00:02:13 v #1925 > > 00:02:13 v #1926 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:13 v #1927 > > │ ### to_char_array 00:02:13 v #1928 > > 00:02:13 v #1929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:13 v #1930 > > inl to_char_array (str : string) : array_base char = 00:02:13 v #1931 > > am.init (str |> length) (fun i => str |> index i) 00:02:13 v #1932 > > |> fun (a x : _ int _) => x 00:02:13 v #1933 > > 00:02:13 v #1934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:13 v #1935 > > //// test 00:02:13 v #1936 > > ///! fsharp 00:02:13 v #1937 > > ///! cuda 00:02:13 v #1938 > > 00:02:13 v #1939 > > "abc" 00:02:13 v #1940 > > |> to_char_array 00:02:13 v #1941 > > |> sm'.format 00:02:13 v #1942 > > |> _assert_eq (;[[ 'a'; 'b'; 'c' ]] |> sm'.format) 00:02:14 v #1943 > > 00:02:14 v #1944 > > ── [ 928.98ms - return value ] ───────────────────────────────────────────────── 00:02:14 v #1945 > > │ .py output (Cuda): 00:02:14 v #1946 > > │ __assert_eq / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 'c'] 00:02:14 v #1947 > > │ 00:02:14 v #1948 > > │ 00:02:14 v #1949 > > 00:02:14 v #1950 > > ── [ 929.40ms - stdout ] ─────────────────────────────────────────────────────── 00:02:14 v #1951 > > │ .fsx output: 00:02:14 v #1952 > > │ __assert_eq / actual: "[|'a'; 'b'; 'c'|]" / expected: "[|'a'; 00:02:14 v #1953 > > 'b'; 'c'|]" 00:02:14 v #1954 > > │ 00:02:14 v #1955 > > 00:02:14 v #1956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:14 v #1957 > > │ ### to_char_list 00:02:14 v #1958 > > 00:02:14 v #1959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:14 v #1960 > > inl to_char_list (str : string) : list char = 00:02:14 v #1961 > > listm.init (str |> length) (fun (i : i64) => str |> index i) 00:02:15 v #1962 > > 00:02:15 v #1963 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #1964 > > //// test 00:02:15 v #1965 > > ///! fsharp 00:02:15 v #1966 > > ///! cuda 00:02:15 v #1967 > > 00:02:15 v #1968 > > "abc" 00:02:15 v #1969 > > |> to_char_list 00:02:15 v #1970 > > |> _assert_eq [[ 'a'; 'b'; 'c' ]] 00:02:15 v #1971 > > 00:02:15 v #1972 > > ── [ 668.26ms - return value ] ───────────────────────────────────────────────── 00:02:15 v #1973 > > │ .py output (Cuda): 00:02:15 v #1974 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', 00:02:15 v #1975 > > v1=UH0_1(v0='c', v1=UH0_0()))) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', 00:02:15 v #1976 > > v1=UH0_1(v0='c', v1=UH0_0()))) 00:02:15 v #1977 > > │ 00:02:15 v #1978 > > │ 00:02:15 v #1979 > > 00:02:15 v #1980 > > ── [ 668.81ms - stdout ] ─────────────────────────────────────────────────────── 00:02:15 v #1981 > > │ .fsx output: 00:02:15 v #1982 > > │ __assert_eq / actual: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', 00:02:15 v #1983 > > UH0_0))) / expected: UH0_1 ('a', UH0_1 ('b', UH0_1 ('c', UH0_0))) 00:02:15 v #1984 > > │ 00:02:15 v #1985 > > 00:02:15 v #1986 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:15 v #1987 > > │ ### is_empty 00:02:15 v #1988 > > 00:02:15 v #1989 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #1990 > > inl is_empty (input : string) : bool = 00:02:15 v #1991 > > length input = 0i32 00:02:15 v #1992 > > 00:02:15 v #1993 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:15 v #1994 > > │ ### slice 00:02:15 v #1995 > > 00:02:15 v #1996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #1997 > > inl slice forall t {number; int}. (from : t) (to : t) s : string = 00:02:15 v #1998 > > backend_switch { 00:02:15 v #1999 > > Fsharp = fun () => sm.slice s { from to } : string 00:02:15 v #2000 > > Python = fun () => sm.slice s { from to = if var_is s || var_is to then 00:02:15 v #2001 > > to + 1 else to } : string 00:02:15 v #2002 > > } 00:02:15 v #2003 > > 00:02:15 v #2004 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:15 v #2005 > > //// test 00:02:15 v #2006 > > ///! fsharp 00:02:15 v #2007 > > ///! cuda 00:02:15 v #2008 > > 00:02:15 v #2009 > > "abcdef" 00:02:15 v #2010 > > |> slice 1i32 3i32 00:02:15 v #2011 > > |> _assert_eq "bcd" 00:02:15 v #2012 > > 00:02:15 v #2013 > > (join "abcde") 00:02:15 v #2014 > > |> slice 1i32 3i32 00:02:15 v #2015 > > |> _assert_eq "bcd" 00:02:15 v #2016 > > 00:02:15 v #2017 > > "abcde" 00:02:15 v #2018 > > |> slice 1i32 (join 3i32) 00:02:15 v #2019 > > |> _assert_eq "bcd" 00:02:15 v #2020 > > 00:02:15 v #2021 > > (join "abcde") 00:02:15 v #2022 > > |> slice 1i32 (join 3i32) 00:02:15 v #2023 > > |> _assert_eq "bcd" 00:02:16 v #2024 > > 00:02:16 v #2025 > > ── [ 593.92ms - return value ] ───────────────────────────────────────────────── 00:02:16 v #2026 > > │ 00:02:16 v #2027 > > │ .py output (Cuda): 00:02:16 v #2028 > > │ __assert_eq / actual: bcd / expected: bcd 00:02:16 v #2029 > > │ __assert_eq / actual: bcd / expected: bcd 00:02:16 v #2030 > > │ __assert_eq / actual: bcd / expected: bcd 00:02:16 v #2031 > > │ __assert_eq / actual: bcd / expected: bcd 00:02:16 v #2032 > > │ 00:02:16 v #2033 > > │ 00:02:16 v #2034 > > 00:02:16 v #2035 > > ── [ 594.51ms - stdout ] ─────────────────────────────────────────────────────── 00:02:16 v #2036 > > │ .fsx output: 00:02:16 v #2037 > > │ __assert_eq / actual: "bcd" / expected: "bcd" 00:02:16 v #2038 > > │ __assert_eq / actual: "bcd" / expected: "bcd" 00:02:16 v #2039 > > │ __assert_eq / actual: "bcd" / expected: "bcd" 00:02:16 v #2040 > > │ __assert_eq / actual: "bcd" / expected: "bcd" 00:02:16 v #2041 > > │ 00:02:16 v #2042 > > 00:02:16 v #2043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:16 v #2044 > > │ ### format_debug 00:02:16 v #2045 > > 00:02:16 v #2046 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:16 v #2047 > > //// real 00:02:16 v #2048 > > 00:02:16 v #2049 > > inl format_debug forall t. (x : t) : string = 00:02:16 v #2050 > > backend_switch `string `({}) { 00:02:16 v #2051 > > Fsharp = (fun () => $'$"%A{!x}"' : string) : () -> string 00:02:16 v #2052 > > Python = (fun () => $'f"{!x}"' : string) : () -> string 00:02:16 v #2053 > > } 00:02:16 v #2054 > > 00:02:16 v #2055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:16 v #2056 > > inl format_debug forall t. (x : t) : string = 00:02:16 v #2057 > > real format_debug `t x 00:02:16 v #2058 > > 00:02:16 v #2059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:16 v #2060 > > //// test 00:02:16 v #2061 > > ///! fsharp 00:02:16 v #2062 > > ///! cuda 00:02:16 v #2063 > > 00:02:16 v #2064 > > { c = "1"; a = "2"; b = "3" } 00:02:16 v #2065 > > |> format_debug 00:02:16 v #2066 > > |> _assert_eq ( 00:02:16 v #2067 > > backend_switch { 00:02:16 v #2068 > > Fsharp = fun () => "struct (\"1\", \"2\", \"3\")" : string 00:02:16 v #2069 > > Python = fun () => "('1', '2', '3')" : string 00:02:16 v #2070 > > } 00:02:16 v #2071 > > ) 00:02:17 v #2072 > > 00:02:17 v #2073 > > ── [ 587.61ms - return value ] ───────────────────────────────────────────────── 00:02:17 v #2074 > > │ .py output (Cuda): 00:02:17 v #2075 > > │ __assert_eq / actual: ('1', '2', '3') / expected: ('1', '2', 00:02:17 v #2076 > > '3') 00:02:17 v #2077 > > │ 00:02:17 v #2078 > > │ 00:02:17 v #2079 > > 00:02:17 v #2080 > > ── [ 588.24ms - stdout ] ─────────────────────────────────────────────────────── 00:02:17 v #2081 > > │ .fsx output: 00:02:17 v #2082 > > │ __assert_eq / actual: "struct ("1", "2", "3")" / expected: 00:02:17 v #2083 > > "struct ("1", "2", "3")" 00:02:17 v #2084 > > │ 00:02:17 v #2085 > > 00:02:17 v #2086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 v #2087 > > │ ### format_pretty 00:02:17 v #2088 > > 00:02:17 v #2089 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #2090 > > //// real 00:02:17 v #2091 > > 00:02:17 v #2092 > > inl format_pretty forall t. (x : t) : string = 00:02:17 v #2093 > > run_target_args `string `t (fun () => x) function 00:02:17 v #2094 > > | Rust _ => fun x => 00:02:17 v #2095 > > open rust 00:02:17 v #2096 > > inl result = rust.emit_expr `t `std_string x 00:02:17 v #2097 > > ($'"format\!(\\\"{:#?}\\\", $0)"' : string) 00:02:17 v #2098 > > from_std_string result 00:02:17 v #2099 > > | _ => fun _ => format_debug `t x 00:02:17 v #2100 > > 00:02:17 v #2101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #2102 > > inl format_pretty forall t. (x : t) : string = 00:02:17 v #2103 > > real sm'_real.format_pretty `t x 00:02:17 v #2104 > > 00:02:17 v #2105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 v #2106 > > │ ### prim 00:02:17 v #2107 > > 00:02:17 v #2108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #2109 > > inl prim x = real 00:02:17 v #2110 > > match x with 00:02:17 v #2111 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => "%d", x 00:02:17 v #2112 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => "%u", x 00:02:17 v #2113 > > | (x : f32) | (x : f64) => "%f", x 00:02:17 v #2114 > > | (x : string) => "%s", x 00:02:17 v #2115 > > | (x : char) => "%c", x 00:02:17 v #2116 > > 00:02:17 v #2117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:17 v #2118 > > │ ### printable 00:02:17 v #2119 > > 00:02:17 v #2120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:17 v #2121 > > //// real 00:02:17 v #2122 > > 00:02:17 v #2123 > > prototype printable t : t -> () 00:02:18 v #2124 > > 00:02:18 v #2125 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:18 v #2126 > > │ ### format_real 00:02:18 v #2127 > > 00:02:18 v #2128 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #2129 > > //// real 00:02:18 v #2130 > > 00:02:18 v #2131 > > let format_real forall t. (x : t) : string = 00:02:18 v #2132 > > inl result = mut `string (join "") 00:02:18 v #2133 > > inl rec write x = 00:02:18 v #2134 > > inl p ((a : string), b) = 00:02:18 v #2135 > > inl s : string = 00:02:18 v #2136 > > backend_switch `string `({}) { 00:02:18 v #2137 > > Fsharp = 00:02:18 v #2138 > > (fun () => 00:02:18 v #2139 > > match b with 00:02:18 v #2140 > > | (_ : f32) | (_ : f64) => $'$"%+.6f{!b}"' : string 00:02:18 v #2141 > > | _ => $'$"{!b}"' : string 00:02:18 v #2142 > > ) : () -> string 00:02:18 v #2143 > > Python = 00:02:18 v #2144 > > (fun () => 00:02:18 v #2145 > > match b with 00:02:18 v #2146 > > | (_ : f32) | (_ : f64) => $'"{:.6f}".format(!b)' : 00:02:18 v #2147 > > string 00:02:18 v #2148 > > | _ => $'f"{!b}"' : string 00:02:18 v #2149 > > ) : () -> string 00:02:18 v #2150 > > } 00:02:18 v #2151 > > exec_unit ((fun () => result <- (+.) `string ((~*) `string result) 00:02:18 v #2152 > > s) : () -> ()) 00:02:18 v #2153 > > 00:02:18 v #2154 > > match x with // According to Bing it shouldn't matter whether these are 00:02:18 v #2155 > > %d or %lld in printf. 00:02:18 v #2156 > > | () => () 00:02:18 v #2157 > > | (x : i8) | (x : i16) | (x : i32) | (x : i64) => p ("%d", x) 00:02:18 v #2158 > > | (x : u8) | (x : u16) | (x : u32) | (x : u64) => p ("%u", x) 00:02:18 v #2159 > > | (x : f32) | (x : f64) => p ("%f", x) 00:02:18 v #2160 > > | (x : string) => p ("%s", x) 00:02:18 v #2161 > > | (x : char) => p ("%c", x) 00:02:18 v #2162 > > | (x : bool) => p ("%s", if x then "true" else "false") 00:02:18 v #2163 > > | (a,b) => write a . write ", " . write b 00:02:18 v #2164 > > | {} as x => 00:02:18 v #2165 > > write "{ " 00:02:18 v #2166 > > inl _result = 00:02:18 v #2167 > > real_core.record_fold 00:02:18 v #2168 > > fun { state = separator key value } => 00:02:18 v #2169 > > write separator 00:02:18 v #2170 > > write (symbol_to_string `(`key)) . write " = " . write 00:02:18 v #2171 > > value 00:02:18 v #2172 > > "; " 00:02:18 v #2173 > > () x 00:02:18 v #2174 > > write " }" 00:02:18 v #2175 > > | x when real_core.symbol_is x => write (symbol_to_string `(`x)) 00:02:18 v #2176 > > | x when real_core.function_is x => write (x ()) 00:02:18 v #2177 > > | x when real_core.union_is x => 00:02:18 v #2178 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:02:18 v #2179 > > else 00:02:18 v #2180 > > write (format_debug `(`x) x) 00:02:18 v #2181 > > // real_core.unbox x (fun (k, v) => 00:02:18 v #2182 > > // write k 00:02:18 v #2183 > > // match v with 00:02:18 v #2184 > > // | () => () 00:02:18 v #2185 > > // | _ => write "(" . write v . write ")" 00:02:18 v #2186 > > // ) 00:02:18 v #2187 > > | x when real_core.nominal_is x => 00:02:18 v #2188 > > if real_core.prototype_has `(`x) printable then printable `(`x) x 00:02:18 v #2189 > > // elif layout_is x then write *x // TODO: Deal with all the layout 00:02:18 v #2190 > > type cases. 00:02:18 v #2191 > > else write (format_pretty `(`x) x) 00:02:18 v #2192 > > | x => write (format_debug `(`x) x) 00:02:18 v #2193 > > write x 00:02:18 v #2194 > > (~*) `string result 00:02:18 v #2195 > > 00:02:18 v #2196 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:18 v #2197 > > │ ### format 00:02:18 v #2198 > > 00:02:18 v #2199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #2200 > > inl format forall t. (x : t) : string = 00:02:18 v #2201 > > real format_real `t x 00:02:18 v #2202 > > 00:02:18 v #2203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #2204 > > //// test 00:02:18 v #2205 > > ///! fsharp 00:02:18 v #2206 > > ////! cuda 00:02:18 v #2207 > > ////! rust 00:02:18 v #2208 > > ////! typescript 00:02:18 v #2209 > > ////! python 00:02:18 v #2210 > > 00:02:18 v #2211 > > ("1", "2", [["3"; "4"]], { b = "5"; c = "6"; a = fun () => "7" }) 00:02:18 v #2212 > > |> format 00:02:18 v #2213 > > |> _assert_eq "1, 2, UH0_1 (\"3\", UH0_1 (\"4\", UH0_0)), { b = 5; c = 6; a = 7 00:02:18 v #2214 > > }" 00:02:18 v #2215 > > 00:02:18 v #2216 > > ── [ 292.05ms - stdout ] ─────────────────────────────────────────────────────── 00:02:18 v #2217 > > │ __assert_eq / actual: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), 00:02:18 v #2218 > > { b = 5; c = 6; a = 7 }" / expected: "1, 2, UH0_1 ("3", UH0_1 ("4", UH0_0)), { b 00:02:18 v #2219 > > = 5; c = 6; a = 7 }" 00:02:18 v #2220 > > │ 00:02:18 v #2221 > > 00:02:18 v #2222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:18 v #2223 > > │ ### concat_array 00:02:18 v #2224 > > 00:02:18 v #2225 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #2226 > > inl concat_array (separator : string) (input : a int string) = 00:02:18 v #2227 > > (input, { acc = ""; sep = "" }) 00:02:18 v #2228 > > ||> am.foldBack fun (x : string) { acc sep } => 00:02:18 v #2229 > > { acc = $'!x + !sep + !acc + ""' : string; sep = separator } 00:02:18 v #2230 > > |> fun { acc } => acc 00:02:18 v #2231 > > 00:02:18 v #2232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:18 v #2233 > > //// test 00:02:18 v #2234 > > ///! fsharp 00:02:18 v #2235 > > ////! cuda // AttributeError: 'str' object has no attribute 'item' 00:02:18 v #2236 > > ///! rust 00:02:18 v #2237 > > ///! typescript 00:02:18 v #2238 > > ///! python 00:02:18 v #2239 > > //// print_code 00:02:18 v #2240 > > 00:02:18 v #2241 > > ;[[ 00:02:18 v #2242 > > "1" 00:02:18 v #2243 > > "2" 00:02:18 v #2244 > > "3" 00:02:18 v #2245 > > ]] 00:02:18 v #2246 > > |> fun x => 00:02:18 v #2247 > > inl code = (a x : _ int _) |> concat_array "\n" 00:02:18 v #2248 > > code 00:02:18 v #2249 > > |> _assert_eq "1\n2\n3" 00:02:31 v #2250 > > 00:02:31 v #2251 > > ── [ 12.21s - return value ] ─────────────────────────────────────────────────── 00:02:31 v #2252 > > │ 00:02:31 v #2253 > > │ .rs output: 00:02:31 v #2254 > > │ __assert_eq / actual: "1 00:02:31 v #2255 > > │ 2 00:02:31 v #2256 > > │ 3" / expected: "1 00:02:31 v #2257 > > │ 2 00:02:31 v #2258 > > │ 3" 00:02:31 v #2259 > > │ 00:02:31 v #2260 > > │ 00:02:31 v #2261 > > │ .ts output: 00:02:31 v #2262 > > │ __assert_eq / actual: 1 00:02:31 v #2263 > > │ 2 00:02:31 v #2264 > > │ 3 / expected: 1 00:02:31 v #2265 > > │ 2 00:02:31 v #2266 > > │ 3 00:02:31 v #2267 > > │ 00:02:31 v #2268 > > │ 00:02:31 v #2269 > > │ .py output: 00:02:31 v #2270 > > │ __assert_eq / actual: 1 00:02:31 v #2271 > > │ 2 00:02:31 v #2272 > > │ 3 / expected: 1 00:02:31 v #2273 > > │ 2 00:02:31 v #2274 > > │ 3 00:02:31 v #2275 > > │ 00:02:31 v #2276 > > │ 00:02:31 v #2277 > > │ 00:02:31 v #2278 > > │ 00:02:31 v #2279 > > │ 00:02:31 v #2280 > > 00:02:31 v #2281 > > ── [ 12.21s - stdout ] ───────────────────────────────────────────────────────── 00:02:31 v #2282 > > │ .fsx: 00:02:31 v #2283 > > │ type Mut0 = {mutable l0 : int32; mutable l1 : string; mutable 00:02:31 v #2284 > > l2 : string} 00:02:31 v #2285 > > │ let rec method1 (v0 : int32, v1 : Mut0) : bool = 00:02:31 v #2286 > > │ let v2 : int32 = v1.l0 00:02:31 v #2287 > > │ let v3 : bool = v2 < v0 00:02:31 v #2288 > > │ v3 00:02:31 v #2289 > > │ and method2 (v0 : bool) : bool = 00:02:31 v #2290 > > │ v0 00:02:31 v #2291 > > │ and closure0 (v0 : string) () : unit = 00:02:31 v #2292 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:02:31 v #2293 > > │ v1 v0 00:02:31 v #2294 > > │ and method0 () : unit = 00:02:31 v #2295 > > │ let v0 : string = "1" 00:02:31 v #2296 > > │ let v1 : string = "2" 00:02:31 v #2297 > > │ let v2 : string = "3" 00:02:31 v #2298 > > │ let v3 : (string []) = [|v0; v1; v2|] 00:02:31 v #2299 > > │ let v4 : int32 = v3.Length 00:02:31 v #2300 > > │ let v5 : string = "" 00:02:31 v #2301 > > │ let v6 : Mut0 = {l0 = 0; l1 = v5; l2 = v5} : Mut0 00:02:31 v #2302 > > │ while method1(v4, v6) do 00:02:31 v #2303 > > │ let v8 : int32 = v6.l0 00:02:31 v #2304 > > │ let v9 : int32 = -v8 00:02:31 v #2305 > > │ let v10 : int32 = v9 + v4 00:02:31 v #2306 > > │ let v11 : int32 = v10 - 1 00:02:31 v #2307 > > │ let struct (v12 : string, v13 : string) = v6.l1, 00:02:31 v #2308 > > v6.l2 00:02:31 v #2309 > > │ let v14 : string = v3.[int v11] 00:02:31 v #2310 > > │ let v15 : string = v14 + v13 + v12 + "" 00:02:31 v #2311 > > │ let v16 : int32 = v8 + 1 00:02:31 v #2312 > > │ let v17 : string = "\n" 00:02:31 v #2313 > > │ v6.l0 <- v16 00:02:31 v #2314 > > │ v6.l1 <- v15 00:02:31 v #2315 > > │ v6.l2 <- v17 00:02:31 v #2316 > > │ () 00:02:31 v #2317 > > │ let struct (v18 : string, v19 : string) = v6.l1, v6.l2 00:02:31 v #2318 > > │ let v20 : bool = v18 = "1\n2\n3" 00:02:31 v #2319 > > │ let v22 : bool = 00:02:31 v #2320 > > │ if v20 then 00:02:31 v #2321 > > │ true 00:02:31 v #2322 > > │ else 00:02:31 v #2323 > > │ method2(v20) 00:02:31 v #2324 > > │ let v23 : string = "__assert_eq" 00:02:31 v #2325 > > │ let v24 : string = "1\n2\n3" 00:02:31 v #2326 > > │ let v25 : string = $"{v23} / actual: %A{v18} / expected: 00:02:31 v #2327 > > %A{v24}" 00:02:31 v #2328 > > │ let v28 : unit = () 00:02:31 v #2329 > > │ let v29 : (unit -> unit) = closure0(v25) 00:02:31 v #2330 > > │ let v30 : unit = (fun () -> v29 (); v28) () 00:02:31 v #2331 > > │ let v32 : bool = v22 = false 00:02:31 v #2332 > > │ if v32 then 00:02:31 v #2333 > > │ failwith<unit> v25 00:02:31 v #2334 > > │ method0() 00:02:31 v #2335 > > │ 00:02:31 v #2336 > > │ 00:02:31 v #2337 > > │ .rs: 00:02:31 v #2338 > > │ #![allow(dead_code)] 00:02:31 v #2339 > > │ #![allow(non_camel_case_types)] 00:02:31 v #2340 > > │ #![allow(non_snake_case)] 00:02:31 v #2341 > > │ #![allow(non_upper_case_globals)] 00:02:31 v #2342 > > │ #![allow(unreachable_code)] 00:02:31 v #2343 > > │ #![allow(unused_attributes)] 00:02:31 v #2344 > > │ #![allow(unused_imports)] 00:02:31 v #2345 > > │ #![allow(unused_macros)] 00:02:31 v #2346 > > │ #![allow(unused_parens)] 00:02:31 v #2347 > > │ #![allow(unused_variables)] 00:02:31 v #2348 > > │ #![allow(unused_assignments)] 00:02:31 v #2349 > > │ mod module_6ff740fe { 00:02:31 v #2350 > > │ pub mod Spiral { 00:02:31 v #2351 > > │ use super::*; 00:02:31 v #2352 > > │ use fable_library_rust::NativeArray_::get_Count; 00:02:31 v #2353 > > │ use fable_library_rust::NativeArray_::new_array; 00:02:31 v #2354 > > │ use fable_library_rust::NativeArray_::Array; 00:02:31 v #2355 > > │ use fable_library_rust::Native_::on_startup; 00:02:31 v #2356 > > │ use fable_library_rust::Native_::LrcPtr; 00:02:31 v #2357 > > │ use fable_library_rust::Native_::MutCell; 00:02:31 v #2358 > > │ use fable_library_rust::String_::append; 00:02:31 v #2359 > > │ use fable_library_rust::String_::printfn; 00:02:31 v #2360 > > │ use fable_library_rust::String_::sprintf; 00:02:31 v #2361 > > │ use fable_library_rust::String_::string; 00:02:31 v #2362 > > │ #[derive(Clone, Debug, Hash, PartialEq, PartialOrd)] 00:02:31 v #2363 > > │ pub struct Mut0 { 00:02:31 v #2364 > > │ pub l0: MutCell<i32>, 00:02:31 v #2365 > > │ pub l1: MutCell<string>, 00:02:31 v #2366 > > │ pub l2: MutCell<string>, 00:02:31 v #2367 > > │ } 00:02:31 v #2368 > > │ impl core::fmt::Display for Mut0 { 00:02:31 v #2369 > > │ fn fmt(&self, f: &mut core::fmt::Formatter) -> 00:02:31 v #2370 > > core::fmt::Result { 00:02:31 v #2371 > > │ write!(f, "{}", 00:02:31 v #2372 > > core::any::type_name::<Self>()) 00:02:31 v #2373 > > │ } 00:02:31 v #2374 > > │ } 00:02:31 v #2375 > > │ pub fn method1(v0: i32, v1: LrcPtr<Spiral::Mut0>) -> 00:02:31 v #2376 > > bool { 00:02:31 v #2377 > > │ (v1.l0.get().clone()) < (v0) 00:02:31 v #2378 > > │ } 00:02:31 v #2379 > > │ pub fn method2(v0: bool) -> bool { 00:02:31 v #2380 > > │ v0 00:02:31 v #2381 > > │ } 00:02:31 v #2382 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:02:31 v #2383 > > │ printfn!("{0}", v0); 00:02:31 v #2384 > > │ } 00:02:31 v #2385 > > │ pub fn method0() { 00:02:31 v #2386 > > │ let v3: Array<string> = new_array(&[string("1"), 00:02:31 v #2387 > > string("2"), string("3")]); 00:02:31 v #2388 > > │ let v4: i32 = get_Count(v3.clone()); 00:02:31 v #2389 > > │ let v6: LrcPtr<Spiral::Mut0> = 00:02:31 v #2390 > > LrcPtr::new(Spiral::Mut0 { 00:02:31 v #2391 > > │ l0: MutCell::new(0_i32), 00:02:31 v #2392 > > │ l1: MutCell::new(string("")), 00:02:31 v #2393 > > │ l2: MutCell::new(string("")), 00:02:31 v #2394 > > │ }); 00:02:31 v #2395 > > │ while Spiral::method1(v4, v6.clone()) { 00:02:31 v #2396 > > │ let v8: i32 = v6.l0.get().clone(); 00:02:31 v #2397 > > │ let v11: i32 = ((v8.wrapping_neg()) + (v4)) - 00:02:31 v #2398 > > 1_i32; 00:02:31 v #2399 > > │ let matchValue: string = v6.l1.get().clone(); 00:02:31 v #2400 > > │ let matchValue_1: string = 00:02:31 v #2401 > > v6.l2.get().clone(); 00:02:31 v #2402 > > │ let v15: string = append( 00:02:31 v #2403 > > │ (append((append((v3[v11].clone()), 00:02:31 v #2404 > > (matchValue_1))), (matchValue))), 00:02:31 v #2405 > > │ string(""), 00:02:31 v #2406 > > │ ); 00:02:31 v #2407 > > │ let v16: i32 = (v8) + 1_i32; 00:02:31 v #2408 > > │ v6.l0.set(v16); 00:02:31 v #2409 > > │ v6.l1.set(v15); 00:02:31 v #2410 > > │ v6.l2.set(string("\n")); 00:02:31 v #2411 > > │ () 00:02:31 v #2412 > > │ } 00:02:31 v #2413 > > │ { 00:02:31 v #2414 > > │ let matchValue_2: string = 00:02:31 v #2415 > > v6.l1.get().clone(); 00:02:31 v #2416 > > │ let matchValue_3: string = 00:02:31 v #2417 > > v6.l2.get().clone(); 00:02:31 v #2418 > > │ let v18: string = matchValue_2; 00:02:31 v #2419 > > │ let v20: bool = (v18.clone()) == 00:02:31 v #2420 > > string("1\n2\n3"); 00:02:31 v #2421 > > │ let v22: bool = if v20 { true } else { 00:02:31 v #2422 > > Spiral::method2(v20) }; 00:02:31 v #2423 > > │ let v25: string = sprintf!( 00:02:31 v #2424 > > │ "{} / actual: {:?} / expected: {:?}", 00:02:31 v #2425 > > │ string("__assert_eq"), 00:02:31 v #2426 > > │ v18, 00:02:31 v #2427 > > │ string("1\n2\n3") 00:02:31 v #2428 > > │ ); 00:02:31 v #2429 > > │ let v30: () = { 00:02:31 v #2430 > > │ Spiral::closure0(v25.clone(), ()); 00:02:31 v #2431 > > │ () 00:02:31 v #2432 > > │ }; 00:02:31 v #2433 > > │ if (v22) == false { 00:02:31 v #2434 > > │ panic!("{}", v25,); 00:02:31 v #2435 > > │ } 00:02:31 v #2436 > > │ } 00:02:31 v #2437 > > │ } 00:02:31 v #2438 > > │ // on_startup!(Spiral::method0()); 00:02:31 v #2439 > > │ } 00:02:31 v #2440 > > │ } 00:02:31 v #2441 > > │ pub use module_6ff740fe::*; 00:02:31 v #2442 > > │ 00:02:31 v #2443 > > │ 00:02:31 v #2444 > > │ 00:02:31 v #2445 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:02:31 v #2446 > > │ 00:02:31 v #2447 > > │ .ts: 00:02:31 v #2448 > > │ import { Record } from 00:02:31 v #2449 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Types.js"; 00:02:31 v #2450 > > │ import { op_UnaryNegation_Int32, int32 } from 00:02:31 v #2451 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; 00:02:31 v #2452 > > │ import { IComparable, IEquatable } from 00:02:31 v #2453 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Util.js"; 00:02:31 v #2454 > > │ import { record_type, string_type, int32_type, TypeInfo } 00:02:31 v #2455 > > from "./fable_modules/fable-library-ts.5.0.0-alpha.2/Reflection.js"; 00:02:31 v #2456 > > │ import { item } from 00:02:31 v #2457 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Array.js"; 00:02:31 v #2458 > > │ import { interpolate, toText } from 00:02:31 v #2459 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:02:31 v #2460 > > │ 00:02:31 v #2461 > > │ export class Mut0 extends Record implements IEquatable<Mut0>, 00:02:31 v #2462 > > IComparable<Mut0> { 00:02:31 v #2463 > > │ l0: int32; 00:02:31 v #2464 > > │ l1: string; 00:02:31 v #2465 > > │ l2: string; 00:02:31 v #2466 > > │ constructor(l0: int32, l1: string, l2: string) { 00:02:31 v #2467 > > │ super(); 00:02:31 v #2468 > > │ this.l0 = (l0 | 0); 00:02:31 v #2469 > > │ this.l1 = l1; 00:02:31 v #2470 > > │ this.l2 = l2; 00:02:31 v #2471 > > │ } 00:02:31 v #2472 > > │ } 00:02:31 v #2473 > > │ 00:02:31 v #2474 > > │ export function Mut0_$reflection(): TypeInfo { 00:02:31 v #2475 > > │ return record_type("Spiral.Mut0", [], Mut0, () => [["l0", 00:02:31 v #2476 > > int32_type], ["l1", string_type], ["l2", string_type]]); 00:02:31 v #2477 > > │ } 00:02:31 v #2478 > > │ 00:02:31 v #2479 > > │ export function method1(v0: int32, v1: Mut0): boolean { 00:02:31 v #2480 > > │ return v1.l0 < v0; 00:02:31 v #2481 > > │ } 00:02:31 v #2482 > > │ 00:02:31 v #2483 > > │ export function method2(v0: boolean): boolean { 00:02:31 v #2484 > > │ return v0; 00:02:31 v #2485 > > │ } 00:02:31 v #2486 > > │ 00:02:31 v #2487 > > │ export function closure0(v0: string, unitVar: void): void { 00:02:31 v #2488 > > │ console.log(v0); 00:02:31 v #2489 > > │ } 00:02:31 v #2490 > > │ 00:02:31 v #2491 > > │ export function method0(): void { 00:02:31 v #2492 > > │ const v3: string[] = ["1", "2", "3"]; 00:02:31 v #2493 > > │ const v4: int32 = v3.length | 0; 00:02:31 v #2494 > > │ const v6: Mut0 = new Mut0(0, "", ""); 00:02:31 v #2495 > > │ while (method1(v4, v6)) { 00:02:31 v #2496 > > │ const v8: int32 = v6.l0 | 0; 00:02:31 v #2497 > > │ const v11: int32 = ((op_UnaryNegation_Int32(v8) + v4) 00:02:31 v #2498 > > - 1) | 0; 00:02:31 v #2499 > > │ const matchValue: string = v6.l1; 00:02:31 v #2500 > > │ const matchValue_1: string = v6.l2; 00:02:31 v #2501 > > │ const v15: string = ((item(v11, v3) + matchValue_1) + 00:02:31 v #2502 > > matchValue) + ""; 00:02:31 v #2503 > > │ const v16: int32 = (v8 + 1) | 0; 00:02:31 v #2504 > > │ v6.l0 = (v16 | 0); 00:02:31 v #2505 > > │ v6.l1 = v15; 00:02:31 v #2506 > > │ v6.l2 = "\n"; 00:02:31 v #2507 > > │ } 00:02:31 v #2508 > > │ const matchValue_2: string = v6.l1; 00:02:31 v #2509 > > │ const matchValue_3: string = v6.l2; 00:02:31 v #2510 > > │ const v18: string = matchValue_2; 00:02:31 v #2511 > > │ const v20: boolean = v18 === "1\n2\n3"; 00:02:31 v #2512 > > │ const v22: boolean = v20 ? true : method2(v20); 00:02:31 v #2513 > > │ const v25: string = toText(interpolate("%P() / actual: 00:02:31 v #2514 > > %A%P() / expected: %A%P()", ["__assert_eq", v18, "1\n2\n3"])); 00:02:31 v #2515 > > │ let v30: any; 00:02:31 v #2516 > > │ closure0(v25, undefined); 00:02:31 v #2517 > > │ v30 = undefined; 00:02:31 v #2518 > > │ if (v22 === false) { 00:02:31 v #2519 > > │ throw new Error(v25); 00:02:31 v #2520 > > │ } 00:02:31 v #2521 > > │ } 00:02:31 v #2522 > > │ 00:02:31 v #2523 > > │ method0(); 00:02:31 v #2524 > > │ 00:02:31 v #2525 > > │ 00:02:31 v #2526 > > │ .py: 00:02:31 v #2527 > > │ from __future__ import annotations 00:02:31 v #2528 > > │ from dataclasses import dataclass 00:02:31 v #2529 > > │ from fable_modules.fable_library.int32 import 00:02:31 v #2530 > > op_unary_negation_int32 00:02:31 v #2531 > > │ from fable_modules.fable_library.reflection import (TypeInfo, 00:02:31 v #2532 > > int32_type, string_type, record_type) 00:02:31 v #2533 > > │ from fable_modules.fable_library.string_ import (to_text, 00:02:31 v #2534 > > interpolate) 00:02:31 v #2535 > > │ from fable_modules.fable_library.types import (Record, Array) 00:02:31 v #2536 > > │ 00:02:31 v #2537 > > │ def _expr0() -> TypeInfo: 00:02:31 v #2538 > > │ return record_type("Spiral.Mut0", [], Mut0, lambda: 00:02:31 v #2539 > > [("l0", int32_type), ("l1", string_type), ("l2", string_type)]) 00:02:31 v #2540 > > │ 00:02:31 v #2541 > > │ 00:02:31 v #2542 > > │ @dataclass(eq = False, repr = False, slots = True) 00:02:31 v #2543 > > │ class Mut0(Record): 00:02:31 v #2544 > > │ l0: int 00:02:31 v #2545 > > │ l1: str 00:02:31 v #2546 > > │ l2: str 00:02:31 v #2547 > > │ 00:02:31 v #2548 > > │ Mut0_reflection = _expr0 00:02:31 v #2549 > > │ 00:02:31 v #2550 > > │ def method1(v0: int, v1: Mut0) -> bool: 00:02:31 v #2551 > > │ return v1.l0 < v0 00:02:31 v #2552 > > │ 00:02:31 v #2553 > > │ 00:02:31 v #2554 > > │ def method2(v0: bool) -> bool: 00:02:31 v #2555 > > │ return v0 00:02:31 v #2556 > > │ 00:02:31 v #2557 > > │ 00:02:31 v #2558 > > │ def closure0(v0: str, unit_var: None) -> None: 00:02:31 v #2559 > > │ print(v0) 00:02:31 v #2560 > > │ 00:02:31 v #2561 > > │ 00:02:31 v #2562 > > │ def method0(__unit: None=None) -> None: 00:02:31 v #2563 > > │ v3: Array[str] = ["1", "2", "3"] 00:02:31 v #2564 > > │ v4: int = len(v3) or 0 00:02:31 v #2565 > > │ v6: Mut0 = Mut0(0, "", "") 00:02:31 v #2566 > > │ while method1(v4, v6): 00:02:31 v #2567 > > │ v8: int = v6.l0 or 0 00:02:31 v #2568 > > │ v11: int = ((op_unary_negation_int32(v8) + v4) - 1) 00:02:31 v #2569 > > or 0 00:02:31 v #2570 > > │ match_value: str = v6.l1 00:02:31 v #2571 > > │ match_value_1: str = v6.l2 00:02:31 v #2572 > > │ v15: str = ((v3[v11] + match_value_1) + match_value) 00:02:31 v #2573 > > + "" 00:02:31 v #2574 > > │ v16: int = (v8 + 1) or 0 00:02:31 v #2575 > > │ v6.l0 = v16 or 0 00:02:31 v #2576 > > │ v6.l1 = v15 00:02:31 v #2577 > > │ v6.l2 = "\n" 00:02:31 v #2578 > > │ match_value_2: str = v6.l1 00:02:31 v #2579 > > │ match_value_3: str = v6.l2 00:02:31 v #2580 > > │ v18: str = match_value_2 00:02:31 v #2581 > > │ v20: bool = v18 == "1\n2\n3" 00:02:31 v #2582 > > │ v22: bool = True if v20 else method2(v20) 00:02:31 v #2583 > > │ v25: str = to_text(interpolate("%P() / actual: %A%P() 00:02:31 v #2584 > > expected: %A%P()", ["__assert_eq", v18, "1\n2\n3"])) 00:02:31 v #2585 > > │ v30: None 00:02:31 v #2586 > > │ closure0(v25, None) 00:02:31 v #2587 > > │ v30 = None 00:02:31 v #2588 > > │ if v22 == False: 00:02:31 v #2589 > > │ raise Exception(v25) 00:02:31 v #2590 > > │ 00:02:31 v #2591 > > │ 00:02:31 v #2592 > > │ 00:02:31 v #2593 > > │ method0() 00:02:31 v #2594 > > │ 00:02:31 v #2595 > > │ 00:02:31 v #2596 > > │ .fsx output: 00:02:31 v #2597 > > │ __assert_eq / actual: "1 00:02:31 v #2598 > > │ 2 00:02:31 v #2599 > > │ 3" / expected: "1 00:02:31 v #2600 > > │ 2 00:02:31 v #2601 > > │ 3" 00:02:31 v #2602 > > │ 00:02:31 v #2603 > > 00:02:31 v #2604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:31 v #2605 > > │ ### concat_list 00:02:31 v #2606 > > 00:02:31 v #2607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:31 v #2608 > > inl concat_list separator input = 00:02:31 v #2609 > > (input, { acc = ""; sep = "" }) 00:02:31 v #2610 > > ||> listm.foldBack fun (x : string) { acc sep } => 00:02:31 v #2611 > > { acc = $'!x + !sep + !acc + ""' : string; sep = separator } 00:02:31 v #2612 > > |> fun { acc } => acc 00:02:31 v #2613 > > 00:02:31 v #2614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:31 v #2615 > > //// test 00:02:31 v #2616 > > ///! fsharp 00:02:31 v #2617 > > ///! cuda 00:02:31 v #2618 > > ///! rust 00:02:31 v #2619 > > ///! typescript 00:02:31 v #2620 > > ///! python 00:02:31 v #2621 > > //// print_code 00:02:31 v #2622 > > 00:02:31 v #2623 > > [[ 00:02:31 v #2624 > > "1" 00:02:31 v #2625 > > "2" 00:02:31 v #2626 > > "3" 00:02:31 v #2627 > > ]] 00:02:31 v #2628 > > |> fun x => 00:02:31 v #2629 > > inl code = (x : _) |> concat_list "\n" 00:02:31 v #2630 > > code 00:02:31 v #2631 > > |> _assert_eq "1\n2\n3" 00:02:38 v #2632 > > 00:02:38 v #2633 > > ── [ 7.77s - return value ] ──────────────────────────────────────────────────── 00:02:38 v #2634 > > │ 00:02:38 v #2635 > > │ .py output (Cuda): 00:02:38 v #2636 > > │ __assert_eq / actual: 1 00:02:38 v #2637 > > │ 2 00:02:38 v #2638 > > │ 3 / expected: 1 00:02:38 v #2639 > > │ 2 00:02:38 v #2640 > > │ 3 00:02:38 v #2641 > > │ 00:02:38 v #2642 > > │ 00:02:38 v #2643 > > │ .rs output: 00:02:38 v #2644 > > │ __assert_eq / actual: "1 00:02:38 v #2645 > > │ 2 00:02:38 v #2646 > > │ 3" / expected: "1 00:02:38 v #2647 > > │ 2 00:02:38 v #2648 > > │ 3" 00:02:38 v #2649 > > │ 00:02:38 v #2650 > > │ 00:02:38 v #2651 > > │ .ts output: 00:02:38 v #2652 > > │ __assert_eq / actual: 1 00:02:38 v #2653 > > │ 2 00:02:38 v #2654 > > │ 3 / expected: 1 00:02:38 v #2655 > > │ 2 00:02:38 v #2656 > > │ 3 00:02:38 v #2657 > > │ 00:02:38 v #2658 > > │ 00:02:38 v #2659 > > │ .py output: 00:02:38 v #2660 > > │ __assert_eq / actual: 1 00:02:38 v #2661 > > │ 2 00:02:38 v #2662 > > │ 3 / expected: 1 00:02:38 v #2663 > > │ 2 00:02:38 v #2664 > > │ 3 00:02:38 v #2665 > > │ 00:02:38 v #2666 > > │ 00:02:38 v #2667 > > │ 00:02:38 v #2668 > > │ 00:02:38 v #2669 > > │ 00:02:38 v #2670 > > 00:02:38 v #2671 > > ── [ 7.77s - stdout ] ────────────────────────────────────────────────────────── 00:02:38 v #2672 > > │ .fsx: 00:02:38 v #2673 > > │ let rec method1 (v0 : bool) : bool = 00:02:38 v #2674 > > │ v0 00:02:38 v #2675 > > │ and closure0 (v0 : string) () : unit = 00:02:38 v #2676 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:02:38 v #2677 > > │ v1 v0 00:02:38 v #2678 > > │ and method0 () : unit = 00:02:38 v #2679 > > │ let v0 : string = "3" 00:02:38 v #2680 > > │ let v1 : string = "" 00:02:38 v #2681 > > │ let v2 : string = v0 + v1 + v1 + "" 00:02:38 v #2682 > > │ let v3 : string = "2" 00:02:38 v #2683 > > │ let v4 : string = "\n" 00:02:38 v #2684 > > │ let v5 : string = v3 + v4 + v2 + "" 00:02:38 v #2685 > > │ let v6 : string = "1" 00:02:38 v #2686 > > │ let v7 : string = v6 + v4 + v5 + "" 00:02:38 v #2687 > > │ let v8 : bool = v7 = "1\n2\n3" 00:02:38 v #2688 > > │ let v10 : bool = 00:02:38 v #2689 > > │ if v8 then 00:02:38 v #2690 > > │ true 00:02:38 v #2691 > > │ else 00:02:38 v #2692 > > │ method1(v8) 00:02:38 v #2693 > > │ let v11 : string = "__assert_eq" 00:02:38 v #2694 > > │ let v12 : string = "1\n2\n3" 00:02:38 v #2695 > > │ let v13 : string = $"{v11} / actual: %A{v7} / expected: 00:02:38 v #2696 > > %A{v12}" 00:02:38 v #2697 > > │ let v16 : unit = () 00:02:38 v #2698 > > │ let v17 : (unit -> unit) = closure0(v13) 00:02:38 v #2699 > > │ let v18 : unit = (fun () -> v17 (); v16) () 00:02:38 v #2700 > > │ let v20 : bool = v10 = false 00:02:38 v #2701 > > │ if v20 then 00:02:38 v #2702 > > │ failwith<unit> v13 00:02:38 v #2703 > > │ method0() 00:02:38 v #2704 > > │ 00:02:38 v #2705 > > │ 00:02:38 v #2706 > > │ .rs: 00:02:38 v #2707 > > │ #![allow(dead_code)] 00:02:38 v #2708 > > │ #![allow(non_camel_case_types)] 00:02:38 v #2709 > > │ #![allow(non_snake_case)] 00:02:38 v #2710 > > │ #![allow(non_upper_case_globals)] 00:02:38 v #2711 > > │ #![allow(unreachable_code)] 00:02:38 v #2712 > > │ #![allow(unused_attributes)] 00:02:38 v #2713 > > │ #![allow(unused_imports)] 00:02:38 v #2714 > > │ #![allow(unused_macros)] 00:02:38 v #2715 > > │ #![allow(unused_parens)] 00:02:38 v #2716 > > │ #![allow(unused_variables)] 00:02:38 v #2717 > > │ #![allow(unused_assignments)] 00:02:38 v #2718 > > │ mod module_6ff740fe { 00:02:38 v #2719 > > │ pub mod Spiral { 00:02:38 v #2720 > > │ use super::*; 00:02:38 v #2721 > > │ use fable_library_rust::Native_::on_startup; 00:02:38 v #2722 > > │ use fable_library_rust::String_::printfn; 00:02:38 v #2723 > > │ use fable_library_rust::String_::sprintf; 00:02:38 v #2724 > > │ use fable_library_rust::String_::string; 00:02:38 v #2725 > > │ pub fn method1(v0: bool) -> bool { 00:02:38 v #2726 > > │ v0 00:02:38 v #2727 > > │ } 00:02:38 v #2728 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:02:38 v #2729 > > │ printfn!("{0}", v0); 00:02:38 v #2730 > > │ } 00:02:38 v #2731 > > │ pub fn method0() { 00:02:38 v #2732 > > │ let v7: string = string("1\n2\n3"); 00:02:38 v #2733 > > │ let v8: bool = (v7.clone()) == string("1\n2\n3"); 00:02:38 v #2734 > > │ let v10: bool = if v8 { true } else { 00:02:38 v #2735 > > Spiral::method1(v8) }; 00:02:38 v #2736 > > │ let v13: string = sprintf!( 00:02:38 v #2737 > > │ "{} / actual: {:?} / expected: {:?}", 00:02:38 v #2738 > > │ string("__assert_eq"), 00:02:38 v #2739 > > │ v7, 00:02:38 v #2740 > > │ string("1\n2\n3") 00:02:38 v #2741 > > │ ); 00:02:38 v #2742 > > │ let v18: () = { 00:02:38 v #2743 > > │ Spiral::closure0(v13.clone(), ()); 00:02:38 v #2744 > > │ () 00:02:38 v #2745 > > │ }; 00:02:38 v #2746 > > │ if (v10) == false { 00:02:38 v #2747 > > │ panic!("{}", v13,); 00:02:38 v #2748 > > │ } 00:02:38 v #2749 > > │ } 00:02:38 v #2750 > > │ // on_startup!(Spiral::method0()); 00:02:38 v #2751 > > │ } 00:02:38 v #2752 > > │ } 00:02:38 v #2753 > > │ pub use module_6ff740fe::*; 00:02:38 v #2754 > > │ 00:02:38 v #2755 > > │ 00:02:38 v #2756 > > │ 00:02:38 v #2757 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:02:38 v #2758 > > │ 00:02:38 v #2759 > > │ .ts: 00:02:38 v #2760 > > │ import { interpolate, toText } from 00:02:38 v #2761 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:02:38 v #2762 > > │ 00:02:38 v #2763 > > │ export function method1(v0: boolean): boolean { 00:02:38 v #2764 > > │ return v0; 00:02:38 v #2765 > > │ } 00:02:38 v #2766 > > │ 00:02:38 v #2767 > > │ export function closure0(v0: string, unitVar: void): void { 00:02:38 v #2768 > > │ console.log(v0); 00:02:38 v #2769 > > │ } 00:02:38 v #2770 > > │ 00:02:38 v #2771 > > │ export function method0(): void { 00:02:38 v #2772 > > │ const v7 = "1\n2\n3"; 00:02:38 v #2773 > > │ const v8: boolean = v7 === "1\n2\n3"; 00:02:38 v #2774 > > │ const v10: boolean = v8 ? true : method1(v8); 00:02:38 v #2775 > > │ const v13: string = toText(interpolate("%P() / actual: 00:02:38 v #2776 > > %A%P() / expected: %A%P()", ["__assert_eq", v7, "1\n2\n3"])); 00:02:38 v #2777 > > │ let v18: any; 00:02:38 v #2778 > > │ closure0(v13, undefined); 00:02:38 v #2779 > > │ v18 = undefined; 00:02:38 v #2780 > > │ if (v10 === false) { 00:02:38 v #2781 > > │ throw new Error(v13); 00:02:38 v #2782 > > │ } 00:02:38 v #2783 > > │ } 00:02:38 v #2784 > > │ 00:02:38 v #2785 > > │ method0(); 00:02:38 v #2786 > > │ 00:02:38 v #2787 > > │ 00:02:38 v #2788 > > │ .py: 00:02:38 v #2789 > > │ from fable_modules.fable_library.string_ import (to_text, 00:02:38 v #2790 > > interpolate) 00:02:38 v #2791 > > │ 00:02:38 v #2792 > > │ def method1(v0: bool) -> bool: 00:02:38 v #2793 > > │ return v0 00:02:38 v #2794 > > │ 00:02:38 v #2795 > > │ 00:02:38 v #2796 > > │ def closure0(v0: str, unit_var: None) -> None: 00:02:38 v #2797 > > │ print(v0) 00:02:38 v #2798 > > │ 00:02:38 v #2799 > > │ 00:02:38 v #2800 > > │ def method0(__unit: None=None) -> None: 00:02:38 v #2801 > > │ v7: str = "1\n2\n3" 00:02:38 v #2802 > > │ v8: bool = v7 == "1\n2\n3" 00:02:38 v #2803 > > │ v10: bool = True if v8 else method1(v8) 00:02:38 v #2804 > > │ v13: str = to_text(interpolate("%P() / actual: %A%P() 00:02:38 v #2805 > > expected: %A%P()", ["__assert_eq", v7, "1\n2\n3"])) 00:02:38 v #2806 > > │ v18: None 00:02:38 v #2807 > > │ closure0(v13, None) 00:02:38 v #2808 > > │ v18 = None 00:02:38 v #2809 > > │ if v10 == False: 00:02:38 v #2810 > > │ raise Exception(v13) 00:02:38 v #2811 > > │ 00:02:38 v #2812 > > │ 00:02:38 v #2813 > > │ 00:02:38 v #2814 > > │ method0() 00:02:38 v #2815 > > │ 00:02:38 v #2816 > > │ 00:02:38 v #2817 > > │ .py (Cuda): 00:02:38 v #2818 > > │ kernel = r""" 00:02:38 v #2819 > > │ """ 00:02:38 v #2820 > > │ class static_array(): 00:02:38 v #2821 > > │ def __init__(self, length): 00:02:38 v #2822 > > │ self.ptr = [] 00:02:38 v #2823 > > │ for _ in range(length): 00:02:38 v #2824 > > │ self.ptr.append(None) 00:02:38 v #2825 > > │ 00:02:38 v #2826 > > │ def __getitem__(self, index): 00:02:38 v #2827 > > │ assert 0 <= index < len(self.ptr), "The get index 00:02:38 v #2828 > > needs to be in range." 00:02:38 v #2829 > > │ return self.ptr[index] 00:02:38 v #2830 > > │ 00:02:38 v #2831 > > │ def __setitem__(self, index, value): 00:02:38 v #2832 > > │ assert 0 <= index < len(self.ptr), "The set index 00:02:38 v #2833 > > needs to be in range." 00:02:38 v #2834 > > │ self.ptr[index] = value 00:02:38 v #2835 > > │ 00:02:38 v #2836 > > │ class static_array_list(static_array): 00:02:38 v #2837 > > │ def __init__(self, length): 00:02:38 v #2838 > > │ super().__init__(length) 00:02:38 v #2839 > > │ self.length = 0 00:02:38 v #2840 > > │ 00:02:38 v #2841 > > │ def __getitem__(self, index): 00:02:38 v #2842 > > │ assert 0 <= index < self.length, "The get index needs 00:02:38 v #2843 > > to be in range." 00:02:38 v #2844 > > │ return self.ptr[index] 00:02:38 v #2845 > > │ 00:02:38 v #2846 > > │ def __setitem__(self, index, value): 00:02:38 v #2847 > > │ assert 0 <= index < self.length, "The set index needs 00:02:38 v #2848 > > to be in range." 00:02:38 v #2849 > > │ self.ptr[index] = value 00:02:38 v #2850 > > │ 00:02:38 v #2851 > > │ def push(self,value): 00:02:38 v #2852 > > │ assert (self.length < len(self.ptr)), "The length 00:02:38 v #2853 > > before pushing has to be less than the maximum length of the array." 00:02:38 v #2854 > > │ self.ptr[self.length] = value 00:02:38 v #2855 > > │ self.length += 1 00:02:38 v #2856 > > │ 00:02:38 v #2857 > > │ def pop(self): 00:02:38 v #2858 > > │ assert (0 < self.length), "The length before popping 00:02:38 v #2859 > > has to be greater than 0." 00:02:38 v #2860 > > │ self.length -= 1 00:02:38 v #2861 > > │ return self.ptr[self.length] 00:02:38 v #2862 > > │ 00:02:38 v #2863 > > │ def unsafe_set_length(self,i): 00:02:38 v #2864 > > │ assert 0 <= i <= len(self.ptr), "The new length has 00:02:38 v #2865 > > to be in range." 00:02:38 v #2866 > > │ self.length = i 00:02:38 v #2867 > > │ 00:02:38 v #2868 > > │ class dynamic_array(static_array): 00:02:38 v #2869 > > │ pass 00:02:38 v #2870 > > │ 00:02:38 v #2871 > > │ class dynamic_array_list(static_array_list): 00:02:38 v #2872 > > │ def length_(self): return self.length 00:02:38 v #2873 > > │ 00:02:38 v #2874 > > │ import cupy as cp 00:02:38 v #2875 > > │ import numpy as np 00:02:38 v #2876 > > │ from dataclasses import dataclass 00:02:38 v #2877 > > │ from typing import NamedTuple, Union, Callable, Tuple 00:02:38 v #2878 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 00:02:38 v #2879 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str 00:02:38 v #2880 > > │ cuda = False 00:02:38 v #2881 > > │ 00:02:38 v #2882 > > │ def method1(v0 : bool) -> bool: 00:02:38 v #2883 > > │ return v0 00:02:38 v #2884 > > │ def method0() -> None: 00:02:38 v #2885 > > │ v0 = "3" 00:02:38 v #2886 > > │ v1 = "" 00:02:38 v #2887 > > │ v2 = v0 + v1 + v1 + "" 00:02:38 v #2888 > > │ del v0, v1 00:02:38 v #2889 > > │ v3 = "2" 00:02:38 v #2890 > > │ v4 = "\n" 00:02:38 v #2891 > > │ v5 = v3 + v4 + v2 + "" 00:02:38 v #2892 > > │ del v2, v3 00:02:38 v #2893 > > │ v6 = "1" 00:02:38 v #2894 > > │ v7 = v6 + v4 + v5 + "" 00:02:38 v #2895 > > │ del v4, v5, v6 00:02:38 v #2896 > > │ v8 = v7 == "1\n2\n3" 00:02:38 v #2897 > > │ if v8: 00:02:38 v #2898 > > │ v10 = True 00:02:38 v #2899 > > │ else: 00:02:38 v #2900 > > │ v10 = method1(v8) 00:02:38 v #2901 > > │ del v8 00:02:38 v #2902 > > │ v14 = "__assert_eq" 00:02:38 v #2903 > > │ v15 = "1\n2\n3" 00:02:38 v #2904 > > │ v16 = f"{v14} / actual: {v7} / expected: {v15}" 00:02:38 v #2905 > > │ del v7, v14, v15 00:02:38 v #2906 > > │ print(v16) 00:02:38 v #2907 > > │ v22 = v10 == False 00:02:38 v #2908 > > │ del v10 00:02:38 v #2909 > > │ if v22: 00:02:38 v #2910 > > │ del v22 00:02:38 v #2911 > > │ raise Exception(v16) 00:02:38 v #2912 > > │ else: 00:02:38 v #2913 > > │ del v16, v22 00:02:38 v #2914 > > │ return 00:02:38 v #2915 > > │ def main_body(): 00:02:38 v #2916 > > │ return method0() 00:02:38 v #2917 > > │ 00:02:38 v #2918 > > │ def main(): 00:02:38 v #2919 > > │ r = main_body() 00:02:38 v #2920 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # 00:02:38 v #2921 > > This line is here so the `__trap()` calls on the kernel aren't missed. 00:02:38 v #2922 > > │ return r 00:02:38 v #2923 > > │ 00:02:38 v #2924 > > │ if __name__ == '__main__': result = main(); None if result is 00:02:38 v #2925 > > None else print(result) 00:02:38 v #2926 > > │ 00:02:38 v #2927 > > │ .fsx output: 00:02:38 v #2928 > > │ __assert_eq / actual: "1 00:02:38 v #2929 > > │ 2 00:02:38 v #2930 > > │ 3" / expected: "1 00:02:38 v #2931 > > │ 2 00:02:38 v #2932 > > │ 3" 00:02:38 v #2933 > > │ 00:02:38 v #2934 > > 00:02:38 v #2935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:38 v #2936 > > │ ### concat_list_interpolation 00:02:38 v #2937 > > 00:02:38 v #2938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:38 v #2939 > > inl concat_list_interpolation separator input = 00:02:38 v #2940 > > (input, { acc = ""; sep = "" }) 00:02:38 v #2941 > > ||> listm.foldBack fun (x : string) { acc sep } => 00:02:38 v #2942 > > backend_switch { 00:02:38 v #2943 > > Fsharp = fun () => { acc = $'$"{!x}{!sep}{!acc}"' : string; sep = 00:02:38 v #2944 > > separator } 00:02:38 v #2945 > > Python = fun () => { acc = $'f"{!x}{!sep}{!acc}"' : string; sep = 00:02:38 v #2946 > > separator } 00:02:38 v #2947 > > } 00:02:38 v #2948 > > |> fun { acc } => acc 00:02:39 v #2949 > > 00:02:39 v #2950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:39 v #2951 > > //// test 00:02:39 v #2952 > > ///! fsharp 00:02:39 v #2953 > > ///! cuda 00:02:39 v #2954 > > ///! rust 00:02:39 v #2955 > > ///! typescript 00:02:39 v #2956 > > ///! python 00:02:39 v #2957 > > //// print_code 00:02:39 v #2958 > > 00:02:39 v #2959 > > [[ 00:02:39 v #2960 > > "1" 00:02:39 v #2961 > > "2" 00:02:39 v #2962 > > "3" 00:02:39 v #2963 > > ]] 00:02:39 v #2964 > > |> fun x => 00:02:39 v #2965 > > inl code = (x : _) |> concat_list_interpolation "\n" 00:02:39 v #2966 > > code 00:02:39 v #2967 > > |> _assert_eq "1\n2\n3" 00:02:47 v #2968 > > 00:02:47 v #2969 > > ── [ 7.97s - return value ] ──────────────────────────────────────────────────── 00:02:47 v #2970 > > │ 00:02:47 v #2971 > > │ .py output (Cuda): 00:02:47 v #2972 > > │ __assert_eq / actual: 1 00:02:47 v #2973 > > │ 2 00:02:47 v #2974 > > │ 3 / expected: 1 00:02:47 v #2975 > > │ 2 00:02:47 v #2976 > > │ 3 00:02:47 v #2977 > > │ 00:02:47 v #2978 > > │ 00:02:47 v #2979 > > │ .rs output: 00:02:47 v #2980 > > │ __assert_eq / actual: "1 00:02:47 v #2981 > > │ 2 00:02:47 v #2982 > > │ 3" / expected: "1 00:02:47 v #2983 > > │ 2 00:02:47 v #2984 > > │ 3" 00:02:47 v #2985 > > │ 00:02:47 v #2986 > > │ 00:02:47 v #2987 > > │ .ts output: 00:02:47 v #2988 > > │ __assert_eq / actual: 1 00:02:47 v #2989 > > │ 2 00:02:47 v #2990 > > │ 3 / expected: 1 00:02:47 v #2991 > > │ 2 00:02:47 v #2992 > > │ 3 00:02:47 v #2993 > > │ 00:02:47 v #2994 > > │ 00:02:47 v #2995 > > │ .py output: 00:02:47 v #2996 > > │ __assert_eq / actual: 1 00:02:47 v #2997 > > │ 2 00:02:47 v #2998 > > │ 3 / expected: 1 00:02:47 v #2999 > > │ 2 00:02:47 v #3000 > > │ 3 00:02:47 v #3001 > > │ 00:02:47 v #3002 > > │ 00:02:47 v #3003 > > │ 00:02:47 v #3004 > > │ 00:02:47 v #3005 > > │ 00:02:47 v #3006 > > 00:02:47 v #3007 > > ── [ 7.97s - stdout ] ────────────────────────────────────────────────────────── 00:02:47 v #3008 > > │ .fsx: 00:02:47 v #3009 > > │ let rec method1 (v0 : bool) : bool = 00:02:47 v #3010 > > │ v0 00:02:47 v #3011 > > │ and closure0 (v0 : string) () : unit = 00:02:47 v #3012 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:02:47 v #3013 > > │ v1 v0 00:02:47 v #3014 > > │ and method0 () : unit = 00:02:47 v #3015 > > │ let v0 : string = "3" 00:02:47 v #3016 > > │ let v1 : string = "" 00:02:47 v #3017 > > │ let v2 : string = $"{v0}{v1}{v1}" 00:02:47 v #3018 > > │ let v7 : string = "\n" 00:02:47 v #3019 > > │ let v8 : string = "2" 00:02:47 v #3020 > > │ let v9 : string = $"{v8}{v7}{v2}" 00:02:47 v #3021 > > │ let v13 : string = "1" 00:02:47 v #3022 > > │ let v14 : string = $"{v13}{v7}{v9}" 00:02:47 v #3023 > > │ let v18 : bool = v14 = "1\n2\n3" 00:02:47 v #3024 > > │ let v20 : bool = 00:02:47 v #3025 > > │ if v18 then 00:02:47 v #3026 > > │ true 00:02:47 v #3027 > > │ else 00:02:47 v #3028 > > │ method1(v18) 00:02:47 v #3029 > > │ let v21 : string = "__assert_eq" 00:02:47 v #3030 > > │ let v22 : string = "1\n2\n3" 00:02:47 v #3031 > > │ let v23 : string = $"{v21} / actual: %A{v14} / expected: 00:02:47 v #3032 > > %A{v22}" 00:02:47 v #3033 > > │ let v26 : unit = () 00:02:47 v #3034 > > │ let v27 : (unit -> unit) = closure0(v23) 00:02:47 v #3035 > > │ let v28 : unit = (fun () -> v27 (); v26) () 00:02:47 v #3036 > > │ let v30 : bool = v20 = false 00:02:47 v #3037 > > │ if v30 then 00:02:47 v #3038 > > │ failwith<unit> v23 00:02:47 v #3039 > > │ method0() 00:02:47 v #3040 > > │ 00:02:47 v #3041 > > │ 00:02:47 v #3042 > > │ .rs: 00:02:47 v #3043 > > │ #![allow(dead_code)] 00:02:47 v #3044 > > │ #![allow(non_camel_case_types)] 00:02:47 v #3045 > > │ #![allow(non_snake_case)] 00:02:47 v #3046 > > │ #![allow(non_upper_case_globals)] 00:02:47 v #3047 > > │ #![allow(unreachable_code)] 00:02:47 v #3048 > > │ #![allow(unused_attributes)] 00:02:47 v #3049 > > │ #![allow(unused_imports)] 00:02:47 v #3050 > > │ #![allow(unused_macros)] 00:02:47 v #3051 > > │ #![allow(unused_parens)] 00:02:47 v #3052 > > │ #![allow(unused_variables)] 00:02:47 v #3053 > > │ #![allow(unused_assignments)] 00:02:47 v #3054 > > │ mod module_6ff740fe { 00:02:47 v #3055 > > │ pub mod Spiral { 00:02:47 v #3056 > > │ use super::*; 00:02:47 v #3057 > > │ use fable_library_rust::NativeArray_::new_array; 00:02:47 v #3058 > > │ use fable_library_rust::Native_::on_startup; 00:02:47 v #3059 > > │ use fable_library_rust::String_::concat; 00:02:47 v #3060 > > │ use fable_library_rust::String_::printfn; 00:02:47 v #3061 > > │ use fable_library_rust::String_::sprintf; 00:02:47 v #3062 > > │ use fable_library_rust::String_::string; 00:02:47 v #3063 > > │ pub fn method1(v0: bool) -> bool { 00:02:47 v #3064 > > │ v0 00:02:47 v #3065 > > │ } 00:02:47 v #3066 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:02:47 v #3067 > > │ printfn!("{0}", v0); 00:02:47 v #3068 > > │ } 00:02:47 v #3069 > > │ pub fn method0() { 00:02:47 v #3070 > > │ let v14: string = concat(new_array(&[ 00:02:47 v #3071 > > │ string("1"), 00:02:47 v #3072 > > │ string("\n"), 00:02:47 v #3073 > > │ concat(new_array(&[ 00:02:47 v #3074 > > │ string("2"), 00:02:47 v #3075 > > │ string("\n"), 00:02:47 v #3076 > > │ concat(new_array(&[string("3"), 00:02:47 v #3077 > > string(""), string("")])), 00:02:47 v #3078 > > │ ])), 00:02:47 v #3079 > > │ ])); 00:02:47 v #3080 > > │ let v18: bool = (v14.clone()) == 00:02:47 v #3081 > > string("1\n2\n3"); 00:02:47 v #3082 > > │ let v20: bool = if v18 { true } else { 00:02:47 v #3083 > > Spiral::method1(v18) }; 00:02:47 v #3084 > > │ let v23: string = sprintf!( 00:02:47 v #3085 > > │ "{} / actual: {:?} / expected: {:?}", 00:02:47 v #3086 > > │ string("__assert_eq"), 00:02:47 v #3087 > > │ v14, 00:02:47 v #3088 > > │ string("1\n2\n3") 00:02:47 v #3089 > > │ ); 00:02:47 v #3090 > > │ let v28: () = { 00:02:47 v #3091 > > │ Spiral::closure0(v23.clone(), ()); 00:02:47 v #3092 > > │ () 00:02:47 v #3093 > > │ }; 00:02:47 v #3094 > > │ if (v20) == false { 00:02:47 v #3095 > > │ panic!("{}", v23,); 00:02:47 v #3096 > > │ } 00:02:47 v #3097 > > │ } 00:02:47 v #3098 > > │ // on_startup!(Spiral::method0()); 00:02:47 v #3099 > > │ } 00:02:47 v #3100 > > │ } 00:02:47 v #3101 > > │ pub use module_6ff740fe::*; 00:02:47 v #3102 > > │ 00:02:47 v #3103 > > │ 00:02:47 v #3104 > > │ 00:02:47 v #3105 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:02:47 v #3106 > > │ 00:02:47 v #3107 > > │ .ts: 00:02:47 v #3108 > > │ import { interpolate, toText, concat } from 00:02:47 v #3109 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:02:47 v #3110 > > │ 00:02:47 v #3111 > > │ export function method1(v0: boolean): boolean { 00:02:47 v #3112 > > │ return v0; 00:02:47 v #3113 > > │ } 00:02:47 v #3114 > > │ 00:02:47 v #3115 > > │ export function closure0(v0: string, unitVar: void): void { 00:02:47 v #3116 > > │ console.log(v0); 00:02:47 v #3117 > > │ } 00:02:47 v #3118 > > │ 00:02:47 v #3119 > > │ export function method0(): void { 00:02:47 v #3120 > > │ const v14: string = concat("1", "\n", ...concat("2", 00:02:47 v #3121 > > "\n", ...concat("3", "", ...""))); 00:02:47 v #3122 > > │ const v18: boolean = v14 === "1\n2\n3"; 00:02:47 v #3123 > > │ const v20: boolean = v18 ? true : method1(v18); 00:02:47 v #3124 > > │ const v23: string = toText(interpolate("%P() / actual: 00:02:47 v #3125 > > %A%P() / expected: %A%P()", ["__assert_eq", v14, "1\n2\n3"])); 00:02:47 v #3126 > > │ let v28: any; 00:02:47 v #3127 > > │ closure0(v23, undefined); 00:02:47 v #3128 > > │ v28 = undefined; 00:02:47 v #3129 > > │ if (v20 === false) { 00:02:47 v #3130 > > │ throw new Error(v23); 00:02:47 v #3131 > > │ } 00:02:47 v #3132 > > │ } 00:02:47 v #3133 > > │ 00:02:47 v #3134 > > │ method0(); 00:02:47 v #3135 > > │ 00:02:47 v #3136 > > │ 00:02:47 v #3137 > > │ .py: 00:02:47 v #3138 > > │ from fable_modules.fable_library.string_ import (concat, 00:02:47 v #3139 > > to_text, interpolate) 00:02:47 v #3140 > > │ 00:02:47 v #3141 > > │ def method1(v0: bool) -> bool: 00:02:47 v #3142 > > │ return v0 00:02:47 v #3143 > > │ 00:02:47 v #3144 > > │ 00:02:47 v #3145 > > │ def closure0(v0: str, unit_var: None) -> None: 00:02:47 v #3146 > > │ print(v0) 00:02:47 v #3147 > > │ 00:02:47 v #3148 > > │ 00:02:47 v #3149 > > │ def method0(__unit: None=None) -> None: 00:02:47 v #3150 > > │ v14: str = concat("1", "\n", *concat("2", "\n", 00:02:47 v #3151 > > *concat("3", "", *""))) 00:02:47 v #3152 > > │ v18: bool = v14 == "1\n2\n3" 00:02:47 v #3153 > > │ v20: bool = True if v18 else method1(v18) 00:02:47 v #3154 > > │ v23: str = to_text(interpolate("%P() / actual: %A%P() 00:02:47 v #3155 > > expected: %A%P()", ["__assert_eq", v14, "1\n2\n3"])) 00:02:47 v #3156 > > │ v28: None 00:02:47 v #3157 > > │ closure0(v23, None) 00:02:47 v #3158 > > │ v28 = None 00:02:47 v #3159 > > │ if v20 == False: 00:02:47 v #3160 > > │ raise Exception(v23) 00:02:47 v #3161 > > │ 00:02:47 v #3162 > > │ 00:02:47 v #3163 > > │ 00:02:47 v #3164 > > │ method0() 00:02:47 v #3165 > > │ 00:02:47 v #3166 > > │ 00:02:47 v #3167 > > │ .py (Cuda): 00:02:47 v #3168 > > │ kernel = r""" 00:02:47 v #3169 > > │ """ 00:02:47 v #3170 > > │ class static_array(): 00:02:47 v #3171 > > │ def __init__(self, length): 00:02:47 v #3172 > > │ self.ptr = [] 00:02:47 v #3173 > > │ for _ in range(length): 00:02:47 v #3174 > > │ self.ptr.append(None) 00:02:47 v #3175 > > │ 00:02:47 v #3176 > > │ def __getitem__(self, index): 00:02:47 v #3177 > > │ assert 0 <= index < len(self.ptr), "The get index 00:02:47 v #3178 > > needs to be in range." 00:02:47 v #3179 > > │ return self.ptr[index] 00:02:47 v #3180 > > │ 00:02:47 v #3181 > > │ def __setitem__(self, index, value): 00:02:47 v #3182 > > │ assert 0 <= index < len(self.ptr), "The set index 00:02:47 v #3183 > > needs to be in range." 00:02:47 v #3184 > > │ self.ptr[index] = value 00:02:47 v #3185 > > │ 00:02:47 v #3186 > > │ class static_array_list(static_array): 00:02:47 v #3187 > > │ def __init__(self, length): 00:02:47 v #3188 > > │ super().__init__(length) 00:02:47 v #3189 > > │ self.length = 0 00:02:47 v #3190 > > │ 00:02:47 v #3191 > > │ def __getitem__(self, index): 00:02:47 v #3192 > > │ assert 0 <= index < self.length, "The get index needs 00:02:47 v #3193 > > to be in range." 00:02:47 v #3194 > > │ return self.ptr[index] 00:02:47 v #3195 > > │ 00:02:47 v #3196 > > │ def __setitem__(self, index, value): 00:02:47 v #3197 > > │ assert 0 <= index < self.length, "The set index needs 00:02:47 v #3198 > > to be in range." 00:02:47 v #3199 > > │ self.ptr[index] = value 00:02:47 v #3200 > > │ 00:02:47 v #3201 > > │ def push(self,value): 00:02:47 v #3202 > > │ assert (self.length < len(self.ptr)), "The length 00:02:47 v #3203 > > before pushing has to be less than the maximum length of the array." 00:02:47 v #3204 > > │ self.ptr[self.length] = value 00:02:47 v #3205 > > │ self.length += 1 00:02:47 v #3206 > > │ 00:02:47 v #3207 > > │ def pop(self): 00:02:47 v #3208 > > │ assert (0 < self.length), "The length before popping 00:02:47 v #3209 > > has to be greater than 0." 00:02:47 v #3210 > > │ self.length -= 1 00:02:47 v #3211 > > │ return self.ptr[self.length] 00:02:47 v #3212 > > │ 00:02:47 v #3213 > > │ def unsafe_set_length(self,i): 00:02:47 v #3214 > > │ assert 0 <= i <= len(self.ptr), "The new length has 00:02:47 v #3215 > > to be in range." 00:02:47 v #3216 > > │ self.length = i 00:02:47 v #3217 > > │ 00:02:47 v #3218 > > │ class dynamic_array(static_array): 00:02:47 v #3219 > > │ pass 00:02:47 v #3220 > > │ 00:02:47 v #3221 > > │ class dynamic_array_list(static_array_list): 00:02:47 v #3222 > > │ def length_(self): return self.length 00:02:47 v #3223 > > │ 00:02:47 v #3224 > > │ import cupy as cp 00:02:47 v #3225 > > │ import numpy as np 00:02:47 v #3226 > > │ from dataclasses import dataclass 00:02:47 v #3227 > > │ from typing import NamedTuple, Union, Callable, Tuple 00:02:47 v #3228 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 00:02:47 v #3229 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str 00:02:47 v #3230 > > │ cuda = False 00:02:47 v #3231 > > │ 00:02:47 v #3232 > > │ def method1(v0 : bool) -> bool: 00:02:47 v #3233 > > │ return v0 00:02:47 v #3234 > > │ def method0() -> None: 00:02:47 v #3235 > > │ v4 = "3" 00:02:47 v #3236 > > │ v5 = "" 00:02:47 v #3237 > > │ v6 = f"{v4}{v5}{v5}" 00:02:47 v #3238 > > │ del v4, v5 00:02:47 v #3239 > > │ v9 = "\n" 00:02:47 v #3240 > > │ v12 = "2" 00:02:47 v #3241 > > │ v13 = f"{v12}{v9}{v6}" 00:02:47 v #3242 > > │ del v6, v12 00:02:47 v #3243 > > │ v18 = "1" 00:02:47 v #3244 > > │ v19 = f"{v18}{v9}{v13}" 00:02:47 v #3245 > > │ del v9, v13, v18 00:02:47 v #3246 > > │ v22 = v19 == "1\n2\n3" 00:02:47 v #3247 > > │ if v22: 00:02:47 v #3248 > > │ v24 = True 00:02:47 v #3249 > > │ else: 00:02:47 v #3250 > > │ v24 = method1(v22) 00:02:47 v #3251 > > │ del v22 00:02:47 v #3252 > > │ v28 = "__assert_eq" 00:02:47 v #3253 > > │ v29 = "1\n2\n3" 00:02:47 v #3254 > > │ v30 = f"{v28} / actual: {v19} / expected: {v29}" 00:02:47 v #3255 > > │ del v19, v28, v29 00:02:47 v #3256 > > │ print(v30) 00:02:47 v #3257 > > │ v36 = v24 == False 00:02:47 v #3258 > > │ del v24 00:02:47 v #3259 > > │ if v36: 00:02:47 v #3260 > > │ del v36 00:02:47 v #3261 > > │ raise Exception(v30) 00:02:47 v #3262 > > │ else: 00:02:47 v #3263 > > │ del v30, v36 00:02:47 v #3264 > > │ return 00:02:47 v #3265 > > │ def main_body(): 00:02:47 v #3266 > > │ return method0() 00:02:47 v #3267 > > │ 00:02:47 v #3268 > > │ def main(): 00:02:47 v #3269 > > │ r = main_body() 00:02:47 v #3270 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # 00:02:47 v #3271 > > This line is here so the `__trap()` calls on the kernel aren't missed. 00:02:47 v #3272 > > │ return r 00:02:47 v #3273 > > │ 00:02:47 v #3274 > > │ if __name__ == '__main__': result = main(); None if result is 00:02:47 v #3275 > > None else print(result) 00:02:47 v #3276 > > │ 00:02:47 v #3277 > > │ .fsx output: 00:02:47 v #3278 > > │ __assert_eq / actual: "1 00:02:47 v #3279 > > │ 2 00:02:47 v #3280 > > │ 3" / expected: "1 00:02:47 v #3281 > > │ 2 00:02:47 v #3282 > > │ 3" 00:02:47 v #3283 > > │ 00:02:47 v #3284 > > 00:02:47 v #3285 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:47 v #3286 > > │ ### ellipsis 00:02:47 v #3287 > > 00:02:47 v #3288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 v #3289 > > inl ellipsis (max : i32) (s : string) = 00:02:47 v #3290 > > if sm.length s <= max 00:02:47 v #3291 > > then s 00:02:47 v #3292 > > else s |> slice 0 (max - 1) |> fun x => $'!x + "..."' 00:02:47 v #3293 > > 00:02:47 v #3294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:47 v #3295 > > //// test 00:02:47 v #3296 > > ///! fsharp 00:02:47 v #3297 > > ///! cuda 00:02:47 v #3298 > > ///! rust 00:02:47 v #3299 > > ///! typescript 00:02:47 v #3300 > > ///! python 00:02:47 v #3301 > > 00:02:47 v #3302 > > "12345" 00:02:47 v #3303 > > |> ellipsis 2 00:02:47 v #3304 > > |> _assert_eq "12..." 00:02:47 v #3305 > > 00:02:47 v #3306 > > "12345" 00:02:47 v #3307 > > |> ellipsis 4 00:02:47 v #3308 > > |> _assert_eq "1234..." 00:02:54 v #3309 > > 00:02:54 v #3310 > > ── [ 7.43s - return value ] ──────────────────────────────────────────────────── 00:02:54 v #3311 > > │ 00:02:54 v #3312 > > │ .py output (Cuda): 00:02:54 v #3313 > > │ __assert_eq / actual: 12... / expected: 12... 00:02:54 v #3314 > > │ __assert_eq / actual: 1234... / expected: 1234... 00:02:54 v #3315 > > │ 00:02:54 v #3316 > > │ 00:02:54 v #3317 > > │ .rs output: 00:02:54 v #3318 > > │ __assert_eq / actual: "12..." / expected: "12..." 00:02:54 v #3319 > > │ __assert_eq / actual: "1234..." / expected: "1234..." 00:02:54 v #3320 > > │ 00:02:54 v #3321 > > │ 00:02:54 v #3322 > > │ .ts output: 00:02:54 v #3323 > > │ __assert_eq / actual: 12... / expected: 12... 00:02:54 v #3324 > > │ __assert_eq / actual: 1234... / expected: 1234... 00:02:54 v #3325 > > │ 00:02:54 v #3326 > > │ 00:02:54 v #3327 > > │ .py output: 00:02:54 v #3328 > > │ __assert_eq / actual: 12... / expected: 12... 00:02:54 v #3329 > > │ __assert_eq / actual: 1234... / expected: 1234... 00:02:54 v #3330 > > │ 00:02:54 v #3331 > > │ 00:02:54 v #3332 > > │ 00:02:54 v #3333 > > 00:02:54 v #3334 > > ── [ 7.43s - stdout ] ────────────────────────────────────────────────────────── 00:02:54 v #3335 > > │ .fsx output: 00:02:54 v #3336 > > │ __assert_eq / actual: "12..." / expected: "12..." 00:02:54 v #3337 > > │ __assert_eq / actual: "1234..." / expected: "1234..." 00:02:54 v #3338 > > │ 00:02:54 v #3339 > > 00:02:54 v #3340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:54 v #3341 > > │ ## fsharp 00:02:54 v #3342 > > 00:02:54 v #3343 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:54 v #3344 > > │ ### last_index_of 00:02:54 v #3345 > > 00:02:54 v #3346 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:54 v #3347 > > inl last_index_of (search : string) (s : string) : i32 = 00:02:54 v #3348 > > $'!s.LastIndexOf !search ' 00:02:54 v #3349 > > 00:02:54 v #3350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:54 v #3351 > > │ ### index_of 00:02:54 v #3352 > > 00:02:54 v #3353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:54 v #3354 > > inl index_of (search : string) (s : string) : i32 = 00:02:54 v #3355 > > backend_switch { 00:02:54 v #3356 > > Fsharp = fun () => $'!s.IndexOf !search ' : i32 00:02:54 v #3357 > > Python = fun () => $'!s.find(!search)' : i32 00:02:54 v #3358 > > } 00:02:55 v #3359 > > 00:02:55 v #3360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:55 v #3361 > > │ ### replicate 00:02:55 v #3362 > > 00:02:55 v #3363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #3364 > > inl replicate (n : int) (s : string) : string = 00:02:55 v #3365 > > inl rec body i acc = 00:02:55 v #3366 > > if i >= n 00:02:55 v #3367 > > then acc 00:02:55 v #3368 > > else loop (i + 1) (acc +. s) 00:02:55 v #3369 > > and inl loop i = join_body_unit body n i 00:02:55 v #3370 > > loop 0 "" 00:02:55 v #3371 > > 00:02:55 v #3372 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #3373 > > //// test 00:02:55 v #3374 > > ///! fsharp 00:02:55 v #3375 > > //// print_code 00:02:55 v #3376 > > 00:02:55 v #3377 > > "12" 00:02:55 v #3378 > > |> replicate 3 00:02:55 v #3379 > > |> _assert_eq "121212" 00:02:55 v #3380 > > 00:02:55 v #3381 > > ── [ 164.51ms - stdout ] ─────────────────────────────────────────────────────── 00:02:55 v #3382 > > │ .fsx: 00:02:55 v #3383 > > │ let rec method1 (v0 : bool) : bool = 00:02:55 v #3384 > > │ v0 00:02:55 v #3385 > > │ and closure0 (v0 : string) () : unit = 00:02:55 v #3386 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:02:55 v #3387 > > │ v1 v0 00:02:55 v #3388 > > │ and method0 () : unit = 00:02:55 v #3389 > > │ let v0 : string = "" 00:02:55 v #3390 > > │ let v1 : string = "12" 00:02:55 v #3391 > > │ let v2 : string = v0 + v1 00:02:55 v #3392 > > │ let v3 : string = v2 + v1 00:02:55 v #3393 > > │ let v4 : string = v3 + v1 00:02:55 v #3394 > > │ let v5 : bool = v4 = "121212" 00:02:55 v #3395 > > │ let v7 : bool = 00:02:55 v #3396 > > │ if v5 then 00:02:55 v #3397 > > │ true 00:02:55 v #3398 > > │ else 00:02:55 v #3399 > > │ method1(v5) 00:02:55 v #3400 > > │ let v8 : string = "__assert_eq" 00:02:55 v #3401 > > │ let v9 : string = "121212" 00:02:55 v #3402 > > │ let v10 : string = $"{v8} / actual: %A{v4} / expected: 00:02:55 v #3403 > > %A{v9}" 00:02:55 v #3404 > > │ let v13 : unit = () 00:02:55 v #3405 > > │ let v14 : (unit -> unit) = closure0(v10) 00:02:55 v #3406 > > │ let v15 : unit = (fun () -> v14 (); v13) () 00:02:55 v #3407 > > │ let v17 : bool = v7 = false 00:02:55 v #3408 > > │ if v17 then 00:02:55 v #3409 > > │ failwith<unit> v10 00:02:55 v #3410 > > │ method0() 00:02:55 v #3411 > > │ 00:02:55 v #3412 > > │ 00:02:55 v #3413 > > │ __assert_eq / actual: "121212" / expected: "121212" 00:02:55 v #3414 > > │ 00:02:55 v #3415 > > 00:02:55 v #3416 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:55 v #3417 > > //// test 00:02:55 v #3418 > > ///! fsharp 00:02:55 v #3419 > > ///! cuda 00:02:55 v #3420 > > ///! rust 00:02:55 v #3421 > > ///! typescript 00:02:55 v #3422 > > ///! python 00:02:55 v #3423 > > 00:02:55 v #3424 > > "12" 00:02:55 v #3425 > > |> replicate 3 00:02:55 v #3426 > > |> _assert_eq "121212" 00:03:02 v #3427 > > 00:03:02 v #3428 > > ── [ 7.57s - return value ] ──────────────────────────────────────────────────── 00:03:02 v #3429 > > │ .py output (Cuda): 00:03:02 v #3430 > > │ __assert_eq / actual: 121212 / expected: 121212 00:03:02 v #3431 > > │ 00:03:02 v #3432 > > │ .rs output: 00:03:02 v #3433 > > │ __assert_eq / actual: "121212" / expected: "121212" 00:03:02 v #3434 > > │ 00:03:02 v #3435 > > │ .ts output: 00:03:02 v #3436 > > │ __assert_eq / actual: 121212 / expected: 121212 00:03:02 v #3437 > > │ 00:03:02 v #3438 > > │ .py output: 00:03:02 v #3439 > > │ __assert_eq / actual: 121212 / expected: 121212 00:03:02 v #3440 > > │ 00:03:02 v #3441 > > │ 00:03:02 v #3442 > > 00:03:02 v #3443 > > ── [ 7.57s - stdout ] ────────────────────────────────────────────────────────── 00:03:02 v #3444 > > │ .fsx output: 00:03:02 v #3445 > > │ __assert_eq / actual: "121212" / expected: "121212" 00:03:02 v #3446 > > │ 00:03:02 v #3447 > > 00:03:02 v #3448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:02 v #3449 > > │ ### obj_to_string 00:03:02 v #3450 > > 00:03:02 v #3451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:02 v #3452 > > inl obj_to_string x : string = 00:03:02 v #3453 > > backend_switch { 00:03:02 v #3454 > > Fsharp = fun () => x |> $'_.ToString()' : string 00:03:02 v #3455 > > Python = fun () => $'str(!x)' : string 00:03:02 v #3456 > > } 00:03:03 v #3457 > > 00:03:03 v #3458 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:03 v #3459 > > │ ### pad_left 00:03:03 v #3460 > > 00:03:03 v #3461 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:03 v #3462 > > inl pad_left (total_width : int) (padding_char : char) (s : string) : string = 00:03:03 v #3463 > > inl padding = padding_char |> obj_to_string |> replicate (total_width - 00:03:03 v #3464 > > length s) 00:03:03 v #3465 > > padding +. s 00:03:03 v #3466 > > 00:03:03 v #3467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:03 v #3468 > > │ ### pad_right 00:03:03 v #3469 > > 00:03:03 v #3470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:03 v #3471 > > inl pad_right (total_width : int) (padding_char : char) (s : string) : string = 00:03:03 v #3472 > > inl padding = padding_char |> obj_to_string |> replicate (total_width - 00:03:03 v #3473 > > length s) 00:03:03 v #3474 > > s +. padding 00:03:03 v #3475 > > 00:03:03 v #3476 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:03 v #3477 > > //// test 00:03:03 v #3478 > > ///! fsharp 00:03:03 v #3479 > > ///! cuda 00:03:03 v #3480 > > ///! rust 00:03:03 v #3481 > > ///! typescript 00:03:03 v #3482 > > ///! python 00:03:03 v #3483 > > 00:03:03 v #3484 > > "123" 00:03:03 v #3485 > > |> pad_right 6 ' ' 00:03:03 v #3486 > > |> _assert_eq "123 " 00:03:11 v #3487 > > 00:03:11 v #3488 > > ── [ 7.85s - return value ] ──────────────────────────────────────────────────── 00:03:11 v #3489 > > │ .py output (Cuda): 00:03:11 v #3490 > > │ __assert_eq / actual: 123 / expected: 123 00:03:11 v #3491 > > │ 00:03:11 v #3492 > > │ .rs output: 00:03:11 v #3493 > > │ __assert_eq / actual: "123 " / expected: "123 " 00:03:11 v #3494 > > │ 00:03:11 v #3495 > > │ .ts output: 00:03:11 v #3496 > > │ __assert_eq / actual: 123 / expected: 123 00:03:11 v #3497 > > │ 00:03:11 v #3498 > > │ .py output: 00:03:11 v #3499 > > │ __assert_eq / actual: 123 / expected: 123 00:03:11 v #3500 > > │ 00:03:11 v #3501 > > │ 00:03:11 v #3502 > > 00:03:11 v #3503 > > ── [ 7.85s - stdout ] ────────────────────────────────────────────────────────── 00:03:11 v #3504 > > │ .fsx output: 00:03:11 v #3505 > > │ __assert_eq / actual: "123 " / expected: "123 " 00:03:11 v #3506 > > │ 00:03:11 v #3507 > > 00:03:11 v #3508 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 v #3509 > > │ ### convert_to_utf32 00:03:11 v #3510 > > 00:03:11 v #3511 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #3512 > > inl convert_to_utf32 (c : char) : int = 00:03:11 v #3513 > > backend_switch { 00:03:11 v #3514 > > Fsharp = fun () => 00:03:11 v #3515 > > run_target_args' c function 00:03:11 v #3516 > > | Fsharp (Native) => fun c => $'System.Char.ConvertToUtf32 (string 00:03:11 v #3517 > > !c, 0)' : int 00:03:11 v #3518 > > | _ => fun c => c |> i32 00:03:11 v #3519 > > Python = fun () => $'ord(!c)' : int 00:03:11 v #3520 > > } 00:03:11 v #3521 > > 00:03:11 v #3522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 v #3523 > > │ ### ends_with 00:03:11 v #3524 > > 00:03:11 v #3525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #3526 > > inl ends_with (value : string) (s : string) : bool = 00:03:11 v #3527 > > backend_switch { 00:03:11 v #3528 > > Fsharp = fun () => $'!s.EndsWith (!value, false, null)' : bool 00:03:11 v #3529 > > Python = fun () => $'!s.endswith(!value)' : bool 00:03:11 v #3530 > > } 00:03:11 v #3531 > > 00:03:11 v #3532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 v #3533 > > │ ### starts_with 00:03:11 v #3534 > > 00:03:11 v #3535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #3536 > > inl starts_with (value : string) (s : string) : bool = 00:03:11 v #3537 > > backend_switch { 00:03:11 v #3538 > > Fsharp = fun () => $'!s.StartsWith (!value, false, null)' : bool 00:03:11 v #3539 > > Python = fun () => $'!s.startswith(!value)' : bool 00:03:11 v #3540 > > } 00:03:11 v #3541 > > 00:03:11 v #3542 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 v #3543 > > │ ### is_white_space 00:03:11 v #3544 > > 00:03:11 v #3545 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #3546 > > inl is_white_space (c : char) : bool = 00:03:11 v #3547 > > c |> $'System.Char.IsWhiteSpace' 00:03:11 v #3548 > > 00:03:11 v #3549 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:11 v #3550 > > │ ### substring 00:03:11 v #3551 > > 00:03:11 v #3552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:11 v #3553 > > inl substring (start : i32) (len : i32) (str : string) : string = 00:03:11 v #3554 > > $'!str.Substring (!start, !len)' 00:03:12 v #3555 > > 00:03:12 v #3556 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 v #3557 > > │ ### to_lower 00:03:12 v #3558 > > 00:03:12 v #3559 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3560 > > inl to_lower (input : string) : string = 00:03:12 v #3561 > > backend_switch { 00:03:12 v #3562 > > Fsharp = fun () => $'!input.ToLower' () : string 00:03:12 v #3563 > > Python = fun () => $'!input.lower()' : string 00:03:12 v #3564 > > } 00:03:12 v #3565 > > 00:03:12 v #3566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 v #3567 > > │ ### to_upper 00:03:12 v #3568 > > 00:03:12 v #3569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3570 > > inl to_upper (input : string) : string = 00:03:12 v #3571 > > $'!input.ToUpper' () 00:03:12 v #3572 > > 00:03:12 v #3573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 v #3574 > > │ ### char_to_upper 00:03:12 v #3575 > > 00:03:12 v #3576 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3577 > > inl char_to_upper (input : char) : char = 00:03:12 v #3578 > > backend_switch { 00:03:12 v #3579 > > Fsharp = fun () => $'System.Char.ToUpper !input ' : char 00:03:12 v #3580 > > Python = fun () => $'!input.upper()' : char 00:03:12 v #3581 > > } 00:03:12 v #3582 > > 00:03:12 v #3583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 v #3584 > > │ ### string_builder 00:03:12 v #3585 > > 00:03:12 v #3586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3587 > > nominal string_builder_python = 00:03:12 v #3588 > > `( 00:03:12 v #3589 > > global "import io" 00:03:12 v #3590 > > $'' : $'io.StringIO' 00:03:12 v #3591 > > ) 00:03:12 v #3592 > > type string_builder_switch = 00:03:12 v #3593 > > { 00:03:12 v #3594 > > Fsharp : $'System.Text.StringBuilder' 00:03:12 v #3595 > > Python : string_builder_python 00:03:12 v #3596 > > } 00:03:12 v #3597 > > nominal string_builder = $'backend_switch `(string_builder_switch)' 00:03:12 v #3598 > > 00:03:12 v #3599 > > inl string_builder (initial : string) : string_builder = 00:03:12 v #3600 > > inl initial = 00:03:12 v #3601 > > if initial = "" 00:03:12 v #3602 > > then join initial 00:03:12 v #3603 > > else initial 00:03:12 v #3604 > > 00:03:12 v #3605 > > backend_switch { 00:03:12 v #3606 > > Fsharp = fun () => initial |> $'`string_builder ' : string_builder 00:03:12 v #3607 > > Python = fun () => 00:03:12 v #3608 > > global "import io" 00:03:12 v #3609 > > global "class CustomStringIO(io.StringIO):\n def __init__(self, 00:03:12 v #3610 > > init=''):\n super().__init__()\n if init != '': self.write(init)\n 00:03:12 v #3611 > > def __str__(self): return self.getvalue()\n def __repr__(self): return 00:03:12 v #3612 > > self.getvalue()" 00:03:12 v #3613 > > $'CustomStringIO(!initial)' : string_builder 00:03:12 v #3614 > > } 00:03:12 v #3615 > > 00:03:12 v #3616 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:12 v #3617 > > │ ### builder_append 00:03:12 v #3618 > > 00:03:12 v #3619 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3620 > > inl builder_append (item : string) (sb : string_builder) : string_builder = 00:03:12 v #3621 > > backend_switch { 00:03:12 v #3622 > > Fsharp = fun () => 00:03:12 v #3623 > > ($'!sb.Append' item : string_builder) |> ignore 00:03:12 v #3624 > > sb 00:03:12 v #3625 > > Python = fun () => 00:03:12 v #3626 > > ($'!sb.write(!item)' : int) |> ignore 00:03:12 v #3627 > > sb 00:03:12 v #3628 > > } 00:03:12 v #3629 > > 00:03:12 v #3630 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:12 v #3631 > > //// test 00:03:12 v #3632 > > ///! fsharp 00:03:12 v #3633 > > ///! cuda 00:03:12 v #3634 > > ///! rust 00:03:12 v #3635 > > ///! typescript 00:03:12 v #3636 > > ///! python 00:03:12 v #3637 > > 00:03:12 v #3638 > > "ab" 00:03:12 v #3639 > > |> string_builder 00:03:12 v #3640 > > |> builder_append "cd" 00:03:12 v #3641 > > |> builder_append "ef" 00:03:12 v #3642 > > |> sm'.obj_to_string 00:03:12 v #3643 > > |> _assert_eq "abcdef" 00:03:20 v #3644 > > 00:03:20 v #3645 > > ── [ 7.61s - return value ] ──────────────────────────────────────────────────── 00:03:20 v #3646 > > │ .py output (Cuda): 00:03:20 v #3647 > > │ __assert_eq / actual: abcdef / expected: abcdef 00:03:20 v #3648 > > │ 00:03:20 v #3649 > > │ .rs output: 00:03:20 v #3650 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef" 00:03:20 v #3651 > > │ 00:03:20 v #3652 > > │ .ts output: 00:03:20 v #3653 > > │ __assert_eq / actual: abcdef / expected: abcdef 00:03:20 v #3654 > > │ 00:03:20 v #3655 > > │ .py output: 00:03:20 v #3656 > > │ __assert_eq / actual: abcdef / expected: abcdef 00:03:20 v #3657 > > │ 00:03:20 v #3658 > > │ 00:03:20 v #3659 > > 00:03:20 v #3660 > > ── [ 7.61s - stdout ] ────────────────────────────────────────────────────────── 00:03:20 v #3661 > > │ .fsx output: 00:03:20 v #3662 > > │ __assert_eq / actual: "abcdef" / expected: "abcdef" 00:03:20 v #3663 > > │ 00:03:20 v #3664 > > 00:03:20 v #3665 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 v #3666 > > │ ### builder_append_line 00:03:20 v #3667 > > 00:03:20 v #3668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 v #3669 > > inl builder_append_line (sb : string_builder) : string_builder = 00:03:20 v #3670 > > backend_switch { 00:03:20 v #3671 > > Fsharp = fun () => 00:03:20 v #3672 > > ($'!sb.AppendLine ()' : string_builder) |> ignore 00:03:20 v #3673 > > sb 00:03:20 v #3674 > > Python = fun () => 00:03:20 v #3675 > > sb |> builder_append "\n" 00:03:20 v #3676 > > } 00:03:20 v #3677 > > 00:03:20 v #3678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 v #3679 > > │ ### builder_replace 00:03:20 v #3680 > > 00:03:20 v #3681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 v #3682 > > inl builder_replace (old : string) (new : string) (sb : string_builder) : 00:03:20 v #3683 > > string_builder = 00:03:20 v #3684 > > backend_switch { 00:03:20 v #3685 > > Fsharp = fun () => 00:03:20 v #3686 > > ($'!sb.Replace (!old, !new)' : string_builder) |> ignore 00:03:20 v #3687 > > sb 00:03:20 v #3688 > > Python = fun () => 00:03:20 v #3689 > > ($'!sb.getvalue().replace(!old, !new)' : string) |> string_builder 00:03:20 v #3690 > > } 00:03:20 v #3691 > > 00:03:20 v #3692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:20 v #3693 > > │ ### builder_insert 00:03:20 v #3694 > > 00:03:20 v #3695 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:20 v #3696 > > inl builder_insert (i : i32) (s : string) (sb : string_builder) : string_builder 00:03:20 v #3697 > > = 00:03:20 v #3698 > > backend_switch { 00:03:20 v #3699 > > Fsharp = fun () => 00:03:20 v #3700 > > ($'!sb.Insert (!i, !s)' : string_builder) |> ignore 00:03:20 v #3701 > > sb 00:03:20 v #3702 > > Python = fun () => 00:03:20 v #3703 > > inl sb = sb |> obj_to_string 00:03:20 v #3704 > > $'"".join([[!sb[[:!i]], !s, !sb[[!i:]]]])' |> string_builder 00:03:20 v #3705 > > } 00:03:21 v #3706 > > 00:03:21 v #3707 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3708 > > │ ### builder_clear 00:03:21 v #3709 > > 00:03:21 v #3710 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3711 > > inl builder_clear (sb : string_builder) : string_builder = 00:03:21 v #3712 > > backend_switch { 00:03:21 v #3713 > > Fsharp = fun () => 00:03:21 v #3714 > > ($'!sb.Clear' () : string_builder) |> ignore 00:03:21 v #3715 > > sb 00:03:21 v #3716 > > Python = fun () => 00:03:21 v #3717 > > ($'!sb.truncate(0)' : int) |> ignore 00:03:21 v #3718 > > ($'!sb.seek(0)' : int) |> ignore 00:03:21 v #3719 > > sb 00:03:21 v #3720 > > } 00:03:21 v #3721 > > 00:03:21 v #3722 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3723 > > │ ### trim 00:03:21 v #3724 > > 00:03:21 v #3725 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3726 > > inl trim (input : string) : string = 00:03:21 v #3727 > > backend_switch { 00:03:21 v #3728 > > Fsharp = fun () => $'!input.Trim' () : string 00:03:21 v #3729 > > Python = fun () => $'!input.strip()' : string 00:03:21 v #3730 > > } 00:03:21 v #3731 > > 00:03:21 v #3732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3733 > > │ ### concat 00:03:21 v #3734 > > 00:03:21 v #3735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3736 > > inl concat (a : string) (b : seq.seq' string) : string = 00:03:21 v #3737 > > backend_switch { 00:03:21 v #3738 > > Fsharp = fun () => 00:03:21 v #3739 > > inl a = 00:03:21 v #3740 > > if a = "\n" 00:03:21 v #3741 > > then join a 00:03:21 v #3742 > > else a 00:03:21 v #3743 > > b |> $'String.concat' a : string 00:03:21 v #3744 > > Python = fun () => 00:03:21 v #3745 > > $'!a.join(!b)' : string 00:03:21 v #3746 > > } 00:03:21 v #3747 > > 00:03:21 v #3748 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3749 > > │ ### trim_end 00:03:21 v #3750 > > 00:03:21 v #3751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3752 > > inl trim_end (trim_chars : list char) (input : string) : string = 00:03:21 v #3753 > > inl trim_chars = trim_chars |> listm'.box 00:03:21 v #3754 > > backend_switch { 00:03:21 v #3755 > > Fsharp = fun () => 00:03:21 v #3756 > > inl trim_chars = trim_chars |> listm'.to_array' 00:03:21 v #3757 > > $'!input.TrimEnd !trim_chars ' : string 00:03:21 v #3758 > > Python = fun () => 00:03:21 v #3759 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:03:21 v #3760 > > seq.of_list' |> concat "" 00:03:21 v #3761 > > $'!input.rstrip(!trim_chars)' : string 00:03:21 v #3762 > > } 00:03:21 v #3763 > > 00:03:21 v #3764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3765 > > │ ### trim_start 00:03:21 v #3766 > > 00:03:21 v #3767 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3768 > > inl trim_start (trim_chars : list char) (input : string) : string = 00:03:21 v #3769 > > inl trim_chars = trim_chars |> listm'.box 00:03:21 v #3770 > > backend_switch { 00:03:21 v #3771 > > Fsharp = fun () => 00:03:21 v #3772 > > inl trim_chars = trim_chars |> listm'.to_array' 00:03:21 v #3773 > > $'!input.TrimStart !trim_chars ' : string 00:03:21 v #3774 > > Python = fun () => 00:03:21 v #3775 > > inl trim_chars = trim_chars |> listm'.map obj_to_string |> 00:03:21 v #3776 > > seq.of_list' |> concat "" 00:03:21 v #3777 > > $'!input.lstrip(!trim_chars)' : string 00:03:21 v #3778 > > } 00:03:21 v #3779 > > 00:03:21 v #3780 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:21 v #3781 > > │ ### length' 00:03:21 v #3782 > > 00:03:21 v #3783 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:21 v #3784 > > inl length' forall dim. (input : string) : dim = 00:03:21 v #3785 > > backend_switch { 00:03:21 v #3786 > > Fsharp = fun () => input |> $'String.length' : dim 00:03:21 v #3787 > > Python = fun () => $'len(!input)' : dim 00:03:21 v #3788 > > } 00:03:22 v #3789 > > 00:03:22 v #3790 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:22 v #3791 > > //// test 00:03:22 v #3792 > > ///! fsharp 00:03:22 v #3793 > > ///! cuda 00:03:22 v #3794 > > 00:03:22 v #3795 > > "abc" 00:03:22 v #3796 > > |> length' 00:03:22 v #3797 > > |> _assert_eq 3i32 00:03:22 v #3798 > > 00:03:22 v #3799 > > ── [ 539.93ms - return value ] ───────────────────────────────────────────────── 00:03:22 v #3800 > > │ .py output (Cuda): 00:03:22 v #3801 > > │ __assert_eq / actual: 3 / expected: 3 00:03:22 v #3802 > > │ 00:03:22 v #3803 > > │ 00:03:22 v #3804 > > 00:03:22 v #3805 > > ── [ 540.06ms - stdout ] ─────────────────────────────────────────────────────── 00:03:22 v #3806 > > │ .fsx output: 00:03:22 v #3807 > > │ __assert_eq / actual: 3 / expected: 3 00:03:22 v #3808 > > │ 00:03:22 v #3809 > > 00:03:22 v #3810 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:22 v #3811 > > │ ### to_string any 00:03:22 v #3812 > > 00:03:22 v #3813 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:22 v #3814 > > instance to_string any = 00:03:22 v #3815 > > obj_to_string 00:03:22 v #3816 > > 00:03:22 v #3817 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:22 v #3818 > > │ ### (~$) 00:03:22 v #3819 > > 00:03:22 v #3820 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:22 v #3821 > > inl (~$) s = 00:03:22 v #3822 > > s |> obj_to_string 00:03:22 v #3823 > > 00:03:22 v #3824 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:22 v #3825 > > │ ### replace 00:03:22 v #3826 > > 00:03:22 v #3827 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:22 v #3828 > > inl replace (old_value : string) (new_value : string) (s : string) : string = 00:03:22 v #3829 > > $'!s.Replace (!old_value, !new_value)' 00:03:23 v #3830 > > 00:03:23 v #3831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3832 > > │ ### split 00:03:23 v #3833 > > 00:03:23 v #3834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3835 > > inl split (separator : string) (str : string) : array_base string = 00:03:23 v #3836 > > backend_switch { 00:03:23 v #3837 > > Fsharp = fun () => $'!str.Split !separator ' : array_base string 00:03:23 v #3838 > > Python = fun () => $'!str.split(!separator)' : array_base string 00:03:23 v #3839 > > } 00:03:23 v #3840 > > 00:03:23 v #3841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3842 > > │ ### split_string 00:03:23 v #3843 > > 00:03:23 v #3844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3845 > > inl split_string (separator : array_base string) (str : string) : array_base 00:03:23 v #3846 > > string = 00:03:23 v #3847 > > run_target_args (fun () => str, separator) function 00:03:23 v #3848 > > | Fsharp (Native) => fun str, separator => $'!str.Split (!separator, 00:03:23 v #3849 > > System.StringSplitOptions.None)' 00:03:23 v #3850 > > | _ => fun str, separator => str |> split ((a separator : _ int _) |> 00:03:23 v #3851 > > seq.of_array |> concat (join "")) 00:03:23 v #3852 > > 00:03:23 v #3853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3854 > > │ ### join' 00:03:23 v #3855 > > 00:03:23 v #3856 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3857 > > inl join' (concat : string) (s : a int string) : string = 00:03:23 v #3858 > > $'System.String.Join (!concat, !s)' 00:03:23 v #3859 > > 00:03:23 v #3860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3861 > > │ ### encoding 00:03:23 v #3862 > > 00:03:23 v #3863 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3864 > > nominal encoding = $'System.Text.Encoding' 00:03:23 v #3865 > > 00:03:23 v #3866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3867 > > │ ### encoding_utf8 00:03:23 v #3868 > > 00:03:23 v #3869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3870 > > inl encoding_utf8 () : encoding = 00:03:23 v #3871 > > $'`encoding.UTF8' 00:03:23 v #3872 > > 00:03:23 v #3873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:23 v #3874 > > │ ### utf8_get_bytes 00:03:23 v #3875 > > 00:03:23 v #3876 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:23 v #3877 > > inl utf8_get_bytes (s : string) : a i32 u8 = 00:03:23 v #3878 > > s |> (encoding_utf8 () |> $'_.GetBytes') 00:03:24 v #3879 > > 00:03:24 v #3880 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3881 > > │ ### byte_to_string 00:03:24 v #3882 > > 00:03:24 v #3883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3884 > > inl byte_to_string (format : string) (x : u8) : string = 00:03:24 v #3885 > > $'!x.ToString' format 00:03:24 v #3886 > > 00:03:24 v #3887 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3888 > > │ ## rust 00:03:24 v #3889 > > 00:03:24 v #3890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3891 > > │ ### str 00:03:24 v #3892 > > 00:03:24 v #3893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3894 > > nominal str = 00:03:24 v #3895 > > `( 00:03:24 v #3896 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:24 v #3897 > > Fable.Core.Emit(\"str\")>]]\ntype Str = class end\n#else\ntype Str = 00:03:24 v #3898 > > string\n#endif\n" 00:03:24 v #3899 > > $'' : $'Str' 00:03:24 v #3900 > > ) 00:03:24 v #3901 > > 00:03:24 v #3902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3903 > > │ ### chars 00:03:24 v #3904 > > 00:03:24 v #3905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3906 > > inl chars (x : rust.ref str) : rust.mut' (into_iterator char) = 00:03:24 v #3907 > > !\\(x, $'$"$0.chars()"') 00:03:24 v #3908 > > 00:03:24 v #3909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3910 > > │ ### char_is_alphanumeric 00:03:24 v #3911 > > 00:03:24 v #3912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3913 > > inl char_is_alphanumeric (x : char) : bool = 00:03:24 v #3914 > > !\\(x, $'$"$0.is_alphanumeric()"') 00:03:24 v #3915 > > 00:03:24 v #3916 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3917 > > │ ### byte_slice 00:03:24 v #3918 > > 00:03:24 v #3919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3920 > > inl byte_slice (s : string) : rust.ref (am'.slice u8) = 00:03:24 v #3921 > > !\($'"b\\\"" + !s + "\\\""') 00:03:24 v #3922 > > 00:03:24 v #3923 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:24 v #3924 > > │ ### display 00:03:24 v #3925 > > 00:03:24 v #3926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:24 v #3927 > > nominal display t = 00:03:24 v #3928 > > `( 00:03:24 v #3929 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:24 v #3930 > > Fable.Core.Emit(\"std::fmt::Display<$0>\")>]]\n#endif\ntype std_fmt_Display<'T> 00:03:24 v #3931 > > = class end" 00:03:24 v #3932 > > $'' : $'std_fmt_Display<`t>' 00:03:24 v #3933 > > ) 00:03:25 v #3934 > > 00:03:25 v #3935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3936 > > │ ### base64_decode_error 00:03:25 v #3937 > > 00:03:25 v #3938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3939 > > nominal base64_decode_error = 00:03:25 v #3940 > > `( 00:03:25 v #3941 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #3942 > > Fable.Core.Emit(\"base64::DecodeError\")>]]\n#endif\ntype base64_DecodeError = 00:03:25 v #3943 > > class end" 00:03:25 v #3944 > > $'' : $'base64_DecodeError' 00:03:25 v #3945 > > ) 00:03:25 v #3946 > > 00:03:25 v #3947 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3948 > > │ ### borsh_io_error 00:03:25 v #3949 > > 00:03:25 v #3950 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3951 > > nominal borsh_io_error = 00:03:25 v #3952 > > `( 00:03:25 v #3953 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #3954 > > Fable.Core.Emit(\"borsh::io::Error\")>]]\n#endif\ntype borsh_io_Error = class 00:03:25 v #3955 > > end" 00:03:25 v #3956 > > $'' : $'borsh_io_Error' 00:03:25 v #3957 > > ) 00:03:25 v #3958 > > 00:03:25 v #3959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3960 > > │ ### utf8_error 00:03:25 v #3961 > > 00:03:25 v #3962 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3963 > > nominal utf8_error = 00:03:25 v #3964 > > `( 00:03:25 v #3965 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #3966 > > Fable.Core.Emit(\"std::str::Utf8Error\")>]]\n#endif\ntype std_str_Utf8Error = 00:03:25 v #3967 > > class end" 00:03:25 v #3968 > > $'' : $'std_str_Utf8Error' 00:03:25 v #3969 > > ) 00:03:25 v #3970 > > 00:03:25 v #3971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3972 > > │ ### from_utf8_error 00:03:25 v #3973 > > 00:03:25 v #3974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3975 > > nominal from_utf8_error = 00:03:25 v #3976 > > `( 00:03:25 v #3977 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #3978 > > Fable.Core.Emit(\"std::string::FromUtf8Error\")>]]\n#endif\ntype 00:03:25 v #3979 > > std_string_FromUtf8Error = class end" 00:03:25 v #3980 > > $'' : $'std_string_FromUtf8Error' 00:03:25 v #3981 > > ) 00:03:25 v #3982 > > 00:03:25 v #3983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3984 > > │ ### json_value 00:03:25 v #3985 > > 00:03:25 v #3986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3987 > > nominal json_value = 00:03:25 v #3988 > > `( 00:03:25 v #3989 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #3990 > > Fable.Core.Emit(\"serde_json::Value\")>]]\n#endif\ntype serde_json_Value = class 00:03:25 v #3991 > > end" 00:03:25 v #3992 > > $'' : $'serde_json_Value' 00:03:25 v #3993 > > ) 00:03:25 v #3994 > > 00:03:25 v #3995 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:25 v #3996 > > │ ### json_error 00:03:25 v #3997 > > 00:03:25 v #3998 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:25 v #3999 > > nominal json_error = 00:03:25 v #4000 > > `( 00:03:25 v #4001 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:25 v #4002 > > Fable.Core.Emit(\"serde_json::Error\")>]]\n#endif\ntype serde_json_Error = class 00:03:25 v #4003 > > end" 00:03:25 v #4004 > > $'' : $'serde_json_Error' 00:03:25 v #4005 > > ) 00:03:26 v #4006 > > 00:03:26 v #4007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4008 > > │ ### serde_wasm_bindgen_error 00:03:26 v #4009 > > 00:03:26 v #4010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4011 > > nominal serde_wasm_bindgen_error = 00:03:26 v #4012 > > `( 00:03:26 v #4013 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4014 > > Fable.Core.Emit(\"serde_wasm_bindgen::Error\")>]]\n#endif\ntype 00:03:26 v #4015 > > serde_wasm_bindgen_Error = class end" 00:03:26 v #4016 > > $'' : $'serde_wasm_bindgen_Error' 00:03:26 v #4017 > > ) 00:03:26 v #4018 > > 00:03:26 v #4019 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4020 > > │ ### js_string 00:03:26 v #4021 > > 00:03:26 v #4022 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4023 > > nominal js_string = 00:03:26 v #4024 > > `( 00:03:26 v #4025 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4026 > > Fable.Core.Emit(\"js_sys::JsString\")>]]\n#endif\ntype js_sys_JsString = class 00:03:26 v #4027 > > end" 00:03:26 v #4028 > > $'' : $'js_sys_JsString' 00:03:26 v #4029 > > ) 00:03:26 v #4030 > > 00:03:26 v #4031 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4032 > > │ ### os_str 00:03:26 v #4033 > > 00:03:26 v #4034 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4035 > > nominal os_str = 00:03:26 v #4036 > > `( 00:03:26 v #4037 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4038 > > Fable.Core.Emit(\"std::ffi::OsStr\")>]]\n#endif\ntype std_ffi_OsStr = class end" 00:03:26 v #4039 > > $'' : $'std_ffi_OsStr' 00:03:26 v #4040 > > ) 00:03:26 v #4041 > > 00:03:26 v #4042 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4043 > > │ ### c_str 00:03:26 v #4044 > > 00:03:26 v #4045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4046 > > nominal c_str = 00:03:26 v #4047 > > `( 00:03:26 v #4048 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4049 > > Fable.Core.Emit(\"std::ffi::CStr\")>]]\n#endif\ntype std_ffi_CStr = class end" 00:03:26 v #4050 > > $'' : $'std_ffi_CStr' 00:03:26 v #4051 > > ) 00:03:26 v #4052 > > 00:03:26 v #4053 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4054 > > │ ### c_string 00:03:26 v #4055 > > 00:03:26 v #4056 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4057 > > nominal c_string = 00:03:26 v #4058 > > `( 00:03:26 v #4059 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4060 > > Fable.Core.Emit(\"std::ffi::CString\")>]]\n#endif\ntype std_ffi_CString = class 00:03:26 v #4061 > > end" 00:03:26 v #4062 > > $'' : $'std_ffi_CString' 00:03:26 v #4063 > > ) 00:03:26 v #4064 > > 00:03:26 v #4065 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:26 v #4066 > > │ ### os_string 00:03:26 v #4067 > > 00:03:26 v #4068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:26 v #4069 > > nominal os_string = 00:03:26 v #4070 > > `( 00:03:26 v #4071 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:26 v #4072 > > Fable.Core.Emit(\"std::ffi::OsString\")>]]\n#endif\ntype std_ffi_OsString = 00:03:26 v #4073 > > class end" 00:03:26 v #4074 > > $'' : $'std_ffi_OsString' 00:03:26 v #4075 > > ) 00:03:27 v #4076 > > 00:03:27 v #4077 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4078 > > │ ### raw_string_literal 00:03:27 v #4079 > > 00:03:27 v #4080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4081 > > inl raw_string_literal (s : string) : rust.ref str = 00:03:27 v #4082 > > !\($'"r#\\"" + !s + "\\"#"') 00:03:27 v #4083 > > 00:03:27 v #4084 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4085 > > │ ### raw_string_literal_static 00:03:27 v #4086 > > 00:03:27 v #4087 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4088 > > inl raw_string_literal_static (s : string) : rust.static_ref str = 00:03:27 v #4089 > > !\($'"r#\\"" + !s + "\\"#"') 00:03:27 v #4090 > > 00:03:27 v #4091 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4092 > > │ ### (~#) 00:03:27 v #4093 > > 00:03:27 v #4094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4095 > > inl (~#) s = 00:03:27 v #4096 > > s |> raw_string_literal 00:03:27 v #4097 > > 00:03:27 v #4098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4099 > > │ ### (~##) 00:03:27 v #4100 > > 00:03:27 v #4101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4102 > > inl (~##) s = 00:03:27 v #4103 > > s |> raw_string_literal_static 00:03:27 v #4104 > > 00:03:27 v #4105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4106 > > │ ### include_str 00:03:27 v #4107 > > 00:03:27 v #4108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4109 > > inl include_str (path : string) : rust.ref str = 00:03:27 v #4110 > > !\($'"include_str\!(\\\"" + !path + "\\\")"') 00:03:27 v #4111 > > 00:03:27 v #4112 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4113 > > │ ### as_str 00:03:27 v #4114 > > 00:03:27 v #4115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4116 > > inl as_str (s : string) : rust.ref str = 00:03:27 v #4117 > > // !\\(s, $'"fable_library_rust::String_::LrcStr::as_str(&$0)"') 00:03:27 v #4118 > > run_target_args (fun () => s) function 00:03:27 v #4119 > > | Rust _ => fun s => !\\(s, $'"&*$0"') 00:03:27 v #4120 > > | _ => fun s => s |> unbox 00:03:27 v #4121 > > 00:03:27 v #4122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:27 v #4123 > > │ ### from_iter 00:03:27 v #4124 > > 00:03:27 v #4125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:27 v #4126 > > inl from_iter forall (t : * -> *). (s : t char) : std_string = 00:03:27 v #4127 > > !\\(s, $'"String::from_iter($0)"') 00:03:28 v #4128 > > 00:03:28 v #4129 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #4130 > > │ ### ref_to_std_string 00:03:28 v #4131 > > 00:03:28 v #4132 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #4133 > > inl ref_to_std_string (str : rust.ref str) : std_string = 00:03:28 v #4134 > > run_target_args (fun () => str) function 00:03:28 v #4135 > > | Rust _ => fun str => !\\(str, $'"String::from($0)"') 00:03:28 v #4136 > > | _ => fun str => str |> unbox 00:03:28 v #4137 > > 00:03:28 v #4138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #4139 > > │ ### cow_to_std_string 00:03:28 v #4140 > > 00:03:28 v #4141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #4142 > > inl cow_to_std_string (str : rust.cow str) : std_string = 00:03:28 v #4143 > > !\\(str, $'"String::from($0)"') 00:03:28 v #4144 > > 00:03:28 v #4145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #4146 > > │ ### to_std_string 00:03:28 v #4147 > > 00:03:28 v #4148 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #4149 > > inl to_std_string (s : string) : std_string = 00:03:28 v #4150 > > s |> as_str |> ref_to_std_string 00:03:28 v #4151 > > 00:03:28 v #4152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #4153 > > │ ### as_str_std 00:03:28 v #4154 > > 00:03:28 v #4155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #4156 > > inl as_str_std (s : std_string) : rust.ref str = 00:03:28 v #4157 > > !\\(s, $'"$0.as_str()"') 00:03:28 v #4158 > > 00:03:28 v #4159 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:28 v #4160 > > │ ### into_boxed_str 00:03:28 v #4161 > > 00:03:28 v #4162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:28 v #4163 > > inl into_boxed_str (s : std_string) : rust.box str = 00:03:28 v #4164 > > !\\(s, $'"$0.into_boxed_str()"') 00:03:29 v #4165 > > 00:03:29 v #4166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4167 > > │ ### os_string_as_ref 00:03:29 v #4168 > > 00:03:29 v #4169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4170 > > inl os_string_as_ref (s : os_string) : rust.ref os_str = 00:03:29 v #4171 > > !\\(s, $'"$0.as_ref()"') 00:03:29 v #4172 > > 00:03:29 v #4173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4174 > > │ ### to_os_string 00:03:29 v #4175 > > 00:03:29 v #4176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4177 > > inl to_os_string (s : rust.ref os_str) : os_string = 00:03:29 v #4178 > > !\\(s, $'"$0.to_os_string()"') 00:03:29 v #4179 > > 00:03:29 v #4180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4181 > > │ ### new_c_string 00:03:29 v #4182 > > 00:03:29 v #4183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4184 > > inl new_c_string (s : std_string) : c_string = 00:03:29 v #4185 > > !\\(s, $'"std::ffi::CString::new($0).unwrap()"') 00:03:29 v #4186 > > 00:03:29 v #4187 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4188 > > │ ### os_to_str 00:03:29 v #4189 > > 00:03:29 v #4190 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4191 > > inl os_to_str (s : os_string) : optionm'.option' (rust.ref str) = 00:03:29 v #4192 > > !\\(s, $'"$0.to_str()"') 00:03:29 v #4193 > > 00:03:29 v #4194 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4195 > > │ ### from_os_str_ref 00:03:29 v #4196 > > 00:03:29 v #4197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4198 > > inl from_os_str_ref s = 00:03:29 v #4199 > > s 00:03:29 v #4200 > > |> to_os_string 00:03:29 v #4201 > > |> os_to_str 00:03:29 v #4202 > > |> optionm'.unwrap 00:03:29 v #4203 > > |> ref_to_std_string 00:03:29 v #4204 > > |> from_std_string 00:03:29 v #4205 > > 00:03:29 v #4206 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:29 v #4207 > > │ ### format_custom' 00:03:29 v #4208 > > 00:03:29 v #4209 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:29 v #4210 > > inl format_custom' (f : string) x : std_string = 00:03:29 v #4211 > > run_target function 00:03:29 v #4212 > > | Rust _ => fun () => 00:03:29 v #4213 > > !\\(x, $'"format\!(\\\"" + !f + "\\\", $0)"') 00:03:29 v #4214 > > | _ => fun () => null () 00:03:30 v #4215 > > 00:03:30 v #4216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4217 > > │ ### format_debug' 00:03:30 v #4218 > > 00:03:30 v #4219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4220 > > inl format_debug' x : std_string = 00:03:30 v #4221 > > run_target function 00:03:30 v #4222 > > | Rust _ => fun () => 00:03:30 v #4223 > > !\\(x, $'"format\!(\\\"{:?}\\\", $0)"') 00:03:30 v #4224 > > | _ => fun () => null () 00:03:30 v #4225 > > 00:03:30 v #4226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4227 > > │ ### format' 00:03:30 v #4228 > > 00:03:30 v #4229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4230 > > inl format' x : std_string = 00:03:30 v #4231 > > run_target_args (fun () => x) function 00:03:30 v #4232 > > | Rust _ => fun x => 00:03:30 v #4233 > > !\\(x, $'"format\!(\\\"{}\\\", $0)"') 00:03:30 v #4234 > > | _ => fun _ => null () 00:03:30 v #4235 > > 00:03:30 v #4236 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4237 > > │ ### format_hex' 00:03:30 v #4238 > > 00:03:30 v #4239 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4240 > > inl format_hex' x : std_string = 00:03:30 v #4241 > > !\\(x, $'"format\!(\\\"{:02x}\\\", $0)"') 00:03:30 v #4242 > > 00:03:30 v #4243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4244 > > │ ### format'' 00:03:30 v #4245 > > 00:03:30 v #4246 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4247 > > inl format'' (format : string) : std_string = 00:03:30 v #4248 > > !\($'@@$"format\!(" + !format + ")"') 00:03:30 v #4249 > > 00:03:30 v #4250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4251 > > │ ### regex 00:03:30 v #4252 > > 00:03:30 v #4253 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4254 > > nominal regex = 00:03:30 v #4255 > > `( 00:03:30 v #4256 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:30 v #4257 > > Fable.Core.Emit(\"regex::Regex\")>]]\n#endif\ntype regex_Regex = class end" 00:03:30 v #4258 > > $'' : $'regex_Regex' 00:03:30 v #4259 > > ) 00:03:30 v #4260 > > 00:03:30 v #4261 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:30 v #4262 > > │ ### regex_error 00:03:30 v #4263 > > 00:03:30 v #4264 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:30 v #4265 > > nominal regex_error = 00:03:30 v #4266 > > `( 00:03:30 v #4267 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:30 v #4268 > > Fable.Core.Emit(\"regex::Error\")>]]\n#endif\ntype regex_Error = class end" 00:03:30 v #4269 > > $'' : $'regex_Error' 00:03:30 v #4270 > > ) 00:03:31 v #4271 > > 00:03:31 v #4272 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4273 > > │ ### new_regex 00:03:31 v #4274 > > 00:03:31 v #4275 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4276 > > inl new_regex (pattern : string) : resultm.result' regex regex_error = 00:03:31 v #4277 > > !\\(pattern, $'$"regex::Regex::new(&$0)"') 00:03:31 v #4278 > > 00:03:31 v #4279 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4280 > > │ ### captures 00:03:31 v #4281 > > 00:03:31 v #4282 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4283 > > nominal regex_captures t = 00:03:31 v #4284 > > `( 00:03:31 v #4285 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:31 v #4286 > > Fable.Core.Emit(\"regex::Captures<$0>\")>]]\n#endif\ntype regex_Captures<'T> = 00:03:31 v #4287 > > class end" 00:03:31 v #4288 > > $'' : $'regex_Captures<`t>' 00:03:31 v #4289 > > ) 00:03:31 v #4290 > > 00:03:31 v #4291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4292 > > │ ### regex_capture_matches 00:03:31 v #4293 > > 00:03:31 v #4294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4295 > > nominal regex_capture_matches = 00:03:31 v #4296 > > `( 00:03:31 v #4297 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:31 v #4298 > > Fable.Core.Emit(\"regex::CaptureMatches\")>]]\n#endif\ntype regex_CaptureMatches 00:03:31 v #4299 > > = class end" 00:03:31 v #4300 > > $'' : $'regex_CaptureMatches' 00:03:31 v #4301 > > ) 00:03:31 v #4302 > > 00:03:31 v #4303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4304 > > │ ### regex_capture_names 00:03:31 v #4305 > > 00:03:31 v #4306 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4307 > > nominal regex_capture_names = 00:03:31 v #4308 > > `( 00:03:31 v #4309 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:31 v #4310 > > Fable.Core.Emit(\"regex::CaptureNames\")>]]\n#endif\ntype regex_CaptureNames = 00:03:31 v #4311 > > class end" 00:03:31 v #4312 > > $'' : $'regex_CaptureNames' 00:03:31 v #4313 > > ) 00:03:31 v #4314 > > 00:03:31 v #4315 > > inl regex_capture_names (regex : regex) : regex_capture_names = 00:03:31 v #4316 > > !\\(regex, $'$"$0.capture_names()"') 00:03:31 v #4317 > > 00:03:31 v #4318 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4319 > > │ ### match' 00:03:31 v #4320 > > 00:03:31 v #4321 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4322 > > nominal match' = 00:03:31 v #4323 > > `( 00:03:31 v #4324 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:31 v #4325 > > Fable.Core.Emit(\"regex::Match\")>]]\n#endif\ntype regex_Match = class end" 00:03:31 v #4326 > > $'' : $'regex_Match' 00:03:31 v #4327 > > ) 00:03:31 v #4328 > > 00:03:31 v #4329 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:31 v #4330 > > │ ### regex_captures_iter 00:03:31 v #4331 > > 00:03:31 v #4332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:31 v #4333 > > inl regex_captures_iter (s : rust.static_ref (rust.mut' std_string)) (regex : 00:03:31 v #4334 > > regex) : regex_capture_matches = 00:03:31 v #4335 > > inl regex = regex |> rust.emit 00:03:31 v #4336 > > !\\(regex, $'$"$0.captures_iter(!s)"') 00:03:32 v #4337 > > 00:03:32 v #4338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:32 v #4339 > > │ ### regex_captures 00:03:32 v #4340 > > 00:03:32 v #4341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:32 v #4342 > > let regex_captures (s : string) (regex : regex) : am'.vec (mapm.hash_map string 00:03:32 v #4343 > > string) = 00:03:32 v #4344 > > // inl s = join s 00:03:32 v #4345 > > // !\\(regex, $'$"$0.captures_iter(&*!s).map(|caps| 00:03:32 v #4346 > > $0.capture_names().map(|x| x.and_then(|n| Some((n, 00:03:32 v #4347 > > caps.name(n)?.as_str())))).flatten().collect()).collect()"') 00:03:32 v #4348 > > 00:03:32 v #4349 > > inl s = s |> to_std_string 00:03:32 v #4350 > > fun () => 00:03:32 v #4351 > > inl matches = 00:03:32 v #4352 > > inl s = s |> rust.new_box |> rust.box_leak 00:03:32 v #4353 > > regex |> regex_captures_iter s 00:03:32 v #4354 > > 00:03:32 v #4355 > > (!\($'"true; let _regex_captures : Vec<_> = !matches.map(|x| { //"') : 00:03:32 v #4356 > > bool) |> ignore 00:03:32 v #4357 > > 00:03:32 v #4358 > > inl fn (match' : rust.static_ref (rust.mut' (regex_captures 00:03:32 v #4359 > > rust.static_lifetime))) : mapm.hash_map string string = 00:03:32 v #4360 > > 00:03:32 v #4361 > > inl names = regex |> regex_capture_names 00:03:32 v #4362 > > 00:03:32 v #4363 > > (!\($'"true; let _regex_captures : std::collections::HashMap<_, _> = 00:03:32 v #4364 > > !names.map(|x| { //"') : bool) |> ignore 00:03:32 v #4365 > > 00:03:32 v #4366 > > inl fn (n : string) : pair string string = 00:03:32 v #4367 > > inl n' = n |> rust.clone 00:03:32 v #4368 > > 00:03:32 v #4369 > > new_pair n' !\\(n, $'$"!match'.name(&$0).map(|x| 00:03:32 v #4370 > > x.as_str()).unwrap_or(\\\"\\\").to_string().into()"') 00:03:32 v #4371 > > 00:03:32 v #4372 > > (!\\(fn !\($'"x.unwrap_or(\\\"\\\").to_string().into()"'), $'"true; 00:03:32 v #4373 > > $0 }).map(|x| std::sync::Arc::try_unwrap(x).unwrap_or_else(|x| 00:03:32 v #4374 > > (*x).clone())).collect()"') : bool) |> ignore 00:03:32 v #4375 > > 00:03:32 v #4376 > > !\($'"_regex_captures"') 00:03:32 v #4377 > > 00:03:32 v #4378 > > inl x = 00:03:32 v #4379 > > !\($'$"x"') 00:03:32 v #4380 > > |> rust.new_box 00:03:32 v #4381 > > |> rust.box_leak 00:03:32 v #4382 > > 00:03:32 v #4383 > > (!\\(fn x, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:03:32 v #4384 > > 00:03:32 v #4385 > > !\($'"_regex_captures"') 00:03:32 v #4386 > > 00:03:32 v #4387 > > |> rust.capture_move 00:03:32 v #4388 > > 00:03:32 v #4389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:32 v #4390 > > //// test 00:03:32 v #4391 > > ///! rust -d regex 00:03:32 v #4392 > > 00:03:32 v #4393 > > "fable-library-ts\\.(?<a>[[\\d.]]+)$" 00:03:32 v #4394 > > |> new_regex 00:03:32 v #4395 > > |> resultm.unwrap' 00:03:32 v #4396 > > |> regex_captures "fable_modules/fable-library-ts.4.17.0" 00:03:32 v #4397 > > |> am'.vec_map (mapm.to_vec >> am'.vec_sort_by_key id) 00:03:32 v #4398 > > |> sm'.format_debug 00:03:32 v #4399 > > |> _assert_eq ( 00:03:32 v #4400 > > ;[[ 00:03:32 v #4401 > > ;[[ "", ""; "a", "4.17.0" ]] 00:03:32 v #4402 > > |> am'.to_vec 00:03:32 v #4403 > > ]] 00:03:32 v #4404 > > |> am'.to_vec 00:03:32 v #4405 > > |> sm'.format_debug 00:03:32 v #4406 > > ) 00:03:43 v #4407 > > 00:03:43 v #4408 > > ── [ 10.99s - return value ] ─────────────────────────────────────────────────── 00:03:43 v #4409 > > │ __assert_eq / actual: "[[("", ""), ("a", "4.17.0")]]" 00:03:43 v #4410 > > expected: "[[("", ""), ("a", "4.17.0")]]" 00:03:43 v #4411 > > │ 00:03:43 v #4412 > > 00:03:43 v #4413 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #4414 > > │ ### replace_regex' 00:03:43 v #4415 > > 00:03:43 v #4416 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #4417 > > inl replace_regex' (pattern : string) (replacement : a i32 string) (s : string) 00:03:43 v #4418 > > : string = 00:03:43 v #4419 > > run_target_args (fun () => s, pattern, replacement) function 00:03:43 v #4420 > > | Rust (Native) => fun s, pattern, replacement => 00:03:43 v #4421 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:03:43 v #4422 > > !\\((regex, #s, replacement), $'$"$0.replace_all($1, &*$2)"') 00:03:43 v #4423 > > |> cow_to_std_string 00:03:43 v #4424 > > |> from_std_string 00:03:43 v #4425 > > | _ => fun _ => null () 00:03:43 v #4426 > > 00:03:43 v #4427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #4428 > > │ ### serialize 00:03:43 v #4429 > > 00:03:43 v #4430 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #4431 > > inl serialize forall t. (x : t) : resultm.result' std_string json_error = 00:03:43 v #4432 > > !\($'"serde_json::to_string(&!x)"') 00:03:43 v #4433 > > 00:03:43 v #4434 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #4435 > > │ ### deserialize 00:03:43 v #4436 > > 00:03:43 v #4437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #4438 > > inl deserialize forall t. (json : string) : resultm.result' t std_string = 00:03:43 v #4439 > > inl json = join json 00:03:43 v #4440 > > inl json = json |> as_str 00:03:43 v #4441 > > !\\(json, $'"serde_json::from_str(&$0)"') 00:03:43 v #4442 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:03:43 v #4443 > > 00:03:43 v #4444 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #4445 > > │ ### borsh_serialize 00:03:43 v #4446 > > 00:03:43 v #4447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #4448 > > inl borsh_serialize forall t. (data : t) : am'.vec u8 = 00:03:43 v #4449 > > (!\($'"true; let mut data = Vec::new()"') : bool) |> ignore 00:03:43 v #4450 > > (!\\(data, $'"true; borsh::BorshSerialize::serialize(&$0, &mut 00:03:43 v #4451 > > data).unwrap()"') : bool) |> ignore 00:03:43 v #4452 > > !\($'"data"') 00:03:43 v #4453 > > 00:03:43 v #4454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:43 v #4455 > > │ ### borsh_deserialize 00:03:43 v #4456 > > 00:03:43 v #4457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:43 v #4458 > > inl borsh_deserialize forall t. (data : array_base u8) : resultm.result' t 00:03:43 v #4459 > > std_string = 00:03:43 v #4460 > > inl data = data |> am'.as_slice 00:03:43 v #4461 > > (!\($'"true; let mut !data = !data"') : bool) |> ignore 00:03:43 v #4462 > > inl result = !\($'"borsh::BorshDeserialize::deserialize(&mut !data)"') 00:03:43 v #4463 > > result 00:03:43 v #4464 > > |> resultm.map_error' fun (x : borsh_io_error) => x |> format' 00:03:44 v #4465 > > 00:03:44 v #4466 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #4467 > > │ ### deserialize_vec 00:03:44 v #4468 > > 00:03:44 v #4469 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #4470 > > inl deserialize_vec (value : json_value) : resultm.result' (am'.vec u8) 00:03:44 v #4471 > > std_string = 00:03:44 v #4472 > > inl value = join value 00:03:44 v #4473 > > !\($'"serde_json::from_value(!value)"') 00:03:44 v #4474 > > |> resultm.map_error' fun (x : json_error) => x |> format' 00:03:44 v #4475 > > 00:03:44 v #4476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #4477 > > │ ### encode_uri_component 00:03:44 v #4478 > > 00:03:44 v #4479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #4480 > > inl encode_uri_component (s : std_string) : js_string = 00:03:44 v #4481 > > !\($'"js_sys::encode_uri_component(&!s)"') 00:03:44 v #4482 > > 00:03:44 v #4483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #4484 > > │ ### strip_prefix 00:03:44 v #4485 > > 00:03:44 v #4486 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #4487 > > inl strip_prefix (prefix : char) (s : std_string) : optionm'.option' (rust.ref 00:03:44 v #4488 > > str) = 00:03:44 v #4489 > > inl s = join s 00:03:44 v #4490 > > !\($'"!s.strip_prefix(!prefix)"') 00:03:44 v #4491 > > 00:03:44 v #4492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #4493 > > │ ### str_from_utf8 00:03:44 v #4494 > > 00:03:44 v #4495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #4496 > > inl str_from_utf8 (bytes : rust.ref (am'.slice u8)) : resultm.result' (rust.ref 00:03:44 v #4497 > > str) utf8_error = 00:03:44 v #4498 > > !\\(bytes, $'"std::str::from_utf8($0)"') 00:03:44 v #4499 > > 00:03:44 v #4500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:44 v #4501 > > │ ### string_from_utf8 00:03:44 v #4502 > > 00:03:44 v #4503 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:44 v #4504 > > inl string_from_utf8 (bytes : am'.vec u8) : resultm.result' std_string 00:03:44 v #4505 > > from_utf8_error = 00:03:44 v #4506 > > inl bytes = join bytes 00:03:44 v #4507 > > !\\(bytes, $'"std::string::String::from_utf8($0)"') 00:03:45 v #4508 > > 00:03:45 v #4509 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #4510 > > │ ### base64_decode 00:03:45 v #4511 > > 00:03:45 v #4512 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #4513 > > inl base64_decode (s : std_string) : result std_string std_string = 00:03:45 v #4514 > > fun () => 00:03:45 v #4515 > > inl s = join s 00:03:45 v #4516 > > inl bytes : resultm.result' (am'.vec u8) base64_decode_error = 00:03:45 v #4517 > > 00:03:45 v #4518 > > !\($'"base64::Engine::decode(&base64::engine::general_purpose::STANDARD, !s)"') 00:03:45 v #4519 > > bytes 00:03:45 v #4520 > > |> resultm.map_error' format' 00:03:45 v #4521 > > |> resultm.try' 00:03:45 v #4522 > > |> string_from_utf8 00:03:45 v #4523 > > |> resultm.map_error' format' 00:03:45 v #4524 > > |> fun x => 00:03:45 v #4525 > > join x () 00:03:45 v #4526 > > |> resultm.unbox 00:03:45 v #4527 > > 00:03:45 v #4528 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #4529 > > │ ### encoding' 00:03:45 v #4530 > > 00:03:45 v #4531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #4532 > > nominal encoding' = 00:03:45 v #4533 > > `( 00:03:45 v #4534 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:45 v #4535 > > Fable.Core.Emit(\"encoding_rs::Encoding\")>]]\n#endif\ntype encoding_rs_Encoding 00:03:45 v #4536 > > = class end" 00:03:45 v #4537 > > $'' : $'encoding_rs_Encoding' 00:03:45 v #4538 > > ) 00:03:45 v #4539 > > 00:03:45 v #4540 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #4541 > > │ ### encoding_utf8' 00:03:45 v #4542 > > 00:03:45 v #4543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #4544 > > inl encoding_utf8' () : rust.ref encoding' = 00:03:45 v #4545 > > !\($'"encoding_rs::UTF_8"') 00:03:45 v #4546 > > 00:03:45 v #4547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #4548 > > │ ### encoding_1252 00:03:45 v #4549 > > 00:03:45 v #4550 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #4551 > > inl encoding_1252' () : rust.ref encoding' = 00:03:45 v #4552 > > !\($'"encoding_rs::WINDOWS_1252"') 00:03:45 v #4553 > > 00:03:45 v #4554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:45 v #4555 > > │ ### encoding_encode 00:03:45 v #4556 > > 00:03:45 v #4557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:45 v #4558 > > inl encoding_encode' (encoding : rust.ref encoding') (text : string) : rust.cow 00:03:45 v #4559 > > (am'.slice u8) = 00:03:45 v #4560 > > !\\((encoding, text), $'"$0.encode(&*$1).0"') 00:03:46 v #4561 > > 00:03:46 v #4562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #4563 > > │ ### utf8_decode 00:03:46 v #4564 > > 00:03:46 v #4565 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #4566 > > inl utf8_decode (data : am'.vec u8) : resultm.result' std_string (rust.cow str) 00:03:46 v #4567 > > = 00:03:46 v #4568 > > !\($'$"encoding::Encoding::decode(encoding::all::UTF_8, &!data, 00:03:46 v #4569 > > encoding::DecoderTrap::Replace)"') 00:03:46 v #4570 > > 00:03:46 v #4571 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #4572 > > │ ### windows 00:03:46 v #4573 > > 00:03:46 v #4574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #4575 > > nominal windows t = 00:03:46 v #4576 > > `( 00:03:46 v #4577 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:03:46 v #4578 > > Fable.Core.Emit(\"std::slice::Windows<$0>\")>]]\n#endif\ntype 00:03:46 v #4579 > > std_slice_Windows<'T> = class end" 00:03:46 v #4580 > > $'' : $'std_slice_Windows<`t>' 00:03:46 v #4581 > > ) 00:03:46 v #4582 > > 00:03:46 v #4583 > > inl windows (len : unativeint) (source : am'.vec u8) : windows u8 = 00:03:46 v #4584 > > inl source = source |> rust.new_box |> rust.box_leak 00:03:46 v #4585 > > // inl source' = source |> rust.clone 00:03:46 v #4586 > > inl result = !\\(len, $'"<[[_]]>::windows(!source, $0)"') 00:03:46 v #4587 > > // source |> rust.drop 00:03:46 v #4588 > > result 00:03:46 v #4589 > > 00:03:46 v #4590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #4591 > > │ ### any 00:03:46 v #4592 > > 00:03:46 v #4593 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #4594 > > inl any forall t. (fn : string -> bool) (source : windows t) : bool = 00:03:46 v #4595 > > (!\($'"true; let mut !source = !source"') : bool) |> ignore 00:03:46 v #4596 > > inl fn' x = 00:03:46 v #4597 > > x 00:03:46 v #4598 > > |> str_from_utf8 00:03:46 v #4599 > > |> resultm.unwrap_or' #"" 00:03:46 v #4600 > > |> ref_to_std_string 00:03:46 v #4601 > > |> from_std_string 00:03:46 v #4602 > > |> fn 00:03:46 v #4603 > > !\\(fn', $'"!source.any(move |x| $0(x))"') 00:03:46 v #4604 > > 00:03:46 v #4605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #4606 > > │ ### slice_contains 00:03:46 v #4607 > > 00:03:46 v #4608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #4609 > > inl slice_contains (text : string) (source : am'.vec u8) : bool = 00:03:46 v #4610 > > fun () => 00:03:46 v #4611 > > inl source = join source 00:03:46 v #4612 > > source 00:03:46 v #4613 > > |> windows (text |> length |> (fun x => x : i32) |> convert) 00:03:46 v #4614 > > |> any ((=.) text) 00:03:46 v #4615 > > |> fun x => join x () 00:03:46 v #4616 > > 00:03:46 v #4617 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:46 v #4618 > > │ ### as_bytes 00:03:46 v #4619 > > 00:03:46 v #4620 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #4621 > > inl as_bytes (text : string) : rust.ref (am'.slice u8) = 00:03:46 v #4622 > > inl text = join text 00:03:46 v #4623 > > !\($'"!text.as_bytes()"') 00:03:47 v #4624 > > 00:03:47 v #4625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4626 > > │ ### into_bytes 00:03:47 v #4627 > > 00:03:47 v #4628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4629 > > inl into_bytes (x : std_string) : am'.vec u8 = 00:03:47 v #4630 > > !\\(x, $'$"$0.into_bytes()"') 00:03:47 v #4631 > > 00:03:47 v #4632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4633 > > │ ## python 00:03:47 v #4634 > > 00:03:47 v #4635 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4636 > > │ ### encode_utf8 00:03:47 v #4637 > > 00:03:47 v #4638 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4639 > > inl encode_utf8 (s : string) : string = 00:03:47 v #4640 > > inl encoding = "utf-8" 00:03:47 v #4641 > > backend_switch { 00:03:47 v #4642 > > Fsharp = fun () => 00:03:47 v #4643 > > open python_operators 00:03:47 v #4644 > > !\\((s, encoding), $'"$0.encode($1)"') : string 00:03:47 v #4645 > > Python = fun () => 00:03:47 v #4646 > > $'!s.encode(!encoding)' : string 00:03:47 v #4647 > > } 00:03:47 v #4648 > > 00:03:47 v #4649 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4650 > > │ ## sm' 00:03:47 v #4651 > > 00:03:47 v #4652 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4653 > > │ ### contains 00:03:47 v #4654 > > 00:03:47 v #4655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4656 > > inl contains (value : string) (s : string) : bool = 00:03:47 v #4657 > > backend_switch { 00:03:47 v #4658 > > Fsharp = fun () => $'!s.Contains !value ' : bool 00:03:47 v #4659 > > Python = fun () => $'!value in !s ' : bool 00:03:47 v #4660 > > } 00:03:47 v #4661 > > 00:03:47 v #4662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4663 > > │ ### to_string result t u 00:03:47 v #4664 > > 00:03:47 v #4665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4666 > > instance to_string result t u = fun x => 00:03:47 v #4667 > > real 00:03:47 v #4668 > > open rust 00:03:47 v #4669 > > typecase (t * u) with 00:03:47 v #4670 > > | string * string => 00:03:47 v #4671 > > match x with 00:03:47 v #4672 > > | Ok x => x 00:03:47 v #4673 > > | Error x => $'"sm\'.to_string result / Error: " + !x + ""' : string 00:03:47 v #4674 > > | std_string * std_string => 00:03:47 v #4675 > > match x with 00:03:47 v #4676 > > | Ok x => from_std_string x 00:03:47 v #4677 > > | Error x => $'"sm\'.to_string result / Error: " + string !x + ""' : 00:03:47 v #4678 > > string 00:03:47 v #4679 > > | _ => obj_to_string `u x 00:03:47 v #4680 > > 00:03:47 v #4681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:47 v #4682 > > │ ### format_exception 00:03:47 v #4683 > > 00:03:47 v #4684 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4685 > > inl format_exception (ex : exn) : string = 00:03:47 v #4686 > > run_target function 00:03:47 v #4687 > > | Fsharp (Native) => fun () => $'$"{!ex.GetType ()}: {!ex.Message}"' 00:03:47 v #4688 > > | _ => fun () => ex |> format_debug 00:03:47 v #4689 > > 00:03:47 v #4690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:47 v #4691 > > //// test 00:03:47 v #4692 > > ///! fsharp 00:03:47 v #4693 > > ///! cuda 00:03:47 v #4694 > > ///! rust 00:03:47 v #4695 > > ///! typescript 00:03:47 v #4696 > > ///! python 00:03:47 v #4697 > > 00:03:47 v #4698 > > fun () => failwith "test" 00:03:47 v #4699 > > |> _throws 00:03:47 v #4700 > > |> optionm.value 00:03:47 v #4701 > > |> sm'.format_exception 00:03:47 v #4702 > > |> _assert_eq (run_target function 00:03:47 v #4703 > > | Fsharp _ => fun () => join "System.Exception: test" 00:03:47 v #4704 > > | Cuda _ => fun () => "test" 00:03:47 v #4705 > > | Rust _ => fun () => "Exception { message: \"test\" }" 00:03:47 v #4706 > > | TypeScript _ => fun () => "Error: test" 00:03:47 v #4707 > > | Python _ => fun () => join "test" 00:03:47 v #4708 > > | _ => fun () => null () 00:03:47 v #4709 > > ) 00:03:56 v #4710 > > 00:03:56 v #4711 > > ── [ 8.09s - return value ] ──────────────────────────────────────────────────── 00:03:56 v #4712 > > │ .py output (Cuda): 00:03:56 v #4713 > > │ __assert_eq / actual: test / expected: test 00:03:56 v #4714 > > │ 00:03:56 v #4715 > > │ .rs output: 00:03:56 v #4716 > > │ __assert_eq / actual: "Exception { message: "test" }" 00:03:56 v #4717 > > expected: "Exception { message: "test" }" 00:03:56 v #4718 > > │ 00:03:56 v #4719 > > │ .ts output: 00:03:56 v #4720 > > │ __assert_eq / actual: Error: test / expected: Error: test 00:03:56 v #4721 > > │ 00:03:56 v #4722 > > │ .py output: 00:03:56 v #4723 > > │ __assert_eq / actual: test / expected: test 00:03:56 v #4724 > > │ 00:03:56 v #4725 > > │ 00:03:56 v #4726 > > 00:03:56 v #4727 > > ── [ 8.09s - stdout ] ────────────────────────────────────────────────────────── 00:03:56 v #4728 > > │ .fsx output: 00:03:56 v #4729 > > │ __assert_eq / actual: "System.Exception: test" / expected: 00:03:56 v #4730 > > "System.Exception: test" 00:03:56 v #4731 > > │ 00:03:56 v #4732 > > 00:03:56 v #4733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:56 v #4734 > > │ ### range 00:03:56 v #4735 > > 00:03:56 v #4736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:56 v #4737 > > inl range forall t. (start : am'.range t) (end : am'.range t) s = 00:03:56 v #4738 > > inl start, end = 00:03:56 v #4739 > > inl len () = 00:03:56 v #4740 > > s |> length' 00:03:56 v #4741 > > match start, end with 00:03:56 v #4742 > > | Start start, End fn => start, len |> fn 00:03:56 v #4743 > > | End start_fn, End end_fn => start_fn len, end_fn len 00:03:56 v #4744 > > s |> slice (start |> i32) ((end |> i32) - 1) 00:03:56 v #4745 > > 00:03:56 v #4746 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:56 v #4747 > > //// test 00:03:56 v #4748 > > ///! fsharp 00:03:56 v #4749 > > ///! cuda 00:03:56 v #4750 > > 00:03:56 v #4751 > > "abcde" 00:03:56 v #4752 > > |> range (am'.Start 1i32) (am'.End eval) 00:03:56 v #4753 > > |> _assert_eq "bcde" 00:03:56 v #4754 > > 00:03:56 v #4755 > > "abcde" 00:03:56 v #4756 > > |> range (am'.End fun x => x () - 4i32) (am'.End fun x => x () - 1) 00:03:56 v #4757 > > |> _assert_eq "bcd" 00:03:56 v #4758 > > 00:03:56 v #4759 > > ── [ 679.45ms - return value ] ───────────────────────────────────────────────── 00:03:56 v #4760 > > │ 00:03:56 v #4761 > > │ .py output (Cuda): 00:03:56 v #4762 > > │ __assert_eq / actual: bcde / expected: bcde 00:03:56 v #4763 > > │ __assert_eq / actual: bcd / expected: bcd 00:03:56 v #4764 > > │ 00:03:56 v #4765 > > │ 00:03:56 v #4766 > > 00:03:56 v #4767 > > ── [ 679.63ms - stdout ] ─────────────────────────────────────────────────────── 00:03:56 v #4768 > > │ .fsx output: 00:03:56 v #4769 > > │ __assert_eq / actual: "bcde" / expected: "bcde" 00:03:56 v #4770 > > │ __assert_eq / actual: "bcd" / expected: "bcd" 00:03:56 v #4771 > > │ 00:03:56 v #4772 > > 00:03:56 v #4773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:56 v #4774 > > │ ### concat_list 00:03:56 v #4775 > > 00:03:56 v #4776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:56 v #4777 > > inl concat_list s list = 00:03:56 v #4778 > > list 00:03:56 v #4779 > > |> listm'.box 00:03:56 v #4780 > > |> seq.of_list' 00:03:56 v #4781 > > |> concat s 00:03:57 v #4782 > > 00:03:57 v #4783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:57 v #4784 > > │ ### ellipsis_end 00:03:57 v #4785 > > 00:03:57 v #4786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #4787 > > let ellipsis_end (max : i64) (s : string) = 00:03:57 v #4788 > > inl len = sm.length s 00:03:57 v #4789 > > if len <= max 00:03:57 v #4790 > > then s 00:03:57 v #4791 > > else 00:03:57 v #4792 > > inl half = f64 max / 2 00:03:57 v #4793 > > inl start_half = half |> math.ceil |> i64 00:03:57 v #4794 > > inl end_half = half |> math.floor |> i64 00:03:57 v #4795 > > inl start = s |> slice 0 (start_half - 1) 00:03:57 v #4796 > > inl end = s |> slice (len - end_half) (len - 1) 00:03:57 v #4797 > > (a ;[[ start; "..."; end ]] : _ i32 _) 00:03:57 v #4798 > > |> seq.of_array 00:03:57 v #4799 > > |> concat "" 00:03:57 v #4800 > > 00:03:57 v #4801 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #4802 > > //// test 00:03:57 v #4803 > > 00:03:57 v #4804 > > "12345" 00:03:57 v #4805 > > |> ellipsis_end 2 00:03:57 v #4806 > > |> _assert_eq "1...5" 00:03:57 v #4807 > > 00:03:57 v #4808 > > "12345" 00:03:57 v #4809 > > |> ellipsis_end 3 00:03:57 v #4810 > > |> _assert_eq "12...5" 00:03:57 v #4811 > > 00:03:57 v #4812 > > "1234567" 00:03:57 v #4813 > > |> ellipsis_end 4 00:03:57 v #4814 > > |> _assert_eq "12...67" 00:03:57 v #4815 > > 00:03:57 v #4816 > > ── [ 270.32ms - stdout ] ─────────────────────────────────────────────────────── 00:03:57 v #4817 > > │ __assert_eq / actual: "1...5" / expected: "1...5" 00:03:57 v #4818 > > │ __assert_eq / actual: "12...5" / expected: "12...5" 00:03:57 v #4819 > > │ __assert_eq / actual: "12...67" / expected: "12...67" 00:03:57 v #4820 > > │ 00:03:57 v #4821 > > 00:03:57 v #4822 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:57 v #4823 > > │ ### format_ellipsis 00:03:57 v #4824 > > 00:03:57 v #4825 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #4826 > > inl format_ellipsis s = 00:03:57 v #4827 > > s 00:03:57 v #4828 > > |> format_debug 00:03:57 v #4829 > > |> ellipsis_end 400 00:03:57 v #4830 > > 00:03:57 v #4831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:03:57 v #4832 > > │ ### replace_regex 00:03:57 v #4833 > > 00:03:57 v #4834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #4835 > > let replace_regex (pattern : string) (replacement : string) (s : string) : 00:03:57 v #4836 > > string = 00:03:57 v #4837 > > run_target_args (fun () => s, pattern, replacement) function 00:03:57 v #4838 > > | Fsharp (Native) => fun s, pattern, replacement => 00:03:57 v #4839 > > $'System.Text.RegularExpressions.Regex.Replace (!s, !pattern, 00:03:57 v #4840 > > !replacement)' 00:03:57 v #4841 > > | Rust (Native) => fun s, pattern, replacement => 00:03:57 v #4842 > > inl regex = pattern |> new_regex |> resultm.unwrap' 00:03:57 v #4843 > > inl s = join s 00:03:57 v #4844 > > !\\((regex, s, replacement), $'$"$0.replace_all(&*$1, &*$2)"') 00:03:57 v #4845 > > |> cow_to_std_string 00:03:57 v #4846 > > |> from_std_string 00:03:57 v #4847 > > | _ => fun _ => null () 00:03:57 v #4848 > > 00:03:57 v #4849 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:57 v #4850 > > //// test 00:03:57 v #4851 > > ///! fsharp 00:03:57 v #4852 > > ///! rust -d regex 00:03:57 v #4853 > > 00:03:57 v #4854 > > " 123" 00:03:57 v #4855 > > |> replace_regex "\\s\\w2" "" 00:03:57 v #4856 > > |> _assert_eq "3" 00:04:03 v #4857 > > 00:04:03 v #4858 > > ── [ 5.71s - return value ] ──────────────────────────────────────────────────── 00:04:03 v #4859 > > │ .rs output (rust -d regex): 00:04:03 v #4860 > > │ __assert_eq / actual: "3" / expected: "3" 00:04:03 v #4861 > > │ 00:04:03 v #4862 > > │ 00:04:03 v #4863 > > 00:04:03 v #4864 > > ── [ 5.71s - stdout ] ────────────────────────────────────────────────────────── 00:04:03 v #4865 > > │ .fsx output: 00:04:03 v #4866 > > │ __assert_eq / actual: "3" / expected: "3" 00:04:03 v #4867 > > │ 00:04:03 v #4868 > > 00:04:03 v #4869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:03 v #4870 > > //// test 00:04:03 v #4871 > > ///! rust -d regex 00:04:03 v #4872 > > 00:04:03 v #4873 > > " let main args =\n ()\n" 00:04:03 v #4874 > > |> replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' 00:04:03 v #4875 > > "$a[[<EntryPoint>]]\n$a$b" 00:04:03 v #4876 > > |> _assert_eq " [[<EntryPoint>]]\n let main args =\n ()\n" 00:04:09 v #4877 > > 00:04:09 v #4878 > > ── [ 5.77s - return value ] ──────────────────────────────────────────────────── 00:04:09 v #4879 > > │ __assert_eq / actual: " [<EntryPoint>] 00:04:09 v #4880 > > │ let main args = 00:04:09 v #4881 > > │ () 00:04:09 v #4882 > > │ " / expected: " [<EntryPoint>] 00:04:09 v #4883 > > │ let main args = 00:04:09 v #4884 > > │ () 00:04:09 v #4885 > > │ " 00:04:09 v #4886 > > │ 00:04:09 v #4887 > > 00:04:09 v #4888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:09 v #4889 > > │ ## main 00:04:09 v #4890 > > 00:04:09 v #4891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:09 v #4892 > > inl main () = 00:04:09 v #4893 > > $'let contains x = !contains x' : () 00:04:09 v #4894 > > $'let ends_with x = !ends_with x' : () 00:04:09 v #4895 > > $'let pad_left x = !pad_left x' : () 00:04:09 v #4896 > > $'let pad_right x = !pad_right x' : () 00:04:09 v #4897 > > $'let replace x = !replace x' : () 00:04:09 v #4898 > > $'let replace_regex x = !replace_regex x' : () 00:04:09 v #4899 > > inl slice (a : i32) (b : i32) c = slice a b c 00:04:09 v #4900 > > $'let slice x = !slice x' : () 00:04:09 v #4901 > > $'let split x = !split x' : () 00:04:09 v #4902 > > $'let split_string x = !split_string x' : () 00:04:09 v #4903 > > $'let starts_with x = !starts_with x' : () 00:04:09 v #4904 > > $'let substring x = !substring x' : () 00:04:09 v #4905 > > $'let to_lower x = !to_lower x' : () 00:04:09 v #4906 > > $'let to_upper x = !to_upper x' : () 00:04:09 v #4907 > > $'let trim x = !trim x' : () 00:04:09 v #4908 > > inl trim_end x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> trim_end 00:04:09 v #4909 > > $'let trim_end x = !trim_end x' : () 00:04:09 v #4910 > > inl trim_start x = (a x : _ int _) |> am'.to_list' |> listm'.unbox |> 00:04:09 v #4911 > > trim_start 00:04:09 v #4912 > > $'let trim_start x = !trim_start x' : () 00:04:09 v #4913 > > $'let ellipsis x = !ellipsis x' : () 00:04:09 v #4914 > > $'let ellipsis_end x = !ellipsis_end x' : () 00:04:09 v #4915 > > $'let format_exception x = !format_exception x' : () 00:04:09 v #4916 > > $'let concat_array x = !concat_array x' : () 00:04:09 v #4917 > > inl concat a (b : seq.seq' string) = concat a b 00:04:09 v #4918 > > $'let concat x = !concat x' : () 00:04:09 v #4919 > > $'let join\' x = !join' x' : () 00:04:09 v #4920 > > $'let to_char_array x = !to_char_array x' : () 00:04:09 v #4921 > > 00:04:09 v #4922 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:09 v #4923 > > │ ## rust 00:04:09 v #4924 > > 00:04:09 v #4925 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:09 v #4926 > > │ ### to_string std_string 00:04:09 v #4927 > > 00:04:09 v #4928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:09 v #4929 > > open rust 00:04:09 v #4930 > > instance to_string std_string = from_std_string 00:04:10 v #4931 > 00:02:04 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 129979 } 00:04:10 v #4932 > 00:02:04 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:10 v #4933 > 00:02:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.ipynb to html 00:04:10 v #4934 > 00:02:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:10 v #4935 > 00:02:05 v #7 ! validate(nb) 00:04:11 v #4936 > 00:02:05 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:11 v #4937 > 00:02:05 v #9 ! return _pygments_highlight( 00:04:12 v #4938 > 00:02:07 v #10 ! [NbConvertApp] Writing 655419 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/sm'.dib.html 00:04:12 v #4939 > 00:02:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:04:12 v #4940 > 00:02:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:04:12 v #4941 > 00:02:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/sm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:13 v #4942 > 00:02:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:13 v #4943 > 00:02:07 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:13 v #4944 > 00:02:07 d #16 spiral.run / dib / { exit_code = 0; result_length = 130928 } 00:04:13 d #4945 runtime.execute_with_options_async / { exit_code = 0; output_length = 139886 } 00:04:13 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path sm'.dib --retries 3 00:04:13 d #4946 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/rust.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:13 v #4947 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/rust.dib", "--retries", "3"])) } 00:04:13 v #4948 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:04:14 v #4949 > > 00:04:14 v #4950 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:14 v #4951 > > │ # rust 00:04:17 v #4952 > > 00:04:17 v #4953 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 v #4954 > > //// test 00:04:17 v #4955 > > 00:04:17 v #4956 > > open testing 00:04:17 v #4957 > > 00:04:17 v #4958 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 v #4959 > > │ ## rust 00:04:17 v #4960 > > 00:04:17 v #4961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:17 v #4962 > > │ ### any_base 00:04:17 v #4963 > > 00:04:17 v #4964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:17 v #4965 > > type any_base = any 00:04:18 v #4966 > > 00:04:18 v #4967 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #4968 > > │ ### any 00:04:18 v #4969 > > 00:04:18 v #4970 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #4971 > > nominal any = 00:04:18 v #4972 > > `( 00:04:18 v #4973 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #4974 > > Fable.Core.Emit(\"core::any::Any\")>]]\ntype core_any_Any = class 00:04:18 v #4975 > > end\n#else\ntype core_any_Any = obj\n#endif\n" 00:04:18 v #4976 > > $'' : $'core_any_Any' 00:04:18 v #4977 > > ) 00:04:18 v #4978 > > 00:04:18 v #4979 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #4980 > > │ ### try 00:04:18 v #4981 > > 00:04:18 v #4982 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #4983 > > nominal try t = 00:04:18 v #4984 > > `( 00:04:18 v #4985 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #4986 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype core_ops_Try<'T> = class end" 00:04:18 v #4987 > > $'' : $'core_ops_Try<`t>' 00:04:18 v #4988 > > ) 00:04:18 v #4989 > > 00:04:18 v #4990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #4991 > > │ ### cow 00:04:18 v #4992 > > 00:04:18 v #4993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #4994 > > nominal cow t = 00:04:18 v #4995 > > `( 00:04:18 v #4996 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #4997 > > Fable.Core.Emit(\"std::borrow::Cow<$0>\")>]]\n#endif\ntype std_borrow_Cow<'T> = 00:04:18 v #4998 > > class end" 00:04:18 v #4999 > > $'' : $'std_borrow_Cow<`t>' 00:04:18 v #5000 > > ) 00:04:18 v #5001 > > 00:04:18 v #5002 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #5003 > > │ ### ref_cell 00:04:18 v #5004 > > 00:04:18 v #5005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #5006 > > nominal ref_cell t = 00:04:18 v #5007 > > `( 00:04:18 v #5008 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #5009 > > Fable.Core.Emit(\"std::cell::RefCell<$0>\")>]]\n#endif\ntype 00:04:18 v #5010 > > std_cell_RefCell<'T> = class end" 00:04:18 v #5011 > > $'' : $'std_cell_RefCell<`t>' 00:04:18 v #5012 > > ) 00:04:18 v #5013 > > 00:04:18 v #5014 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #5015 > > │ ### cell_ref 00:04:18 v #5016 > > 00:04:18 v #5017 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #5018 > > nominal cell_ref t = 00:04:18 v #5019 > > `( 00:04:18 v #5020 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #5021 > > Fable.Core.Emit(\"std::cell::Ref<$0>\")>]]\n#endif\ntype std_cell_Ref<'T> = 00:04:18 v #5022 > > class end" 00:04:18 v #5023 > > $'' : $'std_cell_Ref<`t>' 00:04:18 v #5024 > > ) 00:04:18 v #5025 > > 00:04:18 v #5026 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #5027 > > │ ### rc 00:04:18 v #5028 > > 00:04:18 v #5029 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #5030 > > nominal rc t = 00:04:18 v #5031 > > `( 00:04:18 v #5032 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #5033 > > Fable.Core.Emit(\"std::rc::Rc<$0>\")>]]\n#endif\ntype std_rc_Rc<'T> = class end" 00:04:18 v #5034 > > $'' : $'std_rc_Rc<`t>' 00:04:18 v #5035 > > ) 00:04:18 v #5036 > > 00:04:18 v #5037 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:18 v #5038 > > │ ### lifetime_ref 00:04:18 v #5039 > > 00:04:18 v #5040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:18 v #5041 > > nominal lifetime_ref (t : * -> *) u = 00:04:18 v #5042 > > `( 00:04:18 v #5043 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:18 v #5044 > > Fable.Core.Emit(\"$0\")>]]\n#endif\ntype LifetimeRef<'T> = class end" 00:04:18 v #5045 > > $'' : $'LifetimeRef<`(t u)>' 00:04:18 v #5046 > > ) 00:04:19 v #5047 > > 00:04:19 v #5048 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5049 > > │ ### lifetime_join 00:04:19 v #5050 > > 00:04:19 v #5051 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5052 > > nominal lifetime_join t u = 00:04:19 v #5053 > > `( 00:04:19 v #5054 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 + 00:04:19 v #5055 > > $1\")>]]\n#endif\ntype LifetimeJoin<'T, 'U> = class end" 00:04:19 v #5056 > > $'' : $'LifetimeJoin<`t, `u>' 00:04:19 v #5057 > > ) 00:04:19 v #5058 > > 00:04:19 v #5059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5060 > > │ ### lifetime 00:04:19 v #5061 > > 00:04:19 v #5062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5063 > > nominal lifetime t u = 00:04:19 v #5064 > > `( 00:04:19 v #5065 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"$0 00:04:19 v #5066 > > $1\")>]]\n#endif\ntype Lifetime<'T, 'U> = class end" 00:04:19 v #5067 > > $'' : $'Lifetime<`t, `u>' 00:04:19 v #5068 > > ) 00:04:19 v #5069 > > 00:04:19 v #5070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5071 > > │ ### static_lifetime 00:04:19 v #5072 > > 00:04:19 v #5073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5074 > > nominal static_lifetime = 00:04:19 v #5075 > > `( 00:04:19 v #5076 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:19 v #5077 > > Fable.Core.Emit(\"'static\")>]]\n#endif\ntype StaticLifetime = class end" 00:04:19 v #5078 > > $'' : $'StaticLifetime' 00:04:19 v #5079 > > ) 00:04:19 v #5080 > > 00:04:19 v #5081 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5082 > > │ ### ref 00:04:19 v #5083 > > 00:04:19 v #5084 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5085 > > nominal ref t = 00:04:19 v #5086 > > `( 00:04:19 v #5087 > > backend_switch `(()) `({}) { 00:04:19 v #5088 > > Fsharp = 00:04:19 v #5089 > > (fun () => 00:04:19 v #5090 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:19 v #5091 > > Fable.Core.Emit(\"&$0\")>]]\ntype Ref<'T> = class end\n#else\ntype Ref<'T> = 00:04:19 v #5092 > > 'T\n#endif\n" 00:04:19 v #5093 > > ) : () -> () 00:04:19 v #5094 > > } 00:04:19 v #5095 > > $'' : $'Ref<`t>' 00:04:19 v #5096 > > ) 00:04:19 v #5097 > > 00:04:19 v #5098 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5099 > > │ ### static_ref 00:04:19 v #5100 > > 00:04:19 v #5101 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5102 > > nominal static_ref t = ref (lifetime static_lifetime t) 00:04:19 v #5103 > > 00:04:19 v #5104 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:19 v #5105 > > │ ### weak_rc 00:04:19 v #5106 > > 00:04:19 v #5107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:19 v #5108 > > nominal weak_rc t = 00:04:19 v #5109 > > `( 00:04:19 v #5110 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:19 v #5111 > > Fable.Core.Emit(\"std::rc::Weak<$0>\")>]]\n#endif\ntype std_rc_Weak<'T> = class 00:04:19 v #5112 > > end" 00:04:19 v #5113 > > $'' : $'std_rc_Weak<`t>' 00:04:19 v #5114 > > ) 00:04:20 v #5115 > > 00:04:20 v #5116 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5117 > > │ ### box 00:04:20 v #5118 > > 00:04:20 v #5119 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5120 > > nominal box t = 00:04:20 v #5121 > > `( 00:04:20 v #5122 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:20 v #5123 > > Fable.Core.Emit(\"Box<$0>\")>]]\n#endif\ntype Box<'T> = class end" 00:04:20 v #5124 > > $'' : $'Box<`t>' 00:04:20 v #5125 > > ) 00:04:20 v #5126 > > 00:04:20 v #5127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5128 > > │ ### mut_cell 00:04:20 v #5129 > > 00:04:20 v #5130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5131 > > nominal mut_cell t = 00:04:20 v #5132 > > `( 00:04:20 v #5133 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:20 v #5134 > > Fable.Core.Emit(\"MutCell<$0>\")>]]\n#endif\ntype MutCell<'T> = class end" 00:04:20 v #5135 > > $'' : $'MutCell<`t>' 00:04:20 v #5136 > > ) 00:04:20 v #5137 > > 00:04:20 v #5138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5139 > > │ ### pin 00:04:20 v #5140 > > 00:04:20 v #5141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5142 > > nominal pin t = 00:04:20 v #5143 > > `( 00:04:20 v #5144 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:20 v #5145 > > Fable.Core.Emit(\"std::pin::Pin<$0>\")>]]\n#endif\ntype std_pin_Pin<'T> = class 00:04:20 v #5146 > > end" 00:04:20 v #5147 > > $'' : $'std_pin_Pin<`t>' 00:04:20 v #5148 > > ) 00:04:20 v #5149 > > 00:04:20 v #5150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5151 > > │ ### dyn' 00:04:20 v #5152 > > 00:04:20 v #5153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5154 > > nominal dyn' t = 00:04:20 v #5155 > > `( 00:04:20 v #5156 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"dyn 00:04:20 v #5157 > > $0\")>]]\n#endif\ntype Dyn<'T> = class end" 00:04:20 v #5158 > > $'' : $'Dyn<`t>' 00:04:20 v #5159 > > ) 00:04:20 v #5160 > > 00:04:20 v #5161 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5162 > > │ ### fn' 00:04:20 v #5163 > > 00:04:20 v #5164 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5165 > > nominal fn' t = 00:04:20 v #5166 > > `( 00:04:20 v #5167 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"Fn() 00:04:20 v #5168 > > -> $0\")>]]\n#endif\ntype Fn<'T> = class end" 00:04:20 v #5169 > > $'' : $'Fn<`t>' 00:04:20 v #5170 > > ) 00:04:20 v #5171 > > 00:04:20 v #5172 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:20 v #5173 > > │ ### action_fn 00:04:20 v #5174 > > 00:04:20 v #5175 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:20 v #5176 > > nominal action_fn t = 00:04:20 v #5177 > > `( 00:04:20 v #5178 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:20 v #5179 > > Fable.Core.Emit(\"Fn($0)\")>]]\n#endif\ntype ActionFn<'T> = class end" 00:04:20 v #5180 > > $'' : $'ActionFn<`t>' 00:04:20 v #5181 > > ) 00:04:21 v #5182 > > 00:04:21 v #5183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5184 > > │ ### action_fn2 00:04:21 v #5185 > > 00:04:21 v #5186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5187 > > nominal action_fn2 t u = 00:04:21 v #5188 > > `( 00:04:21 v #5189 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5190 > > Fable.Core.Emit(\"Fn($0, $1)\")>]]\n#endif\ntype ActionFn2<'T, 'U> = class end" 00:04:21 v #5191 > > $'' : $'ActionFn2<`t, `u>' 00:04:21 v #5192 > > ) 00:04:21 v #5193 > > 00:04:21 v #5194 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5195 > > │ ### fn_once 00:04:21 v #5196 > > 00:04:21 v #5197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5198 > > nominal fn_once t = 00:04:21 v #5199 > > `( 00:04:21 v #5200 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5201 > > Fable.Core.Emit(\"FnOnce() -> $0\")>]]\n#endif\ntype FnOnce<'T> = class end" 00:04:21 v #5202 > > $'' : $'FnOnce<`t>' 00:04:21 v #5203 > > ) 00:04:21 v #5204 > > 00:04:21 v #5205 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5206 > > │ ### fn_unit 00:04:21 v #5207 > > 00:04:21 v #5208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5209 > > nominal fn_unit = 00:04:21 v #5210 > > `( 00:04:21 v #5211 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5212 > > Fable.Core.Emit(\"Fn()\")>]]\n#endif\ntype FnUnit = class end" 00:04:21 v #5213 > > $'' : $'FnUnit' 00:04:21 v #5214 > > ) 00:04:21 v #5215 > > 00:04:21 v #5216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5217 > > │ ### func0 00:04:21 v #5218 > > 00:04:21 v #5219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5220 > > nominal func0 t = 00:04:21 v #5221 > > `( 00:04:21 v #5222 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5223 > > Fable.Core.Emit(\"Func0<$0>\")>]]\n#endif\ntype Func0<'T> = class end" 00:04:21 v #5224 > > $'' : $'Func0<`t>' 00:04:21 v #5225 > > ) 00:04:21 v #5226 > > 00:04:21 v #5227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5228 > > │ ### func1 00:04:21 v #5229 > > 00:04:21 v #5230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5231 > > nominal func1 t u = 00:04:21 v #5232 > > `( 00:04:21 v #5233 > > typecase t with 00:04:21 v #5234 > > | () => `func0 `u 00:04:21 v #5235 > > | _ => 00:04:21 v #5236 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5237 > > Fable.Core.Emit(\"Func1<$0, $1>\")>]]\n#endif\ntype Func0<'T, 'U> = class end" 00:04:21 v #5238 > > $'' : $'Func0<`t, `u>' 00:04:21 v #5239 > > ) 00:04:21 v #5240 > > 00:04:21 v #5241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5242 > > │ ### impl 00:04:21 v #5243 > > 00:04:21 v #5244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5245 > > nominal impl t = 00:04:21 v #5246 > > `( 00:04:21 v #5247 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"impl 00:04:21 v #5248 > > $0\")>]]\n#endif\ntype Impl<'T> = class end" 00:04:21 v #5249 > > $'' : $'Impl<`t>' 00:04:21 v #5250 > > ) 00:04:21 v #5251 > > 00:04:21 v #5252 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:21 v #5253 > > │ ### mut' 00:04:21 v #5254 > > 00:04:21 v #5255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:21 v #5256 > > nominal mut' t = 00:04:21 v #5257 > > `( 00:04:21 v #5258 > > backend_switch `(()) `({}) { 00:04:21 v #5259 > > Fsharp = 00:04:21 v #5260 > > (fun () => 00:04:21 v #5261 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:21 v #5262 > > Fable.Core.Emit(\"mut $0\")>]]\n#endif\ntype Mut<'T> = class end" 00:04:21 v #5263 > > ) : () -> () 00:04:21 v #5264 > > } 00:04:21 v #5265 > > $'' : $'Mut<`t>' 00:04:21 v #5266 > > ) 00:04:22 v #5267 > > 00:04:22 v #5268 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5269 > > │ ### ref_mut 00:04:22 v #5270 > > 00:04:22 v #5271 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5272 > > nominal ref_mut t = 00:04:22 v #5273 > > `( 00:04:22 v #5274 > > backend_switch `(()) `({}) { 00:04:22 v #5275 > > Fsharp = 00:04:22 v #5276 > > (fun () => 00:04:22 v #5277 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:22 v #5278 > > Fable.Core.Emit(\"std::cell::RefMut<$0>\")>]]\n#endif\ntype std_cell_RefMut<'T> 00:04:22 v #5279 > > = class end" 00:04:22 v #5280 > > ) : () -> () 00:04:22 v #5281 > > } 00:04:22 v #5282 > > $'' : $'std_cell_RefMut<`t>' 00:04:22 v #5283 > > ) 00:04:22 v #5284 > > 00:04:22 v #5285 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5286 > > │ ### send 00:04:22 v #5287 > > 00:04:22 v #5288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5289 > > nominal send t = 00:04:22 v #5290 > > `( 00:04:22 v #5291 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:22 v #5292 > > Fable.Core.Emit(\"Send\")>]]\n#endif\ntype Send<'T> = class end" 00:04:22 v #5293 > > $'' : lifetime_join t $'Send<`t>' 00:04:22 v #5294 > > ) 00:04:22 v #5295 > > 00:04:22 v #5296 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5297 > > │ ### emit_expr 00:04:22 v #5298 > > 00:04:22 v #5299 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5300 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:04:22 v #5301 > > $'Fable.Core.RustInterop.emitRustExpr !args !code ' 00:04:22 v #5302 > > 00:04:22 v #5303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5304 > > │ ### (~!\\) 00:04:22 v #5305 > > 00:04:22 v #5306 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5307 > > inl (~!\) forall t. (code : string) : t = 00:04:22 v #5308 > > emit_expr () code 00:04:22 v #5309 > > 00:04:22 v #5310 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5311 > > │ ### (~!\\\\) 00:04:22 v #5312 > > 00:04:22 v #5313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5314 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:04:22 v #5315 > > emit_expr args code 00:04:22 v #5316 > > 00:04:22 v #5317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5318 > > │ ### ptr 00:04:22 v #5319 > > 00:04:22 v #5320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5321 > > nominal ptr t = 00:04:22 v #5322 > > `( 00:04:22 v #5323 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:22 v #5324 > > Fable.Core.Emit(\"*const $0\")>]]\n#endif\ntype Ptr<'T> = class end" 00:04:22 v #5325 > > $'' : $'Ptr<`t>' 00:04:22 v #5326 > > ) 00:04:22 v #5327 > > 00:04:22 v #5328 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:22 v #5329 > > │ ### ptr_read 00:04:22 v #5330 > > 00:04:22 v #5331 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:22 v #5332 > > inl ptr_read forall t. (x : ptr t) : t = 00:04:22 v #5333 > > !\\(x, $'"std::ptr::read($0)"') 00:04:23 v #5334 > > 00:04:23 v #5335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:23 v #5336 > > │ ### u128 00:04:23 v #5337 > > 00:04:23 v #5338 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5339 > > nominal u128 = 00:04:23 v #5340 > > `( 00:04:23 v #5341 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:23 v #5342 > > Fable.Core.Emit(\"u128\")>]]\n#endif\ntype u128 = class end" 00:04:23 v #5343 > > $'' : $'u128' 00:04:23 v #5344 > > ) 00:04:23 v #5345 > > 00:04:23 v #5346 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5347 > > inl u128 forall t. (x : t) : u128 = 00:04:23 v #5348 > > !\\(x, $'"$0 as u128"') 00:04:23 v #5349 > > 00:04:23 v #5350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:23 v #5351 > > │ ### f64 00:04:23 v #5352 > > 00:04:23 v #5353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5354 > > inl f64 forall t. (x : t) : f64 = 00:04:23 v #5355 > > !\\(x, $'"$0 as f64"') 00:04:23 v #5356 > > 00:04:23 v #5357 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:23 v #5358 > > │ ### unwrap_0 00:04:23 v #5359 > > 00:04:23 v #5360 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5361 > > inl unwrap_0 forall (t : * -> *) u. (x : t u) : u = 00:04:23 v #5362 > > !\\(x, $'"$0.0"') 00:04:23 v #5363 > > 00:04:23 v #5364 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:23 v #5365 > > │ ### unwrap_0_ref 00:04:23 v #5366 > > 00:04:23 v #5367 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5368 > > inl unwrap_0_ref forall (t : * -> *) u. (x : ref (t u)) : ref u = 00:04:23 v #5369 > > !\\(x, $'"&$0.0"') 00:04:23 v #5370 > > 00:04:23 v #5371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:23 v #5372 > > │ ### len 00:04:23 v #5373 > > 00:04:23 v #5374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:23 v #5375 > > inl len forall t u {uint; int}. (x : t) : u = 00:04:23 v #5376 > > !\($'$"!x.len()"') 00:04:24 v #5377 > > 00:04:24 v #5378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5379 > > │ ### len' 00:04:24 v #5380 > > 00:04:24 v #5381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5382 > > inl len' forall t u {uint; int}. (x : t) : u = 00:04:24 v #5383 > > !\\(x, $'$"$0.len()"') 00:04:24 v #5384 > > 00:04:24 v #5385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5386 > > │ ### emit 00:04:24 v #5387 > > 00:04:24 v #5388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5389 > > inl emit forall t. (x : t) : t = 00:04:24 v #5390 > > !\\(x, $'"$0"') 00:04:24 v #5391 > > 00:04:24 v #5392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5393 > > │ ### emit' 00:04:24 v #5394 > > 00:04:24 v #5395 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5396 > > inl emit' forall t. (x : t) : t = 00:04:24 v #5397 > > (!\\(x, $'$"true; let !x = $0"') : bool) |> ignore 00:04:24 v #5398 > > x 00:04:24 v #5399 > > 00:04:24 v #5400 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5401 > > │ ### clone 00:04:24 v #5402 > > 00:04:24 v #5403 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5404 > > inl clone forall t. (x : t) : t = 00:04:24 v #5405 > > !\\(x, $'"$0.clone()"') 00:04:24 v #5406 > > 00:04:24 v #5407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5408 > > │ ### dbg 00:04:24 v #5409 > > 00:04:24 v #5410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5411 > > inl dbg forall t. (x : t) : t = 00:04:24 v #5412 > > !\\(x, $'"dbg\!($0)"') 00:04:24 v #5413 > > 00:04:24 v #5414 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5415 > > │ ### new_box 00:04:24 v #5416 > > 00:04:24 v #5417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5418 > > inl new_box forall t. (x : t) : box t = 00:04:24 v #5419 > > !\\(x, $'"Box::new($0)"') 00:04:24 v #5420 > > 00:04:24 v #5421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:24 v #5422 > > │ ### new_rc 00:04:24 v #5423 > > 00:04:24 v #5424 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:24 v #5425 > > inl new_rc forall t. (x : t) : rc t = 00:04:24 v #5426 > > !\\(x, $'"std::rc::Rc::new($0)"') 00:04:25 v #5427 > > 00:04:25 v #5428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5429 > > │ ### rc_clone 00:04:25 v #5430 > > 00:04:25 v #5431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5432 > > inl rc_clone forall t. (x : rc t) : rc t = 00:04:25 v #5433 > > !\\(x, $'"std::rc::Rc::clone(&$0)"') 00:04:25 v #5434 > > 00:04:25 v #5435 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5436 > > │ ### rc_unwrap_or_clone 00:04:25 v #5437 > > 00:04:25 v #5438 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5439 > > inl rc_unwrap_or_clone forall t. (x : rc t) : t = 00:04:25 v #5440 > > !\\(x, $'"std::rc::Rc::unwrap_or_clone($0)"') 00:04:25 v #5441 > > 00:04:25 v #5442 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5443 > > │ ### rc_downgrade 00:04:25 v #5444 > > 00:04:25 v #5445 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5446 > > inl rc_downgrade forall t. (x : rc t) : weak_rc t = 00:04:25 v #5447 > > !\\(x, $'"std::rc::Rc::downgrade(&$0)"') 00:04:25 v #5448 > > 00:04:25 v #5449 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5450 > > │ ### new_ref_cell 00:04:25 v #5451 > > 00:04:25 v #5452 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5453 > > inl new_ref_cell forall t. (x : t) : ref_cell t = 00:04:25 v #5454 > > !\($'"std::cell::RefCell::new(!x)"') 00:04:25 v #5455 > > 00:04:25 v #5456 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5457 > > │ ### ref_cell_borrow 00:04:25 v #5458 > > 00:04:25 v #5459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5460 > > inl ref_cell_borrow forall t. (x : rc (ref_cell t)) : cell_ref t = 00:04:25 v #5461 > > !\\(x, $'"std::cell::RefCell::borrow(&std::rc::Rc::clone(&$0))"') 00:04:25 v #5462 > > 00:04:25 v #5463 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:25 v #5464 > > │ ### ref_cell_borrow_mut 00:04:25 v #5465 > > 00:04:25 v #5466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:25 v #5467 > > inl ref_cell_borrow_mut forall t. (x : rc (ref_cell t)) : mut' t = 00:04:25 v #5468 > > !\\(x, $'"std::cell::RefCell::borrow_mut(&std::rc::Rc::clone(&$0))"') 00:04:26 v #5469 > > 00:04:26 v #5470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5471 > > │ ### ref_leak 00:04:26 v #5472 > > 00:04:26 v #5473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5474 > > inl ref_leak forall t. (x : cell_ref t) : ref t = 00:04:26 v #5475 > > !\\(x, $'"std::cell::Ref::leak($0)"') 00:04:26 v #5476 > > 00:04:26 v #5477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5478 > > │ ### to_mut 00:04:26 v #5479 > > 00:04:26 v #5480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5481 > > inl to_mut forall t. (x : t) : () = 00:04:26 v #5482 > > (!\($'"true; // 1"') : bool) |> ignore 00:04:26 v #5483 > > !\($'"let mut !x = !x"') : () 00:04:26 v #5484 > > // (!\($'"true; !x"') : bool) |> ignore 00:04:26 v #5485 > > // !\($'"!x"') 00:04:26 v #5486 > > // inl result = !\($'"!x"') : mut' t 00:04:26 v #5487 > > // !\($'"!result"') 00:04:26 v #5488 > > // inl result = !\($'"*/ // a"') : mut' t 00:04:26 v #5489 > > // inl result = !\($'"!x"') : mut' t 00:04:26 v #5490 > > // result |> fun x => $'!x |> unbox // b' 00:04:26 v #5491 > > 00:04:26 v #5492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5493 > > │ ### to_ref 00:04:26 v #5494 > > 00:04:26 v #5495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5496 > > inl to_ref forall t. (x : t) : ref t = 00:04:26 v #5497 > > !\\(x, $'"&$0"') 00:04:26 v #5498 > > 00:04:26 v #5499 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5500 > > │ ### to_ref_mut 00:04:26 v #5501 > > 00:04:26 v #5502 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5503 > > inl to_ref_mut forall t. (x : t) : ref (mut' t) = 00:04:26 v #5504 > > x |> to_mut 00:04:26 v #5505 > > !\\(x, $'"&mut $0"') 00:04:26 v #5506 > > 00:04:26 v #5507 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5508 > > │ ### to_ref_mut' 00:04:26 v #5509 > > 00:04:26 v #5510 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5511 > > inl to_ref_mut' forall t. (x : ref_mut (ref (mut' t))) : ref (mut' t) = 00:04:26 v #5512 > > x |> to_mut 00:04:26 v #5513 > > !\\(x, $'"&mut $0"') 00:04:26 v #5514 > > 00:04:26 v #5515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #5516 > > │ ### ref_cell_borrow_mut' 00:04:26 v #5517 > > 00:04:26 v #5518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #5519 > > inl ref_cell_borrow_mut' forall t. (x : rc (ref_cell (ref (mut' t)))) : ref 00:04:26 v #5520 > > (mut' t) = 00:04:26 v #5521 > > inl x = x |> rc_clone 00:04:26 v #5522 > > inl x : ref_mut (ref (mut' t)) = !\\(x, 00:04:26 v #5523 > > $'"std::cell::RefCell::borrow_mut(&$0)"') 00:04:26 v #5524 > > x |> to_ref_mut' 00:04:27 v #5525 > > 00:04:27 v #5526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5527 > > │ ### ref_map 00:04:27 v #5528 > > 00:04:27 v #5529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5530 > > inl ref_map forall t u. (fn : t -> u) (x : ref t) : ref u = 00:04:27 v #5531 > > !\($'"!fn(!x)"') 00:04:27 v #5532 > > 00:04:27 v #5533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5534 > > │ ### ref_eval 00:04:27 v #5535 > > 00:04:27 v #5536 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5537 > > inl ref_eval forall t u. (fn : t -> u) (ref : ref t) : u = 00:04:27 v #5538 > > !\\(fn, $'"$0(!ref.clone())"') 00:04:27 v #5539 > > 00:04:27 v #5540 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5541 > > │ ### cow_as_ref 00:04:27 v #5542 > > 00:04:27 v #5543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5544 > > inl cow_as_ref forall t. (s : cow t) : ref t = 00:04:27 v #5545 > > !\\(s, $'"$0.as_ref()"') 00:04:27 v #5546 > > 00:04:27 v #5547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5548 > > │ ### from_mut 00:04:27 v #5549 > > 00:04:27 v #5550 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5551 > > inl from_mut forall t. (x : mut' t) : t = 00:04:27 v #5552 > > !\\(x, $'"$0"') 00:04:27 v #5553 > > 00:04:27 v #5554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5555 > > │ ### box_fn 00:04:27 v #5556 > > 00:04:27 v #5557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5558 > > inl box_fn forall t. (x : () -> ()) : box t = 00:04:27 v #5559 > > inl x = join x 00:04:27 v #5560 > > !\($'"Box::new(move || !x())"') 00:04:27 v #5561 > > 00:04:27 v #5562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5563 > > │ ### box_pin 00:04:27 v #5564 > > 00:04:27 v #5565 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5566 > > inl box_pin forall t. (x : t) : pin (box t) = 00:04:27 v #5567 > > !\\(x, $'"Box::pin($0)"') 00:04:27 v #5568 > > 00:04:27 v #5569 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:27 v #5570 > > │ ### deref 00:04:27 v #5571 > > 00:04:27 v #5572 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:27 v #5573 > > inl deref forall t. (ref : ref t) : t = 00:04:27 v #5574 > > !\\(ref, $'"*$0"') 00:04:28 v #5575 > > 00:04:28 v #5576 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5577 > > │ ### deref_mut 00:04:28 v #5578 > > 00:04:28 v #5579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5580 > > inl deref_mut forall t. (x : ref (mut' t)) : t = 00:04:28 v #5581 > > !\\(x, $'"*$0"') 00:04:28 v #5582 > > 00:04:28 v #5583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5584 > > │ ### clone_deref 00:04:28 v #5585 > > 00:04:28 v #5586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5587 > > inl clone_deref forall t. (ref : ref t) : t = 00:04:28 v #5588 > > !\\(ref, $'"$0.clone()"') 00:04:28 v #5589 > > 00:04:28 v #5590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5591 > > │ ### from_ref 00:04:28 v #5592 > > 00:04:28 v #5593 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5594 > > inl from_ref forall t. (ref : ref t) : t = 00:04:28 v #5595 > > !\($'"!ref"') 00:04:28 v #5596 > > 00:04:28 v #5597 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5598 > > │ ### from_ref_mut 00:04:28 v #5599 > > 00:04:28 v #5600 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5601 > > inl from_ref_mut forall t. (ref : ref (mut' t)) : t = 00:04:28 v #5602 > > !\($'"!ref"') 00:04:28 v #5603 > > 00:04:28 v #5604 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5605 > > │ ### reref 00:04:28 v #5606 > > 00:04:28 v #5607 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5608 > > inl reref forall t (u : * -> *). (x : ref (u t)) : ref t = 00:04:28 v #5609 > > !\($'$"&*!x"') 00:04:28 v #5610 > > 00:04:28 v #5611 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:28 v #5612 > > │ ### into 00:04:28 v #5613 > > 00:04:28 v #5614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:28 v #5615 > > inl into forall t u. (x : t) : u = 00:04:28 v #5616 > > !\($'"!x.into()"') 00:04:29 v #5617 > > 00:04:29 v #5618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5619 > > │ ### ops_deref 00:04:29 v #5620 > > 00:04:29 v #5621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5622 > > inl ops_deref forall t. (ref : t) : t = 00:04:29 v #5623 > > !\\(ref, $'"core::ops::Deref::deref(&$0)"') 00:04:29 v #5624 > > 00:04:29 v #5625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5626 > > │ ### func0_eval 00:04:29 v #5627 > > 00:04:29 v #5628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5629 > > inl func0_eval forall t. (x : func0 t) : t = 00:04:29 v #5630 > > !\\(x, $'"$0()"') 00:04:29 v #5631 > > 00:04:29 v #5632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5633 > > │ ### func0_move 00:04:29 v #5634 > > 00:04:29 v #5635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5636 > > inl func0_move forall t. (fn : func0 t) : t = 00:04:29 v #5637 > > inl fn = join fn 00:04:29 v #5638 > > !\($'"(move || !fn())()"') 00:04:29 v #5639 > > 00:04:29 v #5640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5641 > > │ ### func1_move 00:04:29 v #5642 > > 00:04:29 v #5643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5644 > > inl func1_move forall t u. (x : t) (fn : func1 t u) : u = 00:04:29 v #5645 > > inl fn = join fn 00:04:29 v #5646 > > inl is_unit : bool = 00:04:29 v #5647 > > real 00:04:29 v #5648 > > typecase t with 00:04:29 v #5649 > > | () => true 00:04:29 v #5650 > > | _ => false 00:04:29 v #5651 > > inl result = 00:04:29 v #5652 > > if is_unit 00:04:29 v #5653 > > then !\($'"(move || !fn())()"') : u 00:04:29 v #5654 > > else 00:04:29 v #5655 > > $'let func1_move_x = !x //' : () 00:04:29 v #5656 > > inl func1_move_x : infer = $'func1_move_x' 00:04:29 v #5657 > > !\\(func1_move_x, $'"(move |x| !fn(x))($0)"') : u 00:04:29 v #5658 > > result 00:04:29 v #5659 > > 00:04:29 v #5660 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5661 > > │ ### func0_from 00:04:29 v #5662 > > 00:04:29 v #5663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5664 > > inl func0_from forall t. (fn : () -> t) : func0 t = 00:04:29 v #5665 > > inl result' : unit = $'()' 00:04:29 v #5666 > > (!\($'$"true; let _func0_from_!result' = Func0::from(move || {{ //"') : 00:04:29 v #5667 > > bool) |> ignore 00:04:29 v #5668 > > inl is_unit : bool = 00:04:29 v #5669 > > real 00:04:29 v #5670 > > typecase t with 00:04:29 v #5671 > > | () => true 00:04:29 v #5672 > > | _ => false 00:04:29 v #5673 > > inl result = 00:04:29 v #5674 > > if is_unit |> not 00:04:29 v #5675 > > then fn () 00:04:29 v #5676 > > else 00:04:29 v #5677 > > (fn >> ignore) () 00:04:29 v #5678 > > // (!\($'$"true; // rust.func0_from"') : bool) |> ignore 00:04:29 v #5679 > > $'// rust.func0_from / is_unit' 00:04:29 v #5680 > > if is_unit 00:04:29 v #5681 > > then (!\($'$"true; /*"') : bool) |> ignore 00:04:29 v #5682 > > else (!\\(result, $'$"true; $0 /*"') : bool) |> ignore 00:04:29 v #5683 > > (!\($'$"*/ }}); //"') : bool) |> ignore 00:04:29 v #5684 > > !\($'$"_func0_from_!result'"') 00:04:29 v #5685 > > 00:04:29 v #5686 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:29 v #5687 > > │ ### func1_from 00:04:29 v #5688 > > 00:04:29 v #5689 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:29 v #5690 > > inl func1_from forall t u. (fn : t -> u) : func1 t u = 00:04:29 v #5691 > > inl result' : unit = $'()' 00:04:29 v #5692 > > inl is_unit : bool = 00:04:29 v #5693 > > real 00:04:29 v #5694 > > typecase u with 00:04:29 v #5695 > > | () => true 00:04:29 v #5696 > > | _ => false 00:04:29 v #5697 > > inl is_unit' : bool = 00:04:29 v #5698 > > real 00:04:29 v #5699 > > typecase t with 00:04:29 v #5700 > > | () => true 00:04:29 v #5701 > > | _ => false 00:04:29 v #5702 > > if is_unit 00:04:29 v #5703 > > then (!\($'$"true; let _func1_from_!result' = Func0::from(move || {{ //"') : 00:04:29 v #5704 > > bool) |> ignore 00:04:29 v #5705 > > else (!\($'$"true; let _func1_from_!result' = Func1::from(move |value| {{ 00:04:29 v #5706 > > //"') : bool) |> ignore 00:04:29 v #5707 > > 00:04:29 v #5708 > > inl result = 00:04:29 v #5709 > > if is_unit' 00:04:29 v #5710 > > then !\($'$"()"') 00:04:29 v #5711 > > else !\($'$"value"') 00:04:29 v #5712 > > |> fn 00:04:29 v #5713 > > 00:04:29 v #5714 > > if is_unit 00:04:29 v #5715 > > then (!\($'$"true; /*"') : bool) |> ignore 00:04:29 v #5716 > > else 00:04:29 v #5717 > > $'let func1_from_result = !result //' : () 00:04:29 v #5718 > > inl func1_from_result : infer = $'func1_from_result' 00:04:29 v #5719 > > (!\\(func1_from_result, $'$"true; $0 /*"') : bool) |> ignore 00:04:29 v #5720 > > (!\($'$"*/ }}); //"') : bool) |> ignore 00:04:29 v #5721 > > !\($'$"_func1_from_!result'"') 00:04:30 v #5722 > > 00:04:30 v #5723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5724 > > │ ### new_func0 00:04:30 v #5725 > > 00:04:30 v #5726 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5727 > > inl new_func0 forall t. (fn : () -> t) : func0 t = 00:04:30 v #5728 > > !\\(fn, $'"Func0::new(|| $0())"') 00:04:30 v #5729 > > 00:04:30 v #5730 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5731 > > │ ### move 00:04:30 v #5732 > > 00:04:30 v #5733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5734 > > inl move forall t. (fn : () -> t) : func0 t = 00:04:30 v #5735 > > !\\(fn, $'"Func0::new(move || $0())"') 00:04:30 v #5736 > > 00:04:30 v #5737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5738 > > │ ### to_static_ref_unbox 00:04:30 v #5739 > > 00:04:30 v #5740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5741 > > inl to_static_ref_unbox forall t. (x : ref t) : static_ref t = 00:04:30 v #5742 > > x |> unbox 00:04:30 v #5743 > > 00:04:30 v #5744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5745 > > │ ### from_static_ref_unbox 00:04:30 v #5746 > > 00:04:30 v #5747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5748 > > inl from_static_ref_unbox forall t. (x : static_ref t) : ref t = 00:04:30 v #5749 > > x |> unbox 00:04:30 v #5750 > > 00:04:30 v #5751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5752 > > │ ### box_leak 00:04:30 v #5753 > > 00:04:30 v #5754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5755 > > inl box_leak forall t. (x : box t) : static_ref (mut' t) = 00:04:30 v #5756 > > !\\(x, $'"Box::leak($0)"') 00:04:30 v #5757 > > 00:04:30 v #5758 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:30 v #5759 > > │ ### drop 00:04:30 v #5760 > > 00:04:30 v #5761 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:30 v #5762 > > inl drop forall t. (x : t) : () = 00:04:30 v #5763 > > (!\\(x, $'"true; drop($0)"') : bool) |> ignore 00:04:31 v #5764 > > 00:04:31 v #5765 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:31 v #5766 > > │ ### break 00:04:31 v #5767 > > 00:04:31 v #5768 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:31 v #5769 > > inl break () : () = 00:04:31 v #5770 > > (!\($'"true; break"') : bool) |> ignore 00:04:31 v #5771 > > 00:04:31 v #5772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:31 v #5773 > > │ ### fix_closure' 00:04:31 v #5774 > > 00:04:31 v #5775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:31 v #5776 > > inl fix_closure' forall t. (depth : u8 * u8) (x : t) : string = 00:04:31 v #5777 > > inl rec loop text (acc : string) n : string = 00:04:31 v #5778 > > if n <= 0 00:04:31 v #5779 > > then acc 00:04:31 v #5780 > > else loop text (acc +. text) (n - 1) 00:04:31 v #5781 > > inl a = depth |> fst |> loop "}" "" 00:04:31 v #5782 > > inl b = depth |> snd |> loop "{" "" 00:04:31 v #5783 > > inl is_unit : bool = 00:04:31 v #5784 > > real 00:04:31 v #5785 > > typecase t with 00:04:31 v #5786 > > | () => true 00:04:31 v #5787 > > | _ => false 00:04:31 v #5788 > > $'let x = !x //' : () 00:04:31 v #5789 > > inl x : infer = $'x' 00:04:31 v #5790 > > inl result' : unit = $'()' 00:04:31 v #5791 > > run_target_args (fun () => x) function 00:04:31 v #5792 > > | Rust _ => fun x => 00:04:31 v #5793 > > if is_unit 00:04:31 v #5794 > > then false 00:04:31 v #5795 > > else 00:04:31 v #5796 > > (!\\(x, $'$"true; let _fix_closure_!result' = $0"') : bool) |> 00:04:31 v #5797 > > ignore 00:04:31 v #5798 > > true 00:04:31 v #5799 > > | _ => fun x' => false 00:04:31 v #5800 > > |> ignore 00:04:31 v #5801 > > $'$"true; _fix_closure_!result' " + !a + "); " + !b + " 00:04:31 v #5802 > > rust.fix_closure\'"' 00:04:31 v #5803 > > 00:04:31 v #5804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:31 v #5805 > > //// test 00:04:31 v #5806 > > //// print_code 00:04:31 v #5807 > > 00:04:31 v #5808 > > fix_closure' (3, 2) 0i32 00:04:31 v #5809 > > |> _assert_eq "true; _fix_closure_v9 }}}); {{ // rust.fix_closure'" 00:04:32 v #5810 > > 00:04:32 v #5811 > > ── [ 693.78ms - stdout ] ─────────────────────────────────────────────────────── 00:04:32 v #5812 > > │ let rec method1 (v0 : bool) : bool = 00:04:32 v #5813 > > │ v0 00:04:32 v #5814 > > │ and closure0 (v0 : string) () : unit = 00:04:32 v #5815 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:04:32 v #5816 > > │ v1 v0 00:04:32 v #5817 > > │ and method0 () : unit = 00:04:32 v #5818 > > │ let v0 : string = "" 00:04:32 v #5819 > > │ let v1 : string = "}" 00:04:32 v #5820 > > │ let v2 : string = v0 + v1 00:04:32 v #5821 > > │ let v3 : string = v2 + v1 00:04:32 v #5822 > > │ let v4 : string = v3 + v1 00:04:32 v #5823 > > │ let v5 : string = "{" 00:04:32 v #5824 > > │ let v6 : string = v0 + v5 00:04:32 v #5825 > > │ let v7 : string = v6 + v5 00:04:32 v #5826 > > │ let x = 0 00:04:32 v #5827 > > │ let v8 : _ = x 00:04:32 v #5828 > > │ let v9 : unit = () 00:04:32 v #5829 > > │ let v10 : unit = () 00:04:32 v #5830 > > │ 00:04:32 v #5831 > > │ #if FABLE_COMPILER || WASM || CONTRACT 00:04:32 v #5832 > > │ 00:04:32 v #5833 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT 00:04:32 v #5834 > > │ let v11 : string = $"true; let _fix_closure_v9 = $0" 00:04:32 v #5835 > > │ let v12 : bool = Fable.Core.RustInterop.emitRustExpr v8 00:04:32 v #5836 > > v11 00:04:32 v #5837 > > │ let _run_target_args'_v10 = true 00:04:32 v #5838 > > │ #endif 00:04:32 v #5839 > > │ #if FABLE_COMPILER_RUST && WASM 00:04:32 v #5840 > > │ let v13 : string = $"true; let _fix_closure_v9 = $0" 00:04:32 v #5841 > > │ let v14 : bool = Fable.Core.RustInterop.emitRustExpr v8 00:04:32 v #5842 > > v13 00:04:32 v #5843 > > │ let _run_target_args'_v10 = true 00:04:32 v #5844 > > │ #endif 00:04:32 v #5845 > > │ #if FABLE_COMPILER_RUST && CONTRACT 00:04:32 v #5846 > > │ let v15 : string = $"true; let _fix_closure_v9 = $0" 00:04:32 v #5847 > > │ let v16 : bool = Fable.Core.RustInterop.emitRustExpr v8 00:04:32 v #5848 > > v15 00:04:32 v #5849 > > │ let _run_target_args'_v10 = true 00:04:32 v #5850 > > │ #endif 00:04:32 v #5851 > > │ #if FABLE_COMPILER_TYPESCRIPT 00:04:32 v #5852 > > │ let _run_target_args'_v10 = false 00:04:32 v #5853 > > │ #endif 00:04:32 v #5854 > > │ #if FABLE_COMPILER_PYTHON 00:04:32 v #5855 > > │ let _run_target_args'_v10 = false 00:04:32 v #5856 > > │ #endif 00:04:32 v #5857 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && 00:04:32 v #5858 > > !FABLE_COMPILER_PYTHON 00:04:32 v #5859 > > │ let _run_target_args'_v10 = false 00:04:32 v #5860 > > │ #endif 00:04:32 v #5861 > > │ #else 00:04:32 v #5862 > > │ let _run_target_args'_v10 = false 00:04:32 v #5863 > > │ #endif 00:04:32 v #5864 > > │ let v17 : bool = _run_target_args'_v10 00:04:32 v #5865 > > │ let v19 : string = $"true; _fix_closure_v9 " + v4 + "); " 00:04:32 v #5866 > > + v7 + " // rust.fix_closure'" 00:04:32 v #5867 > > │ let v20 : bool = v19 = "true; _fix_closure_v9 }}}); {{ 00:04:32 v #5868 > > rust.fix_closure'" 00:04:32 v #5869 > > │ let v22 : bool = 00:04:32 v #5870 > > │ if v20 then 00:04:32 v #5871 > > │ true 00:04:32 v #5872 > > │ else 00:04:32 v #5873 > > │ method1(v20) 00:04:32 v #5874 > > │ let v23 : string = "__assert_eq" 00:04:32 v #5875 > > │ let v24 : string = "true; _fix_closure_v9 }}}); {{ 00:04:32 v #5876 > > rust.fix_closure'" 00:04:32 v #5877 > > │ let v25 : string = $"{v23} / actual: %A{v19} / expected: 00:04:32 v #5878 > > %A{v24}" 00:04:32 v #5879 > > │ let v28 : unit = () 00:04:32 v #5880 > > │ let v29 : (unit -> unit) = closure0(v25) 00:04:32 v #5881 > > │ let v30 : unit = (fun () -> v29 (); v28) () 00:04:32 v #5882 > > │ let v32 : bool = v22 = false 00:04:32 v #5883 > > │ if v32 then 00:04:32 v #5884 > > │ failwith<unit> v25 00:04:32 v #5885 > > │ method0() 00:04:32 v #5886 > > │ 00:04:32 v #5887 > > │ __assert_eq / actual: "true; _fix_closure_v9 }}}); {{ 00:04:32 v #5888 > > rust.fix_closure'" / expected: "true; _fix_closure_v9 }}}); {{ 00:04:32 v #5889 > > rust.fix_closure'" 00:04:32 v #5890 > > │ 00:04:32 v #5891 > > 00:04:32 v #5892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #5893 > > //// test 00:04:32 v #5894 > > //// print_code 00:04:32 v #5895 > > 00:04:32 v #5896 > > fix_closure' (0, 0) () 00:04:32 v #5897 > > |> _assert_eq "true; _fix_closure_v1 ); // rust.fix_closure'" 00:04:32 v #5898 > > 00:04:32 v #5899 > > ── [ 188.08ms - stdout ] ─────────────────────────────────────────────────────── 00:04:32 v #5900 > > │ let rec method1 (v0 : bool) : bool = 00:04:32 v #5901 > > │ v0 00:04:32 v #5902 > > │ and closure0 (v0 : string) () : unit = 00:04:32 v #5903 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:04:32 v #5904 > > │ v1 v0 00:04:32 v #5905 > > │ and method0 () : unit = 00:04:32 v #5906 > > │ let x = () 00:04:32 v #5907 > > │ let v0 : _ = x 00:04:32 v #5908 > > │ let v1 : unit = () 00:04:32 v #5909 > > │ let v2 : unit = () 00:04:32 v #5910 > > │ 00:04:32 v #5911 > > │ #if FABLE_COMPILER || WASM || CONTRACT 00:04:32 v #5912 > > │ 00:04:32 v #5913 > > │ #if FABLE_COMPILER_RUST && !WASM && !CONTRACT 00:04:32 v #5914 > > │ let _run_target_args'_v2 = false 00:04:32 v #5915 > > │ #endif 00:04:32 v #5916 > > │ #if FABLE_COMPILER_RUST && WASM 00:04:32 v #5917 > > │ let _run_target_args'_v2 = false 00:04:32 v #5918 > > │ #endif 00:04:32 v #5919 > > │ #if FABLE_COMPILER_RUST && CONTRACT 00:04:32 v #5920 > > │ let _run_target_args'_v2 = false 00:04:32 v #5921 > > │ #endif 00:04:32 v #5922 > > │ #if FABLE_COMPILER_TYPESCRIPT 00:04:32 v #5923 > > │ let _run_target_args'_v2 = false 00:04:32 v #5924 > > │ #endif 00:04:32 v #5925 > > │ #if FABLE_COMPILER_PYTHON 00:04:32 v #5926 > > │ let _run_target_args'_v2 = false 00:04:32 v #5927 > > │ #endif 00:04:32 v #5928 > > │ #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && 00:04:32 v #5929 > > !FABLE_COMPILER_PYTHON 00:04:32 v #5930 > > │ let _run_target_args'_v2 = false 00:04:32 v #5931 > > │ #endif 00:04:32 v #5932 > > │ #else 00:04:32 v #5933 > > │ let _run_target_args'_v2 = false 00:04:32 v #5934 > > │ #endif 00:04:32 v #5935 > > │ let v3 : bool = _run_target_args'_v2 00:04:32 v #5936 > > │ let v5 : string = "" 00:04:32 v #5937 > > │ let v6 : string = $"true; _fix_closure_v1 " + v5 + "); " 00:04:32 v #5938 > > + v5 + " // rust.fix_closure'" 00:04:32 v #5939 > > │ let v7 : bool = v6 = "true; _fix_closure_v1 ); 00:04:32 v #5940 > > rust.fix_closure'" 00:04:32 v #5941 > > │ let v9 : bool = 00:04:32 v #5942 > > │ if v7 then 00:04:32 v #5943 > > │ true 00:04:32 v #5944 > > │ else 00:04:32 v #5945 > > │ method1(v7) 00:04:32 v #5946 > > │ let v10 : string = "__assert_eq" 00:04:32 v #5947 > > │ let v11 : string = "true; _fix_closure_v1 ); 00:04:32 v #5948 > > rust.fix_closure'" 00:04:32 v #5949 > > │ let v12 : string = $"{v10} / actual: %A{v6} / expected: 00:04:32 v #5950 > > %A{v11}" 00:04:32 v #5951 > > │ let v15 : unit = () 00:04:32 v #5952 > > │ let v16 : (unit -> unit) = closure0(v12) 00:04:32 v #5953 > > │ let v17 : unit = (fun () -> v16 (); v15) () 00:04:32 v #5954 > > │ let v19 : bool = v9 = false 00:04:32 v #5955 > > │ if v19 then 00:04:32 v #5956 > > │ failwith<unit> v12 00:04:32 v #5957 > > │ method0() 00:04:32 v #5958 > > │ 00:04:32 v #5959 > > │ __assert_eq / actual: "true; _fix_closure_v1 ); 00:04:32 v #5960 > > rust.fix_closure'" / expected: "true; _fix_closure_v1 ); // rust.fix_closure'" 00:04:32 v #5961 > > │ 00:04:32 v #5962 > > 00:04:32 v #5963 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:32 v #5964 > > │ ### fix_closure 00:04:32 v #5965 > > 00:04:32 v #5966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #5967 > > inl fix_closure depth x = 00:04:32 v #5968 > > inl code = fix_closure' depth x 00:04:32 v #5969 > > (!\code : bool) |> ignore 00:04:32 v #5970 > > 00:04:32 v #5971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:32 v #5972 > > │ ### loop 00:04:32 v #5973 > > 00:04:32 v #5974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #5975 > > inl loop (depth : i32) (fn : () -> ()) : () = 00:04:32 v #5976 > > (!\($'"true; loop { // rust.loop"') : bool) |> ignore 00:04:32 v #5977 > > fn () 00:04:32 v #5978 > > 00:04:32 v #5979 > > listm.init depth id 00:04:32 v #5980 > > |> listm.iter fun n => 00:04:32 v #5981 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:04:32 v #5982 > > 00:04:32 v #5983 > > (!\($'"true; } // rust.loop"') : bool) |> ignore 00:04:32 v #5984 > > 00:04:32 v #5985 > > listm.init depth id 00:04:32 v #5986 > > |> listm.iter fun n => 00:04:32 v #5987 > > (!\($'"true; { // rust.loop"') : bool) |> ignore 00:04:32 v #5988 > > 00:04:32 v #5989 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:32 v #5990 > > │ ### capture 00:04:32 v #5991 > > 00:04:32 v #5992 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #5993 > > inl capture forall t. (fn : () -> t) : t = 00:04:32 v #5994 > > (!\($'"true; let _capture = (|| { //"') : bool) |> ignore 00:04:32 v #5995 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:04:32 v #5996 > > !\($'"_capture"') 00:04:32 v #5997 > > 00:04:32 v #5998 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:32 v #5999 > > │ ### capture_move 00:04:32 v #6000 > > 00:04:32 v #6001 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #6002 > > inl capture_move forall t. (fn : () -> t) : t = 00:04:32 v #6003 > > (!\($'"true; let _capture_move = (move || { //"') : bool) |> ignore 00:04:32 v #6004 > > (!\\(fn (), $'"true; $0 })()"') : bool) |> ignore 00:04:32 v #6005 > > !\($'"_capture_move"') 00:04:32 v #6006 > > 00:04:32 v #6007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:32 v #6008 > > │ ### type_emit 00:04:32 v #6009 > > 00:04:32 v #6010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:32 v #6011 > > nominal type_emit t = 00:04:32 v #6012 > > `( 00:04:32 v #6013 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; Fable.Core.Emit(\"*/ $0 00:04:32 v #6014 > > /*\")>]]\n#endif\ntype TypeEmit<'T> = class end" 00:04:32 v #6015 > > $'' : $'TypeEmit<`t>' 00:04:32 v #6016 > > ) 00:04:33 v #6017 > > 00:04:33 v #6018 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:33 v #6019 > > │ ### partial_eq_wrapper 00:04:33 v #6020 > > 00:04:33 v #6021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #6022 > > nominal partial_eq_wrapper t = 00:04:33 v #6023 > > `( 00:04:33 v #6024 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:33 v #6025 > > Fable.Core.Emit(\"PartialEqWrapper<$0>\")>]]\n#endif\ntype PartialEqWrapper<'T> 00:04:33 v #6026 > > = class end" 00:04:33 v #6027 > > $'' : $'PartialEqWrapper<`t>' 00:04:33 v #6028 > > ) 00:04:33 v #6029 > > 00:04:33 v #6030 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:33 v #6031 > > │ ### new_partial_eq_wrapper 00:04:33 v #6032 > > 00:04:33 v #6033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #6034 > > inl new_partial_eq_wrapper forall t. 00:04:33 v #6035 > > (eq_fn : ref (partial_eq_wrapper t) -> ref (partial_eq_wrapper t) -> bool) 00:04:33 v #6036 > > (x : t) 00:04:33 v #6037 > > : partial_eq_wrapper t 00:04:33 v #6038 > > = 00:04:33 v #6039 > > inl struct () = 00:04:33 v #6040 > > !\($'"} //"') : () 00:04:33 v #6041 > > 00:04:33 v #6042 > > !\($'"#[[derive( //"') : () 00:04:33 v #6043 > > !\($'" Debug, //"') : () 00:04:33 v #6044 > > !\($'" Clone, //"') : () 00:04:33 v #6045 > > !\($'")]] //"') : () 00:04:33 v #6046 > > !\($'"pub struct PartialEqWrapper<T>(T); /*"') : () 00:04:33 v #6047 > > 00:04:33 v #6048 > > !\($'"*/ impl PartialEq for PartialEqWrapper< /*"') : () 00:04:33 v #6049 > > (null () : type_emit t) |> ignore 00:04:33 v #6050 > > !\($'"*/ > { //"') : () 00:04:33 v #6051 > > 00:04:33 v #6052 > > !\($'"fn eq(&self, other: &Self) -> bool { //"') : () 00:04:33 v #6053 > > 00:04:33 v #6054 > > inl self : ref (partial_eq_wrapper t) = !\($'$"self"') 00:04:33 v #6055 > > inl other : ref (partial_eq_wrapper t) = !\($'$"other"') 00:04:33 v #6056 > > 00:04:33 v #6057 > > self 00:04:33 v #6058 > > |> eq_fn other 00:04:33 v #6059 > > |> fun x => !\($'$"!x //"') 00:04:33 v #6060 > > 00:04:33 v #6061 > > !\($'"} } } fn _main() { { { //"') : () 00:04:33 v #6062 > > 00:04:33 v #6063 > > $'let _!struct = true' : () 00:04:33 v #6064 > > 00:04:33 v #6065 > > !\\(x, $'"PartialEqWrapper($0)"') 00:04:33 v #6066 > > 00:04:33 v #6067 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:33 v #6068 > > │ ### clone_wrapper 00:04:33 v #6069 > > 00:04:33 v #6070 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #6071 > > nominal clone_wrapper t = 00:04:33 v #6072 > > `( 00:04:33 v #6073 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:04:33 v #6074 > > Fable.Core.Emit(\"CloneWrapper<$0>\")>]]\n#endif\ntype CloneWrapper<'T> = class 00:04:33 v #6075 > > end" 00:04:33 v #6076 > > $'' : $'CloneWrapper<`t>' 00:04:33 v #6077 > > ) 00:04:33 v #6078 > > 00:04:33 v #6079 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:33 v #6080 > > │ ### new_clone_wrapper 00:04:33 v #6081 > > 00:04:33 v #6082 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #6083 > > inl new_clone_wrapper forall t. 00:04:33 v #6084 > > (clone_fn : ref (clone_wrapper t) -> ref (clone_wrapper t)) 00:04:33 v #6085 > > (x : t) 00:04:33 v #6086 > > : clone_wrapper t 00:04:33 v #6087 > > = 00:04:33 v #6088 > > inl struct () = 00:04:33 v #6089 > > !\($'"} //"') : () 00:04:33 v #6090 > > 00:04:33 v #6091 > > !\($'"#[[derive( //"') : () 00:04:33 v #6092 > > !\($'" Debug, //"') : () 00:04:33 v #6093 > > !\($'")]] //"') : () 00:04:33 v #6094 > > !\($'"pub struct CloneWrapper<T>(T); /*"') : () 00:04:33 v #6095 > > 00:04:33 v #6096 > > !\($'"*/ impl Clone for CloneWrapper< /*"') : () 00:04:33 v #6097 > > (null () : type_emit t) |> ignore 00:04:33 v #6098 > > !\($'"*/ > { //"') : () 00:04:33 v #6099 > > 00:04:33 v #6100 > > !\($'"fn clone(&self) -> Self { //"') : () 00:04:33 v #6101 > > 00:04:33 v #6102 > > inl self : ref (clone_wrapper t) = !\($'$"self"') 00:04:33 v #6103 > > 00:04:33 v #6104 > > self 00:04:33 v #6105 > > |> clone_fn 00:04:33 v #6106 > > |> fun x => !\($'$"!x.clone() //"') 00:04:33 v #6107 > > 00:04:33 v #6108 > > !\($'"} } } fn _main() { { { //"') : () 00:04:33 v #6109 > > 00:04:33 v #6110 > > $'let _!struct = true' : () 00:04:33 v #6111 > > 00:04:33 v #6112 > > !\\(x, $'"CloneWrapper($0)"') 00:04:33 v #6113 > > 00:04:33 v #6114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:33 v #6115 > > │ ### concat 00:04:33 v #6116 > > 00:04:33 v #6117 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:33 v #6118 > > inl concat forall (t : * -> *) u. (x : t (t u)) : t u = 00:04:33 v #6119 > > !\($'$"!x.concat()"') 00:04:34 v #6120 > 00:00:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 47330 } 00:04:34 v #6121 > 00:00:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:34 v #6122 > 00:00:21 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.ipynb to html 00:04:34 v #6123 > 00:00:21 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:34 v #6124 > 00:00:21 v #7 ! validate(nb) 00:04:35 v #6125 > 00:00:22 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:35 v #6126 > 00:00:22 v #9 ! return _pygments_highlight( 00:04:36 v #6127 > 00:00:22 v #10 ! [NbConvertApp] Writing 469196 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html 00:04:36 v #6128 > 00:00:22 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:04:36 v #6129 > 00:00:22 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:04:36 v #6130 > 00:00:22 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/rust.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:36 v #6131 > 00:00:23 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:36 v #6132 > 00:00:23 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:36 v #6133 > 00:00:23 d #16 spiral.run / dib / { exit_code = 0; result_length = 48291 } 00:04:36 d #6134 runtime.execute_with_options_async / { exit_code = 0; output_length = 53315 } 00:04:36 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/rust.dib --retries 3 00:04:36 d #6135 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:36 v #6136 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/testing.dib", "--retries", "3"])) } 00:04:36 v #6137 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:04:37 v #6138 > > 00:04:37 v #6139 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:37 v #6140 > > │ # rust/testing 00:04:40 v #6141 > > 00:04:40 v #6142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:40 v #6143 > > open rust.rust_operators 00:04:40 v #6144 > > 00:04:40 v #6145 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:40 v #6146 > > //// test 00:04:40 v #6147 > > 00:04:40 v #6148 > > open testing 00:04:41 v #6149 > > 00:04:41 v #6150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:41 v #6151 > > │ ### run_tests' 00:04:41 v #6152 > > 00:04:41 v #6153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:41 v #6154 > > inl run_tests' tests = 00:04:41 v #6155 > > (!\($'"true; () //"') : bool) |> ignore 00:04:41 v #6156 > > 00:04:41 v #6157 > > inl fields = reflection.get_record_fields tests 00:04:41 v #6158 > > 00:04:41 v #6159 > > fields 00:04:41 v #6160 > > |> listm.iter fun name, (fn : string -> ()) => 00:04:41 v #6161 > > !\($'"} /* /*"') 00:04:41 v #6162 > > (!\($'$"*/ #[[test]] fn " + !name + "() { //"') : bool) |> ignore 00:04:41 v #6163 > > fn name 00:04:41 v #6164 > > 00:04:41 v #6165 > > fields 00:04:41 v #6166 > > |> listm.iter fun _ => 00:04:41 v #6167 > > !\($'"{ //"') : () 00:04:41 v #6168 > > 00:04:41 v #6169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:41 v #6170 > > //// test 00:04:41 v #6171 > > 00:04:41 v #6172 > > inl run test = 00:04:41 v #6173 > > if env.get_environment_variable "TEST" = "1" 00:04:41 v #6174 > > then () 00:04:41 v #6175 > > else 00:04:41 v #6176 > > runtime.execution_options fun x => { x with 00:04:41 v #6177 > > command = "cargo test -- --show-output" 00:04:41 v #6178 > > working_directory = file_system.get_source_directory () |> Some |> 00:04:41 v #6179 > > optionm'.box 00:04:41 v #6180 > > environment_variables = ;[[ "TEST", "1" ]] 00:04:41 v #6181 > > } 00:04:41 v #6182 > > |> runtime.execute_with_options 00:04:41 v #6183 > > |> fun exit_code, result => 00:04:41 v #6184 > > exit_code |> _assert_eq 0i32 00:04:41 v #6185 > > result |> _assert sm'.contains "test result: ok. 1 passed; 0 failed; 00:04:41 v #6186 > > 0 ignored;" 00:04:41 v #6187 > > 00:04:41 v #6188 > > $'let tests () = !test ()' : () 00:04:41 v #6189 > > 00:04:41 v #6190 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:41 v #6191 > > //// test 00:04:41 v #6192 > > ///! rust -d encoding_rs encoding_rs_io 00:04:41 v #6193 > > 00:04:41 v #6194 > > fun () => 00:04:41 v #6195 > > run_tests' { 00:04:41 v #6196 > > a = _assert_eq "a" 00:04:41 v #6197 > > } 00:04:41 v #6198 > > |> run 00:04:59 v #6199 > > 00:04:59 v #6200 > > ── [ 17.91s - return value ] ─────────────────────────────────────────────────── 00:04:59 v #6201 > > │ 00:00:00 d #1 runtime.execute_with_options / { 00:04:59 v #6202 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = { 00:04:59 v #6203 > > command = cargo test -- --show-output; cancellation_token = None; 00:04:59 v #6204 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin = 00:04:59 v #6205 > > None; trace = true; working_directory = Some( 00:04:59 v #6206 > > │ 00:04:59 v #6207 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:04:59 v #6208 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f", 00:04:59 v #6209 > > │ ) } } 00:04:59 v #6210 > > │ 00:00:00 v #2 ! Compiling 00:04:59 v #6211 > > spiral_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f v0.0.1 00:04:59 v #6212 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:04:59 v #6213 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f) 00:04:59 v #6214 > > │ 00:00:00 v #3 ! Finished `test` profile 00:04:59 v #6215 > > [unoptimized + debuginfo] target(s) in 0.48s 00:04:59 v #6216 > > │ 00:00:00 v #4 ! Running unittests spiral.rs 00:04:59 v #6217 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:04:59 v #6218 > > al_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f-a03ba3056fcf 00:04:59 v #6219 > > 4539) 00:04:59 v #6220 > > │ 00:00:00 v #5 > 00:04:59 v #6221 > > │ 00:00:00 v #6 > running 1 test 00:04:59 v #6222 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok 00:04:59 v #6223 > > │ 00:00:00 v #8 > 00:04:59 v #6224 > > │ 00:00:00 v #9 > successes: 00:04:59 v #6225 > > │ 00:00:00 v #10 > 00:04:59 v #6226 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout 00:04:59 v #6227 > > ---- 00:04:59 v #6228 > > │ 00:00:00 v #12 > __assert_eq / actual: "a" / expected: 00:04:59 v #6229 > > "a" 00:04:59 v #6230 > > │ 00:00:00 v #13 > 00:04:59 v #6231 > > │ 00:00:00 v #14 > 00:04:59 v #6232 > > │ 00:00:00 v #15 > successes: 00:04:59 v #6233 > > │ 00:00:00 v #16 > module_6ff740fe::Spiral::a 00:04:59 v #6234 > > │ 00:00:00 v #17 > 00:04:59 v #6235 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0 00:04:59 v #6236 > > ignored; 0 measured; 0 filtered out; finished in 0.00s 00:04:59 v #6237 > > │ 00:00:00 v #19 > 00:04:59 v #6238 > > │ 00:00:00 v #20 runtime.execute_with_options / result 00:04:59 v #6239 > > { exit_code = 0; std_trace_length = 864 } 00:04:59 v #6240 > > │ __assert_eq / actual: 0 / expected: 0 00:04:59 v #6241 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 00:04:59 v #6242 > > ignored;" / expected: " Compiling 00:04:59 v #6243 > > spiral_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f v0.0.1 00:04:59 v #6244 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:04:59 v #6245 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f) 00:04:59 v #6246 > > │ Finished `test` profile [unoptimized + 00:04:59 v #6247 > > debuginfo] target(s) in 0.48s 00:04:59 v #6248 > > │ Running unittests spiral.rs 00:04:59 v #6249 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:04:59 v #6250 > > al_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f-a03ba3056fcf 00:04:59 v #6251 > > 4539) 00:04:59 v #6252 > > │ 00:04:59 v #6253 > > │ running 1 test 00:04:59 v #6254 > > │ test module_6ff740fe::Spiral::a ... ok 00:04:59 v #6255 > > │ 00:04:59 v #6256 > > │ successes: 00:04:59 v #6257 > > │ 00:04:59 v #6258 > > │ ---- module_6ff740fe::Spiral::a stdout ---- 00:04:59 v #6259 > > │ __assert_eq / actual: "a" / expected: "a" 00:04:59 v #6260 > > │ 00:04:59 v #6261 > > │ 00:04:59 v #6262 > > │ successes: 00:04:59 v #6263 > > │ module_6ff740fe::Spiral::a 00:04:59 v #6264 > > │ 00:04:59 v #6265 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 00:04:59 v #6266 > > filtered out; finished in 0.00s 00:04:59 v #6267 > > │ " 00:04:59 v #6268 > > │ 00:04:59 v #6269 > > 00:04:59 v #6270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:59 v #6271 > > │ ### run_tests 00:04:59 v #6272 > > 00:04:59 v #6273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:59 v #6274 > > inl run_tests tests : () = 00:04:59 v #6275 > > real 00:04:59 v #6276 > > inl tests = 00:04:59 v #6277 > > real_core.record_map 00:04:59 v #6278 > > fun { key value } => 00:04:59 v #6279 > > (fun _ => value ()) : string -> () 00:04:59 v #6280 > > tests 00:04:59 v #6281 > > run_tests' `(`tests) tests 00:04:59 v #6282 > > 00:04:59 v #6283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:59 v #6284 > > //// test 00:04:59 v #6285 > > ///! rust -d encoding_rs encoding_rs_io 00:04:59 v #6286 > > 00:04:59 v #6287 > > fun () => 00:04:59 v #6288 > > run_tests { 00:04:59 v #6289 > > a = fun () => "a" |> _assert_eq "a" 00:04:59 v #6290 > > } 00:04:59 v #6291 > > |> run 00:05:07 v #6292 > > 00:05:07 v #6293 > > ── [ 8.31s - return value ] ──────────────────────────────────────────────────── 00:05:07 v #6294 > > │ 00:00:00 d #1 runtime.execute_with_options / { 00:05:07 v #6295 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = { 00:05:07 v #6296 > > command = cargo test -- --show-output; cancellation_token = None; 00:05:07 v #6297 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin = 00:05:07 v #6298 > > None; trace = true; working_directory = Some( 00:05:07 v #6299 > > │ 00:05:07 v #6300 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:05:07 v #6301 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f", 00:05:07 v #6302 > > │ ) } } 00:05:07 v #6303 > > │ 00:00:00 v #2 ! Compiling 00:05:07 v #6304 > > spiral_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f v0.0.1 00:05:07 v #6305 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:05:07 v #6306 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f) 00:05:07 v #6307 > > │ 00:00:00 v #3 ! Finished `test` profile 00:05:07 v #6308 > > [unoptimized + debuginfo] target(s) in 0.48s 00:05:07 v #6309 > > │ 00:00:00 v #4 ! Running unittests spiral.rs 00:05:07 v #6310 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:05:07 v #6311 > > al_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f-a03ba3056fcf 00:05:07 v #6312 > > 4539) 00:05:07 v #6313 > > │ 00:00:00 v #5 > 00:05:07 v #6314 > > │ 00:00:00 v #6 > running 1 test 00:05:07 v #6315 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok 00:05:07 v #6316 > > │ 00:00:00 v #8 > 00:05:07 v #6317 > > │ 00:00:00 v #9 > successes: 00:05:07 v #6318 > > │ 00:00:00 v #10 > 00:05:07 v #6319 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout 00:05:07 v #6320 > > ---- 00:05:07 v #6321 > > │ 00:00:00 v #12 > __assert_eq / actual: "a" / expected: 00:05:07 v #6322 > > "a" 00:05:07 v #6323 > > │ 00:00:00 v #13 > 00:05:07 v #6324 > > │ 00:00:00 v #14 > 00:05:07 v #6325 > > │ 00:00:00 v #15 > successes: 00:05:07 v #6326 > > │ 00:00:00 v #16 > module_6ff740fe::Spiral::a 00:05:07 v #6327 > > │ 00:00:00 v #17 > 00:05:07 v #6328 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0 00:05:07 v #6329 > > ignored; 0 measured; 0 filtered out; finished in 0.00s 00:05:07 v #6330 > > │ 00:00:00 v #19 > 00:05:07 v #6331 > > │ 00:00:00 v #20 runtime.execute_with_options / result 00:05:07 v #6332 > > { exit_code = 0; std_trace_length = 864 } 00:05:07 v #6333 > > │ __assert_eq / actual: 0 / expected: 0 00:05:07 v #6334 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 00:05:07 v #6335 > > ignored;" / expected: " Compiling 00:05:07 v #6336 > > spiral_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f v0.0.1 00:05:07 v #6337 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/8a345924 00:05:07 v #6338 > > fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f) 00:05:07 v #6339 > > │ Finished `test` profile [unoptimized + 00:05:07 v #6340 > > debuginfo] target(s) in 0.48s 00:05:07 v #6341 > > │ Running unittests spiral.rs 00:05:07 v #6342 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:05:07 v #6343 > > al_8a345924fe4f08c618651b8702952c052aaed4de5cf4267d56c6d912daa3945f-a03ba3056fcf 00:05:07 v #6344 > > 4539) 00:05:07 v #6345 > > │ 00:05:07 v #6346 > > │ running 1 test 00:05:07 v #6347 > > │ test module_6ff740fe::Spiral::a ... ok 00:05:07 v #6348 > > │ 00:05:07 v #6349 > > │ successes: 00:05:07 v #6350 > > │ 00:05:07 v #6351 > > │ ---- module_6ff740fe::Spiral::a stdout ---- 00:05:07 v #6352 > > │ __assert_eq / actual: "a" / expected: "a" 00:05:07 v #6353 > > │ 00:05:07 v #6354 > > │ 00:05:07 v #6355 > > │ successes: 00:05:07 v #6356 > > │ module_6ff740fe::Spiral::a 00:05:07 v #6357 > > │ 00:05:07 v #6358 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 00:05:07 v #6359 > > filtered out; finished in 0.00s 00:05:07 v #6360 > > │ " 00:05:07 v #6361 > > │ 00:05:07 v #6362 > > 00:05:07 v #6363 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:07 v #6364 > > │ ### run_tests_log 00:05:07 v #6365 > > 00:05:07 v #6366 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #6367 > > inl run_tests_log tests : () = 00:05:07 v #6368 > > real 00:05:07 v #6369 > > inl tests = 00:05:07 v #6370 > > real_core.record_map 00:05:07 v #6371 > > fun { key value } => 00:05:07 v #6372 > > (fun _ => value false) : () -> () 00:05:07 v #6373 > > tests 00:05:07 v #6374 > > run_tests `(`tests) tests 00:05:07 v #6375 > > 00:05:07 v #6376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #6377 > > //// test 00:05:07 v #6378 > > ///! rust -d encoding_rs encoding_rs_io 00:05:07 v #6379 > > 00:05:07 v #6380 > > fun () => 00:05:07 v #6381 > > run_tests_log { 00:05:07 v #6382 > > a = _assert_eq false 00:05:07 v #6383 > > } 00:05:07 v #6384 > > |> run 00:05:25 v #6385 > > 00:05:25 v #6386 > > ── [ 17.22s - return value ] ─────────────────────────────────────────────────── 00:05:25 v #6387 > > │ 00:00:00 d #1 runtime.execute_with_options / { 00:05:25 v #6388 > > file_name = cargo; arguments = ["test", "--", "--show-output"]; options = { 00:05:25 v #6389 > > command = cargo test -- --show-output; cancellation_token = None; 00:05:25 v #6390 > > environment_variables = Array(MutCell([("TEST", "1")])); on_line = None; stdin = 00:05:25 v #6391 > > None; trace = true; working_directory = Some( 00:05:25 v #6392 > > │ 00:05:25 v #6393 > > "/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/9e76bec0 00:05:25 v #6394 > > 54019c702617b389196b97cffec19e66edb9966b52d887e21d41efab", 00:05:25 v #6395 > > │ ) } } 00:05:25 v #6396 > > │ 00:00:00 v #2 ! Compiling 00:05:25 v #6397 > > spiral_9e76bec054019c702617b389196b97cffec19e66edb9966b52d887e21d41efab v0.0.1 00:05:25 v #6398 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/9e76bec0 00:05:25 v #6399 > > 54019c702617b389196b97cffec19e66edb9966b52d887e21d41efab) 00:05:25 v #6400 > > │ 00:00:00 v #3 ! Finished `test` profile 00:05:25 v #6401 > > [unoptimized + debuginfo] target(s) in 0.46s 00:05:25 v #6402 > > │ 00:00:00 v #4 ! Running unittests spiral.rs 00:05:25 v #6403 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:05:25 v #6404 > > al_9e76bec054019c702617b389196b97cffec19e66edb9966b52d887e21d41efab-6c547b9035b0 00:05:25 v #6405 > > f624) 00:05:25 v #6406 > > │ 00:00:00 v #5 > 00:05:25 v #6407 > > │ 00:00:00 v #6 > running 1 test 00:05:25 v #6408 > > │ 00:00:00 v #7 > test module_6ff740fe::Spiral::a ... ok 00:05:25 v #6409 > > │ 00:00:00 v #8 > 00:05:25 v #6410 > > │ 00:00:00 v #9 > successes: 00:05:25 v #6411 > > │ 00:00:00 v #10 > 00:05:25 v #6412 > > │ 00:00:00 v #11 > ---- module_6ff740fe::Spiral::a stdout 00:05:25 v #6413 > > ---- 00:05:25 v #6414 > > │ 00:00:00 v #12 > __assert_eq / actual: false 00:05:25 v #6415 > > expected: false 00:05:25 v #6416 > > │ 00:00:00 v #13 > 00:05:25 v #6417 > > │ 00:00:00 v #14 > 00:05:25 v #6418 > > │ 00:00:00 v #15 > successes: 00:05:25 v #6419 > > │ 00:00:00 v #16 > module_6ff740fe::Spiral::a 00:05:25 v #6420 > > │ 00:00:00 v #17 > 00:05:25 v #6421 > > │ 00:00:00 v #18 > test result: ok. 1 passed; 0 failed; 0 00:05:25 v #6422 > > ignored; 0 measured; 0 filtered out; finished in 0.00s 00:05:25 v #6423 > > │ 00:00:00 v #19 > 00:05:25 v #6424 > > │ 00:00:00 v #20 runtime.execute_with_options / result 00:05:25 v #6425 > > { exit_code = 0; std_trace_length = 868 } 00:05:25 v #6426 > > │ __assert_eq / actual: 0 / expected: 0 00:05:25 v #6427 > > │ __assert / actual: "test result: ok. 1 passed; 0 failed; 0 00:05:25 v #6428 > > ignored;" / expected: " Compiling 00:05:25 v #6429 > > spiral_9e76bec054019c702617b389196b97cffec19e66edb9966b52d887e21d41efab v0.0.1 00:05:25 v #6430 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/packages/Rust/9e76bec0 00:05:25 v #6431 > > 54019c702617b389196b97cffec19e66edb9966b52d887e21d41efab) 00:05:25 v #6432 > > │ Finished `test` profile [unoptimized + 00:05:25 v #6433 > > debuginfo] target(s) in 0.46s 00:05:25 v #6434 > > │ Running unittests spiral.rs 00:05:25 v #6435 > > (/home/runner/work/polyglot/polyglot/target/spiral/spiral/target/debug/deps/spir 00:05:25 v #6436 > > al_9e76bec054019c702617b389196b97cffec19e66edb9966b52d887e21d41efab-6c547b9035b0 00:05:25 v #6437 > > f624) 00:05:25 v #6438 > > │ 00:05:25 v #6439 > > │ running 1 test 00:05:25 v #6440 > > │ test module_6ff740fe::Spiral::a ... ok 00:05:25 v #6441 > > │ 00:05:25 v #6442 > > │ successes: 00:05:25 v #6443 > > │ 00:05:25 v #6444 > > │ ---- module_6ff740fe::Spiral::a stdout ---- 00:05:25 v #6445 > > │ __assert_eq / actual: false / expected: false 00:05:25 v #6446 > > │ 00:05:25 v #6447 > > │ 00:05:25 v #6448 > > │ successes: 00:05:25 v #6449 > > │ module_6ff740fe::Spiral::a 00:05:25 v #6450 > > │ 00:05:25 v #6451 > > │ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 00:05:25 v #6452 > > filtered out; finished in 0.00s 00:05:25 v #6453 > > │ " 00:05:25 v #6454 > > │ 00:05:25 v #6455 > 00:00:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15172 } 00:05:25 v #6456 > 00:00:48 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:25 v #6457 > 00:00:49 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.ipynb to html 00:05:25 v #6458 > 00:00:49 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:25 v #6459 > 00:00:49 v #7 ! validate(nb) 00:05:26 v #6460 > 00:00:49 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:26 v #6461 > 00:00:49 v #9 ! return _pygments_highlight( 00:05:26 v #6462 > 00:00:50 v #10 ! [NbConvertApp] Writing 298303 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html 00:05:26 v #6463 > 00:00:50 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:05:26 v #6464 > 00:00:50 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:05:26 v #6465 > 00:00:50 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:26 v #6466 > 00:00:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:26 v #6467 > 00:00:50 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:26 v #6468 > 00:00:50 d #16 spiral.run / dib / { exit_code = 0; result_length = 16139 } 00:05:26 d #6469 runtime.execute_with_options_async / { exit_code = 0; output_length = 19482 } 00:05:26 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/testing.dib --retries 3 00:05:26 d #6470 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/near.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:26 v #6471 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/near.dib", "--retries", "3"])) } 00:05:26 v #6472 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:28 v #6473 > > 00:05:28 v #6474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:28 v #6475 > > │ # near 00:05:30 v #6476 > > 00:05:30 v #6477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:30 v #6478 > > open rust 00:05:30 v #6479 > > open rust.rust_operators 00:05:31 v #6480 > > 00:05:31 v #6481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:31 v #6482 > > //// test 00:05:31 v #6483 > > 00:05:31 v #6484 > > open testing 00:05:31 v #6485 > > 00:05:31 v #6486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:31 v #6487 > > │ ## near 00:05:31 v #6488 > > 00:05:31 v #6489 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:31 v #6490 > > │ ### vector 00:05:31 v #6491 > > 00:05:31 v #6492 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:31 v #6493 > > nominal vector t = 00:05:31 v #6494 > > `( 00:05:31 v #6495 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:31 v #6496 > > Fable.Core.Emit(\"near_sdk::store::vec::Vector<$0>\")>]]\n#endif\ntype 00:05:31 v #6497 > > near_sdk_store_vec_Vector<'T> = class end" 00:05:31 v #6498 > > $'' : $'near_sdk_store_vec_Vector<`t>' 00:05:31 v #6499 > > ) 00:05:31 v #6500 > > 00:05:31 v #6501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:31 v #6502 > > │ ### lookup_map 00:05:31 v #6503 > > 00:05:31 v #6504 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:31 v #6505 > > nominal lookup_map k v = 00:05:31 v #6506 > > `( 00:05:31 v #6507 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:31 v #6508 > > Fable.Core.Emit(\"near_sdk::store::LookupMap<$0, $1>\")>]]\n#endif\ntype 00:05:31 v #6509 > > near_sdk_store_LookupMap<'K, 'V> = class end" 00:05:31 v #6510 > > $'' : $'near_sdk_store_LookupMap<`k, `v>' 00:05:31 v #6511 > > ) 00:05:32 v #6512 > > 00:05:32 v #6513 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6514 > > │ ### iterable_set 00:05:32 v #6515 > > 00:05:32 v #6516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6517 > > nominal iterable_set t = 00:05:32 v #6518 > > `( 00:05:32 v #6519 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:32 v #6520 > > Fable.Core.Emit(\"near_sdk::store::IterableSet<$0>\")>]]\n#endif\ntype 00:05:32 v #6521 > > near_sdk_store_IterableSet<'T> = class end" 00:05:32 v #6522 > > $'' : $'near_sdk_store_IterableSet<`t>' 00:05:32 v #6523 > > ) 00:05:32 v #6524 > > 00:05:32 v #6525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6526 > > │ ### account_id 00:05:32 v #6527 > > 00:05:32 v #6528 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6529 > > nominal account_id = 00:05:32 v #6530 > > `( 00:05:32 v #6531 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:32 v #6532 > > Fable.Core.Emit(\"near_sdk::AccountId\")>]]\n#endif\ntype near_sdk_AccountId = 00:05:32 v #6533 > > class end" 00:05:32 v #6534 > > $'' : $'near_sdk_AccountId' 00:05:32 v #6535 > > ) 00:05:32 v #6536 > > 00:05:32 v #6537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6538 > > │ ### new_lookup_map 00:05:32 v #6539 > > 00:05:32 v #6540 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6541 > > inl new_lookup_map prefix = 00:05:32 v #6542 > > !\($'"near_sdk::store::LookupMap::new(!prefix)"') 00:05:32 v #6543 > > 00:05:32 v #6544 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6545 > > │ ### new_iterable_set 00:05:32 v #6546 > > 00:05:32 v #6547 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6548 > > inl new_iterable_set prefix = 00:05:32 v #6549 > > !\($'"near_sdk::store::IterableSet::new(!prefix)"') 00:05:32 v #6550 > > 00:05:32 v #6551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6552 > > │ ### new_vector 00:05:32 v #6553 > > 00:05:32 v #6554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6555 > > inl new_vector prefix = 00:05:32 v #6556 > > !\\(prefix, $'"near_sdk::store::vec::Vector::new($0)"') 00:05:32 v #6557 > > 00:05:32 v #6558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6559 > > │ ### vector_extend 00:05:32 v #6560 > > 00:05:32 v #6561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6562 > > inl vector_extend forall t. (vec : am'.vec t) (vector : rust.ref (rust.mut' 00:05:32 v #6563 > > (vector t))) : () = 00:05:32 v #6564 > > (!\\(vec, $'"true; !vector.extend($0); //"') : bool) |> ignore 00:05:32 v #6565 > > 00:05:32 v #6566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:32 v #6567 > > │ ### vector_to_vec 00:05:32 v #6568 > > 00:05:32 v #6569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:32 v #6570 > > inl vector_to_vec forall (t : * -> *) u. (vector : t (vector u)) : am'.vec u = 00:05:32 v #6571 > > !\($'$"!vector.iter().map(|x| *x).collect::<Vec<_>>()"') 00:05:33 v #6572 > > 00:05:33 v #6573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6574 > > │ ### keccak512 00:05:33 v #6575 > > 00:05:33 v #6576 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6577 > > inl keccak512 (entropy : am'.vec u8) : am'.vec u8 = 00:05:33 v #6578 > > !\\(entropy, $'$"near_sdk::env::keccak512(&$0)"') 00:05:33 v #6579 > > 00:05:33 v #6580 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6581 > > │ ### log 00:05:33 v #6582 > > 00:05:33 v #6583 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6584 > > inl log text : () = 00:05:33 v #6585 > > (!\\(text, $'$"true; near_sdk::log\!(\\\"{{}}\\\", $0)"') : bool) |> ignore 00:05:33 v #6586 > > 00:05:33 v #6587 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6588 > > │ ### panic_str 00:05:33 v #6589 > > 00:05:33 v #6590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6591 > > inl panic_str (text : string) : () = 00:05:33 v #6592 > > (!\\(text, $'$"true; near_sdk::env::panic_str(&*$0); //"') : bool) |> ignore 00:05:33 v #6593 > > 00:05:33 v #6594 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6595 > > │ ### lookup_get 00:05:33 v #6596 > > 00:05:33 v #6597 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6598 > > inl lookup_get forall k v. 00:05:33 v #6599 > > (key : k) 00:05:33 v #6600 > > (map : rust.ref (rust.mut' (lookup_map k v))) 00:05:33 v #6601 > > : optionm'.option' (rust.ref v) 00:05:33 v #6602 > > = 00:05:33 v #6603 > > !\\(key, $'$"!map.get(&$0)"') 00:05:33 v #6604 > > 00:05:33 v #6605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6606 > > │ ### lookup_insert 00:05:33 v #6607 > > 00:05:33 v #6608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6609 > > inl lookup_insert forall k v. 00:05:33 v #6610 > > (key : k) 00:05:33 v #6611 > > (value : v) 00:05:33 v #6612 > > (map : rust.ref (rust.mut' (lookup_map k v))) 00:05:33 v #6613 > > : () 00:05:33 v #6614 > > = 00:05:33 v #6615 > > (!\\((key, value), $'$"true; !map.insert(&$0, $1); //"') : bool) |> ignore 00:05:33 v #6616 > > 00:05:33 v #6617 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:33 v #6618 > > │ ### iterable_set_insert 00:05:33 v #6619 > > 00:05:33 v #6620 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:33 v #6621 > > inl iterable_set_insert forall t. 00:05:33 v #6622 > > (x : t) 00:05:33 v #6623 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:33 v #6624 > > : bool 00:05:33 v #6625 > > = 00:05:33 v #6626 > > !\\(x, $'$"!set.insert($0)"') 00:05:34 v #6627 > > 00:05:34 v #6628 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6629 > > │ ### iterable_set_remove 00:05:34 v #6630 > > 00:05:34 v #6631 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6632 > > inl iterable_set_remove forall t. 00:05:34 v #6633 > > (x : rust.ref t) 00:05:34 v #6634 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:34 v #6635 > > : bool 00:05:34 v #6636 > > = 00:05:34 v #6637 > > !\\(x, $'$"!set.remove($0)"') 00:05:34 v #6638 > > 00:05:34 v #6639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6640 > > │ ### iterable_set_contains 00:05:34 v #6641 > > 00:05:34 v #6642 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6643 > > inl iterable_set_contains forall t. 00:05:34 v #6644 > > (x : rust.ref t) 00:05:34 v #6645 > > (set : rust.ref (rust.mut' (iterable_set t))) 00:05:34 v #6646 > > : bool 00:05:34 v #6647 > > = 00:05:34 v #6648 > > !\\(x, $'$"!set.contains($0)"') 00:05:34 v #6649 > > 00:05:34 v #6650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6651 > > │ ### near_token 00:05:34 v #6652 > > 00:05:34 v #6653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6654 > > nominal near_token = 00:05:34 v #6655 > > `( 00:05:34 v #6656 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:34 v #6657 > > Fable.Core.Emit(\"near_token::NearToken\")>]]\n#endif\ntype near_token_NearToken 00:05:34 v #6658 > > = class end" 00:05:34 v #6659 > > $'' : $'near_token_NearToken' 00:05:34 v #6660 > > ) 00:05:34 v #6661 > > 00:05:34 v #6662 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6663 > > │ ### near_token_sdk 00:05:34 v #6664 > > 00:05:34 v #6665 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6666 > > nominal near_token_sdk = 00:05:34 v #6667 > > `( 00:05:34 v #6668 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:34 v #6669 > > Fable.Core.Emit(\"near_sdk::NearToken\")>]]\n#endif\ntype near_sdk_NearToken = 00:05:34 v #6670 > > class end" 00:05:34 v #6671 > > $'' : $'near_sdk_NearToken' 00:05:34 v #6672 > > ) 00:05:34 v #6673 > > 00:05:34 v #6674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6675 > > │ ### random_seed 00:05:34 v #6676 > > 00:05:34 v #6677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6678 > > inl random_seed () : am'.vec u8 = 00:05:34 v #6679 > > !\($'$"near_sdk::env::random_seed()"') 00:05:34 v #6680 > > 00:05:34 v #6681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6682 > > │ ### block_timestamp 00:05:34 v #6683 > > 00:05:34 v #6684 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6685 > > inl block_timestamp () : u64 = 00:05:34 v #6686 > > !\($'$"near_sdk::env::block_timestamp()"') 00:05:34 v #6687 > > 00:05:34 v #6688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:34 v #6689 > > │ ### block_height 00:05:34 v #6690 > > 00:05:34 v #6691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:34 v #6692 > > inl block_height () : u64 = 00:05:34 v #6693 > > !\($'$"near_sdk::env::block_height()"') 00:05:35 v #6694 > > 00:05:35 v #6695 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6696 > > │ ### epoch_height 00:05:35 v #6697 > > 00:05:35 v #6698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6699 > > inl epoch_height () : u64 = 00:05:35 v #6700 > > !\($'$"near_sdk::env::epoch_height()"') 00:05:35 v #6701 > > 00:05:35 v #6702 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6703 > > │ ### account_balance 00:05:35 v #6704 > > 00:05:35 v #6705 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6706 > > inl account_balance () : near_token = 00:05:35 v #6707 > > !\($'$"near_sdk::env::account_balance()"') 00:05:35 v #6708 > > 00:05:35 v #6709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6710 > > │ ### predecessor_account_id 00:05:35 v #6711 > > 00:05:35 v #6712 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6713 > > inl predecessor_account_id () : account_id = 00:05:35 v #6714 > > !\($'$"near_sdk::env::predecessor_account_id()"') 00:05:35 v #6715 > > 00:05:35 v #6716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6717 > > │ ### signer_account_id 00:05:35 v #6718 > > 00:05:35 v #6719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6720 > > inl signer_account_id () : account_id = 00:05:35 v #6721 > > !\($'$"near_sdk::env::signer_account_id()"') 00:05:35 v #6722 > > 00:05:35 v #6723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6724 > > │ ### as_yoctonear 00:05:35 v #6725 > > 00:05:35 v #6726 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6727 > > inl as_yoctonear forall t. (gas : t) : rust.u128 = 00:05:35 v #6728 > > !\\(gas, $'"$0.as_yoctonear()"') 00:05:35 v #6729 > > 00:05:35 v #6730 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:35 v #6731 > > │ ### near_price_in_usd 00:05:35 v #6732 > > 00:05:35 v #6733 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:35 v #6734 > > inl near_price_in_usd () = 00:05:35 v #6735 > > 6.68f64 00:05:36 v #6736 > > 00:05:36 v #6737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 v #6738 > > │ ### gas_to_usd 00:05:36 v #6739 > > 00:05:36 v #6740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 v #6741 > > inl gas_to_usd (gas : u64) = 00:05:36 v #6742 > > (gas |> f64) / 10_000_000_000_000_000 * near_price_in_usd () 00:05:36 v #6743 > > 00:05:36 v #6744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:36 v #6745 > > │ ### tokens_to_usd 00:05:36 v #6746 > > 00:05:36 v #6747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:36 v #6748 > > inl tokens_to_usd (tokens : rust.u128) = 00:05:36 v #6749 > > (tokens |> rust.f64) / 1_000_000_000_000_000_000_000_000 * near_price_in_usd 00:05:36 v #6750 > > () 00:05:36 v #6751 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 11694 } 00:05:36 v #6752 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:37 v #6753 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.ipynb to html 00:05:37 v #6754 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:37 v #6755 > 00:00:10 v #7 ! validate(nb) 00:05:37 v #6756 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:37 v #6757 > 00:00:10 v #9 ! return _pygments_highlight( 00:05:37 v #6758 > 00:00:10 v #10 ! [NbConvertApp] Writing 322964 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html 00:05:37 v #6759 > 00:00:11 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:05:37 v #6760 > 00:00:11 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:05:37 v #6761 > 00:00:11 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:38 v #6762 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:38 v #6763 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:38 v #6764 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 12655 } 00:05:38 d #6765 runtime.execute_with_options_async / { exit_code = 0; output_length = 15893 } 00:05:38 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/near.dib --retries 3 00:05:38 d #6766 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path rust/near_workspaces.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:38 v #6767 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "rust/near_workspaces.dib", "--retries", "3"])) } 00:05:38 v #6768 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:39 v #6769 > > 00:05:39 v #6770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:39 v #6771 > > │ # near_workspaces 00:05:42 v #6772 > > 00:05:42 v #6773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:42 v #6774 > > open rust 00:05:42 v #6775 > > open rust.rust_operators 00:05:42 v #6776 > > 00:05:42 v #6777 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:42 v #6778 > > //// test 00:05:42 v #6779 > > 00:05:42 v #6780 > > open testing 00:05:42 v #6781 > > 00:05:42 v #6782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:42 v #6783 > > │ ## near 00:05:42 v #6784 > > 00:05:42 v #6785 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:42 v #6786 > > │ ### near_token_workspaces 00:05:42 v #6787 > > 00:05:42 v #6788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:42 v #6789 > > nominal near_token_workspaces = 00:05:42 v #6790 > > `( 00:05:42 v #6791 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:42 v #6792 > > Fable.Core.Emit(\"near_workspaces::types::NearToken\")>]]\n#endif\ntype 00:05:42 v #6793 > > near_workspaces_types_NearToken = class end" 00:05:42 v #6794 > > $'' : $'near_workspaces_types_NearToken' 00:05:42 v #6795 > > ) 00:05:43 v #6796 > > 00:05:43 v #6797 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6798 > > │ ### gas 00:05:43 v #6799 > > 00:05:43 v #6800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6801 > > nominal gas = 00:05:43 v #6802 > > `( 00:05:43 v #6803 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6804 > > Fable.Core.Emit(\"near_workspaces::types::Gas\")>]]\n#endif\ntype 00:05:43 v #6805 > > near_workspaces_types_Gas = class end" 00:05:43 v #6806 > > $'' : $'near_workspaces_types_Gas' 00:05:43 v #6807 > > ) 00:05:43 v #6808 > > 00:05:43 v #6809 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6810 > > │ ### near_workspaces_error 00:05:43 v #6811 > > 00:05:43 v #6812 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6813 > > nominal near_workspaces_error = 00:05:43 v #6814 > > `( 00:05:43 v #6815 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6816 > > Fable.Core.Emit(\"near_workspaces::error::Error\")>]]\n#endif\ntype 00:05:43 v #6817 > > near_workspaces_error_Error = class end" 00:05:43 v #6818 > > $'' : $'near_workspaces_error_Error' 00:05:43 v #6819 > > ) 00:05:43 v #6820 > > 00:05:43 v #6821 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6822 > > │ ### sandbox 00:05:43 v #6823 > > 00:05:43 v #6824 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6825 > > nominal sandbox = 00:05:43 v #6826 > > `( 00:05:43 v #6827 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6828 > > Fable.Core.Emit(\"near_workspaces::network::Sandbox\")>]]\n#endif\ntype 00:05:43 v #6829 > > near_workspaces_network_Sandbox = class end" 00:05:43 v #6830 > > $'' : $'near_workspaces_network_Sandbox' 00:05:43 v #6831 > > ) 00:05:43 v #6832 > > 00:05:43 v #6833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6834 > > │ ### worker 00:05:43 v #6835 > > 00:05:43 v #6836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6837 > > nominal worker t = 00:05:43 v #6838 > > `( 00:05:43 v #6839 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6840 > > Fable.Core.Emit(\"near_workspaces::Worker<$0>\")>]]\n#endif\ntype 00:05:43 v #6841 > > near_workspaces_Worker<'T> = class end" 00:05:43 v #6842 > > $'' : $'near_workspaces_Worker<`t>' 00:05:43 v #6843 > > ) 00:05:43 v #6844 > > 00:05:43 v #6845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6846 > > │ ### contract 00:05:43 v #6847 > > 00:05:43 v #6848 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6849 > > nominal contract = 00:05:43 v #6850 > > `( 00:05:43 v #6851 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6852 > > Fable.Core.Emit(\"near_workspaces::Contract\")>]]\n#endif\ntype 00:05:43 v #6853 > > near_workspaces_Contract = class end" 00:05:43 v #6854 > > $'' : $'near_workspaces_Contract' 00:05:43 v #6855 > > ) 00:05:43 v #6856 > > 00:05:43 v #6857 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6858 > > │ ### call_transaction 00:05:43 v #6859 > > 00:05:43 v #6860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6861 > > nominal call_transaction = 00:05:43 v #6862 > > `( 00:05:43 v #6863 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6864 > > Fable.Core.Emit(\"near_workspaces::operations::CallTransaction\")>]]\n#endif\nty 00:05:43 v #6865 > > pe near_workspaces_operations_CallTransaction = class end" 00:05:43 v #6866 > > $'' : $'near_workspaces_operations_CallTransaction' 00:05:43 v #6867 > > ) 00:05:43 v #6868 > > 00:05:43 v #6869 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:43 v #6870 > > │ ### execution_final_result 00:05:43 v #6871 > > 00:05:43 v #6872 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:43 v #6873 > > nominal execution_final_result = 00:05:43 v #6874 > > `( 00:05:43 v #6875 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:43 v #6876 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFinalResult\")>]]\n#endif\nt 00:05:43 v #6877 > > ype near_workspaces_result_ExecutionFinalResult = class end" 00:05:43 v #6878 > > $'' : $'near_workspaces_result_ExecutionFinalResult' 00:05:43 v #6879 > > ) 00:05:44 v #6880 > > 00:05:44 v #6881 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6882 > > │ ### execution_result 00:05:44 v #6883 > > 00:05:44 v #6884 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6885 > > nominal execution_result t = 00:05:44 v #6886 > > `( 00:05:44 v #6887 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:44 v #6888 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionResult<$0>\")>]]\n#endif\nty 00:05:44 v #6889 > > pe near_workspaces_result_ExecutionResult<'T> = class end" 00:05:44 v #6890 > > $'' : $'near_workspaces_result_ExecutionResult<`t>' 00:05:44 v #6891 > > ) 00:05:44 v #6892 > > 00:05:44 v #6893 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6894 > > │ ### execution_success 00:05:44 v #6895 > > 00:05:44 v #6896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6897 > > nominal execution_success = 00:05:44 v #6898 > > `( 00:05:44 v #6899 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:44 v #6900 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionSuccess\")>]]\n#endif\ntype 00:05:44 v #6901 > > near_workspaces_result_ExecutionSuccess = class end" 00:05:44 v #6902 > > $'' : $'near_workspaces_result_ExecutionSuccess' 00:05:44 v #6903 > > ) 00:05:44 v #6904 > > 00:05:44 v #6905 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6906 > > │ ### execution_failure 00:05:44 v #6907 > > 00:05:44 v #6908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6909 > > nominal execution_failure = 00:05:44 v #6910 > > `( 00:05:44 v #6911 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:44 v #6912 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionFailure\")>]]\n#endif\ntype 00:05:44 v #6913 > > near_workspaces_result_ExecutionFailure = class end" 00:05:44 v #6914 > > $'' : $'near_workspaces_result_ExecutionFailure' 00:05:44 v #6915 > > ) 00:05:44 v #6916 > > 00:05:44 v #6917 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6918 > > │ ### execution_outcome 00:05:44 v #6919 > > 00:05:44 v #6920 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6921 > > nominal execution_outcome = 00:05:44 v #6922 > > `( 00:05:44 v #6923 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:05:44 v #6924 > > Fable.Core.Emit(\"near_workspaces::result::ExecutionOutcome\")>]]\n#endif\ntype 00:05:44 v #6925 > > near_workspaces_result_ExecutionOutcome = class end" 00:05:44 v #6926 > > $'' : $'near_workspaces_result_ExecutionOutcome' 00:05:44 v #6927 > > ) 00:05:44 v #6928 > > 00:05:44 v #6929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6930 > > │ ### sandbox_worker 00:05:44 v #6931 > > 00:05:44 v #6932 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6933 > > inl sandbox_worker () : resultm.result' (worker sandbox) near_workspaces_error = 00:05:44 v #6934 > > !\($'"near_workspaces::sandbox().await"') 00:05:44 v #6935 > > 00:05:44 v #6936 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:44 v #6937 > > │ ### dev_deploy 00:05:44 v #6938 > > 00:05:44 v #6939 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:44 v #6940 > > inl dev_deploy 00:05:44 v #6941 > > (wasm : am'.vec u8) 00:05:44 v #6942 > > (worker : worker sandbox) 00:05:44 v #6943 > > : async.future_pin (resultm.result' contract near_workspaces_error) 00:05:44 v #6944 > > = 00:05:44 v #6945 > > inl worker = worker |> rust.emit 00:05:44 v #6946 > > !\\(wasm, $'"Box::pin(!worker.dev_deploy(&$0))"') 00:05:45 v #6947 > > 00:05:45 v #6948 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6949 > > │ ### call 00:05:45 v #6950 > > 00:05:45 v #6951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6952 > > inl call (fn_name : string) (contract : contract) : call_transaction = 00:05:45 v #6953 > > !\\((contract, fn_name), $'"$0.call(&*$1)"') 00:05:45 v #6954 > > 00:05:45 v #6955 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6956 > > │ ### logs 00:05:45 v #6957 > > 00:05:45 v #6958 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6959 > > inl logs (result : execution_final_result) : am'.vec (rust.ref sm'.str) = 00:05:45 v #6960 > > !\($'"!result.logs()"') 00:05:45 v #6961 > > 00:05:45 v #6962 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6963 > > │ ### into_result 00:05:45 v #6964 > > 00:05:45 v #6965 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6966 > > inl into_result 00:05:45 v #6967 > > (result : execution_final_result) 00:05:45 v #6968 > > : resultm.result' execution_success execution_failure 00:05:45 v #6969 > > = 00:05:45 v #6970 > > !\\(result, $'"$0.into_result()"') 00:05:45 v #6971 > > 00:05:45 v #6972 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6973 > > │ ### receipt_failures 00:05:45 v #6974 > > 00:05:45 v #6975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6976 > > inl receipt_failures (result : execution_final_result) : am'.vec (rust.ref 00:05:45 v #6977 > > execution_outcome) = 00:05:45 v #6978 > > inl result = join result 00:05:45 v #6979 > > !\($'"!result.receipt_failures()"') 00:05:45 v #6980 > > 00:05:45 v #6981 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6982 > > │ ### receipt_outcomes 00:05:45 v #6983 > > 00:05:45 v #6984 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6985 > > inl receipt_outcomes (result : execution_final_result) : am'.vec 00:05:45 v #6986 > > execution_outcome = 00:05:45 v #6987 > > inl result = join result 00:05:45 v #6988 > > inl result : rust.ref (am'.slice execution_outcome) = 00:05:45 v #6989 > > !\($'"!result.receipt_outcomes()"') 00:05:45 v #6990 > > result |> rust.into 00:05:45 v #6991 > > 00:05:45 v #6992 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #6993 > > │ ### json 00:05:45 v #6994 > > 00:05:45 v #6995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #6996 > > inl json (result : execution_final_result) : resultm.result' sm'.std_string 00:05:45 v #6997 > > near_workspaces_error = 00:05:45 v #6998 > > !\\(result, $'"$0.json()"') 00:05:45 v #6999 > > 00:05:45 v #7000 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:45 v #7001 > > │ ### borsh 00:05:45 v #7002 > > 00:05:45 v #7003 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:45 v #7004 > > inl borsh (result : execution_final_result) : resultm.result' sm'.std_string 00:05:45 v #7005 > > near_workspaces_error = 00:05:45 v #7006 > > !\\(result, $'"$0.borsh()"') 00:05:46 v #7007 > > 00:05:46 v #7008 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7009 > > │ ### total_gas_burnt 00:05:46 v #7010 > > 00:05:46 v #7011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7012 > > inl total_gas_burnt (result : execution_final_result) : gas = 00:05:46 v #7013 > > !\\(result, $'"$0.total_gas_burnt"') 00:05:46 v #7014 > > 00:05:46 v #7015 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7016 > > │ ### as_gas 00:05:46 v #7017 > > 00:05:46 v #7018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7019 > > inl as_gas (gas : gas) : u64 = 00:05:46 v #7020 > > !\\(gas, $'"$0.as_gas()"') 00:05:46 v #7021 > > 00:05:46 v #7022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7023 > > │ ### outcomes 00:05:46 v #7024 > > 00:05:46 v #7025 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7026 > > inl outcomes (result : execution_final_result) : am'.vec (rust.ref 00:05:46 v #7027 > > execution_outcome) = 00:05:46 v #7028 > > inl result = result |> rust.emit 00:05:46 v #7029 > > !\($'"!result.outcomes()"') 00:05:46 v #7030 > > 00:05:46 v #7031 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7032 > > │ ### is_success 00:05:46 v #7033 > > 00:05:46 v #7034 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7035 > > inl is_success (outcome : execution_outcome) : bool = 00:05:46 v #7036 > > !\\(outcome, $'"$0.is_success()"') 00:05:46 v #7037 > > 00:05:46 v #7038 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7039 > > │ ### gas_burnt 00:05:46 v #7040 > > 00:05:46 v #7041 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7042 > > inl gas_burnt (outcome : execution_outcome) : gas = 00:05:46 v #7043 > > !\\(outcome, $'"$0.gas_burnt"') 00:05:46 v #7044 > > 00:05:46 v #7045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:46 v #7046 > > │ ### tokens_burnt 00:05:46 v #7047 > > 00:05:46 v #7048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:46 v #7049 > > inl tokens_burnt (outcome : execution_outcome) : near_token_workspaces = 00:05:46 v #7050 > > !\\(outcome, $'"$0.tokens_burnt"') 00:05:47 v #7051 > > 00:05:47 v #7052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:47 v #7053 > > │ ### transact 00:05:47 v #7054 > > 00:05:47 v #7055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:47 v #7056 > > inl transact 00:05:47 v #7057 > > (call : call_transaction) 00:05:47 v #7058 > > : async.future_pin (resultm.result' execution_final_result 00:05:47 v #7059 > > near_workspaces_error) 00:05:47 v #7060 > > = 00:05:47 v #7061 > > !\($'"Box::pin(!call.transact())"') 00:05:47 v #7062 > > 00:05:47 v #7063 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:47 v #7064 > > │ ### gas 00:05:47 v #7065 > > 00:05:47 v #7066 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:47 v #7067 > > inl gas 00:05:47 v #7068 > > (gas : gas) 00:05:47 v #7069 > > (call : call_transaction) 00:05:47 v #7070 > > : call_transaction 00:05:47 v #7071 > > = 00:05:47 v #7072 > > !\($'"!call.gas(!gas)"') 00:05:47 v #7073 > > 00:05:47 v #7074 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:47 v #7075 > > │ ### from_tgas 00:05:47 v #7076 > > 00:05:47 v #7077 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:47 v #7078 > > inl from_tgas 00:05:47 v #7079 > > (tgas : i32) 00:05:47 v #7080 > > : gas 00:05:47 v #7081 > > = 00:05:47 v #7082 > > !\($'"near_workspaces::types::Gas::from_tgas(!tgas)"') 00:05:47 v #7083 > > 00:05:47 v #7084 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:47 v #7085 > > │ ### print_usd 00:05:47 v #7086 > > 00:05:47 v #7087 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:47 v #7088 > > inl print_usd retry (result : execution_final_result) = 00:05:47 v #7089 > > inl total_gas_burnt = result |> total_gas_burnt |> as_gas 00:05:47 v #7090 > > inl total_gas_burnt_usd = total_gas_burnt |> near.gas_to_usd 00:05:47 v #7091 > > 00:05:47 v #7092 > > trace Info 00:05:47 v #7093 > > fun () => "near_workspaces.print_usd" 00:05:47 v #7094 > > fun () => { retry total_gas_burnt_usd total_gas_burnt } 00:05:47 v #7095 > > 00:05:47 v #7096 > > result 00:05:47 v #7097 > > |> outcomes 00:05:47 v #7098 > > |> iter.into_iter 00:05:47 v #7099 > > |> iter.cloned 00:05:47 v #7100 > > |> iter.for_each fun outcome => 00:05:47 v #7101 > > inl is_success = outcome |> is_success 00:05:47 v #7102 > > 00:05:47 v #7103 > > inl gas_burnt = outcome |> gas_burnt |> as_gas 00:05:47 v #7104 > > inl gas_burnt_usd = gas_burnt |> near.gas_to_usd 00:05:47 v #7105 > > 00:05:47 v #7106 > > inl tokens_burnt = outcome |> tokens_burnt |> near.as_yoctonear 00:05:47 v #7107 > > inl tokens_burnt_usd = tokens_burnt |> near.tokens_to_usd 00:05:47 v #7108 > > 00:05:47 v #7109 > > trace Info 00:05:47 v #7110 > > fun () => "near_workspaces.print_usd / outcome" 00:05:47 v #7111 > > fun () => { is_success gas_burnt_usd tokens_burnt_usd gas_burnt 00:05:47 v #7112 > > tokens_burnt } 00:05:47 v #7113 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 14386 } 00:05:47 v #7114 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:48 v #7115 > 00:00:10 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.ipynb to html 00:05:48 v #7116 > 00:00:10 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:05:48 v #7117 > 00:00:10 v #7 ! validate(nb) 00:05:48 v #7118 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:05:48 v #7119 > 00:00:10 v #9 ! return _pygments_highlight( 00:05:49 v #7120 > 00:00:10 v #10 ! [NbConvertApp] Writing 329858 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html 00:05:49 v #7121 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 924 } 00:05:49 v #7122 > 00:00:10 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 924 } 00:05:49 v #7123 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/rust/near_workspaces.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:49 v #7124 > 00:00:11 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:05:49 v #7125 > 00:00:11 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:05:49 v #7126 > 00:00:11 d #16 spiral.run / dib / { exit_code = 0; result_length = 15369 } 00:05:49 d #7127 runtime.execute_with_options_async / { exit_code = 0; output_length = 18838 } 00:05:49 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path rust/near_workspaces.dib --retries 3 00:05:49 d #7128 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:05:49 v #7129 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "testing.dib", "--retries", "3"])) } 00:05:49 v #7130 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:05:50 v #7131 > > 00:05:50 v #7132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #7133 > > │ # testing 00:05:50 v #7134 > > 00:05:50 v #7135 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #7136 > > │ ## testing 00:05:50 v #7137 > > 00:05:50 v #7138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:50 v #7139 > > │ ### testing_trace 00:05:53 v #7140 > > 00:05:53 v #7141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:53 v #7142 > > union testing_trace = 00:05:53 v #7143 > > | Console 00:05:53 v #7144 > > | Trace 00:05:53 v #7145 > > | TraceRaw 00:05:53 v #7146 > > | Silent 00:05:54 v #7147 > > 00:05:54 v #7148 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:54 v #7149 > > │ ### __expect 00:05:54 v #7150 > > 00:05:54 v #7151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:54 v #7152 > > inl rec __expect fn trace' name b a = 00:05:54 v #7153 > > inl result = fn a b 00:05:54 v #7154 > > inl result = 00:05:54 v #7155 > > result || join result 00:05:54 v #7156 > > inl get_raw_text () = 00:05:54 v #7157 > > backend_switch { 00:05:54 v #7158 > > Fsharp = fun () => $'$"{!name} / actual: %A{!a} / expected: %A{!b}"' 00:05:54 v #7159 > > : string 00:05:54 v #7160 > > Python = fun () => $'f"{!name} / actual: {!a} / expected: {!b}"' : 00:05:54 v #7161 > > string 00:05:54 v #7162 > > } 00:05:54 v #7163 > > match trace' with 00:05:54 v #7164 > > | Console => 00:05:54 v #7165 > > inl text = get_raw_text () 00:05:54 v #7166 > > text |> console.write_line 00:05:54 v #7167 > > text 00:05:54 v #7168 > > | Trace => 00:05:54 v #7169 > > trace Info (fun () => name) fun () => { actual = a; expected = b } 00:05:54 v #7170 > > get_raw_text () 00:05:54 v #7171 > > | TraceRaw => 00:05:54 v #7172 > > inl text = get_raw_text () 00:05:54 v #7173 > > trace_raw Info fun () => text 00:05:54 v #7174 > > text 00:05:54 v #7175 > > | Silent => reflection.nameof { __expect } 00:05:54 v #7176 > > |> assert result 00:05:54 v #7177 > > 00:05:54 v #7178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:54 v #7179 > > │ ### __assert_approx_eq 00:05:54 v #7180 > > 00:05:54 v #7181 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:54 v #7182 > > inl rec __assert_approx_eq trace e b a = 00:05:54 v #7183 > > __expect 00:05:54 v #7184 > > (fun a b => abs (b - a) < (e |> optionm.defaultWith 0.00000001)) 00:05:54 v #7185 > > trace 00:05:54 v #7186 > > (reflection.nameof { __assert_approx_eq }) 00:05:54 v #7187 > > b 00:05:54 v #7188 > > a 00:05:54 v #7189 > > 00:05:54 v #7190 > > inl _assert_approx_eq e b a = 00:05:54 v #7191 > > __assert_approx_eq Console e b a 00:05:54 v #7192 > > 00:05:54 v #7193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:54 v #7194 > > //// test 00:05:54 v #7195 > > ///! fsharp 00:05:54 v #7196 > > ///! cuda 00:05:54 v #7197 > > ///! rust 00:05:54 v #7198 > > ///! typescript 00:05:54 v #7199 > > ///! python 00:05:54 v #7200 > > 00:05:54 v #7201 > > 12.345f64 00:05:54 v #7202 > > |> _assert_approx_eq (Some 0.0001f64) 12.345f64 00:06:03 v #7203 > > 00:06:03 v #7204 > > ── [ 8.84s - return value ] ──────────────────────────────────────────────────── 00:06:03 v #7205 > > │ .py output (Cuda): 00:06:03 v #7206 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 00:06:03 v #7207 > > │ 00:06:03 v #7208 > > │ .rs output: 00:06:03 v #7209 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 00:06:03 v #7210 > > │ 00:06:03 v #7211 > > │ .ts output: 00:06:03 v #7212 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 00:06:03 v #7213 > > │ 00:06:03 v #7214 > > │ .py output: 00:06:03 v #7215 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 00:06:03 v #7216 > > │ 00:06:03 v #7217 > > │ 00:06:03 v #7218 > > 00:06:03 v #7219 > > ── [ 8.85s - stdout ] ────────────────────────────────────────────────────────── 00:06:03 v #7220 > > │ .fsx output: 00:06:03 v #7221 > > │ __assert_approx_eq / actual: 12.345 / expected: 12.345 00:06:03 v #7222 > > │ 00:06:03 v #7223 > > 00:06:03 v #7224 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #7225 > > //// test 00:06:03 v #7226 > > //// print_code 00:06:03 v #7227 > > 00:06:03 v #7228 > > 1f64 00:06:03 v #7229 > > |> __assert_approx_eq Console (Some 3) 2 00:06:03 v #7230 > > 00:06:03 v #7231 > > ── [ 130.26ms - stdout ] ─────────────────────────────────────────────────────── 00:06:03 v #7232 > > │ let rec closure0 (v0 : string) () : unit = 00:06:03 v #7233 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:06:03 v #7234 > > │ v1 v0 00:06:03 v #7235 > > │ and method0 () : unit = 00:06:03 v #7236 > > │ let v0 : string = "__assert_approx_eq" 00:06:03 v #7237 > > │ let v1 : string = $"{v0} / actual: %A{1.0} / expected: 00:06:03 v #7238 > > %A{2.0}" 00:06:03 v #7239 > > │ let v4 : unit = () 00:06:03 v #7240 > > │ let v5 : (unit -> unit) = closure0(v1) 00:06:03 v #7241 > > │ let v6 : unit = (fun () -> v5 (); v4) () 00:06:03 v #7242 > > │ () 00:06:03 v #7243 > > │ method0() 00:06:03 v #7244 > > │ 00:06:03 v #7245 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 00:06:03 v #7246 > > │ 00:06:03 v #7247 > > 00:06:03 v #7248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #7249 > > //// test 00:06:03 v #7250 > > //// print_code 00:06:03 v #7251 > > 00:06:03 v #7252 > > (dyn 1f64) 00:06:03 v #7253 > > |> _assert_approx_eq (Some 3) 2 00:06:03 v #7254 > > 00:06:03 v #7255 > > ── [ 260.94ms - stdout ] ─────────────────────────────────────────────────────── 00:06:03 v #7256 > > │ let rec method1 (v0 : bool) : bool = 00:06:03 v #7257 > > │ v0 00:06:03 v #7258 > > │ and closure0 (v0 : string) () : unit = 00:06:03 v #7259 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:06:03 v #7260 > > │ v1 v0 00:06:03 v #7261 > > │ and method0 () : unit = 00:06:03 v #7262 > > │ let v0 : float = 1.0 00:06:03 v #7263 > > │ let v1 : float = 2.0 - v0 00:06:03 v #7264 > > │ let v2 : float = -v1 00:06:03 v #7265 > > │ let v3 : bool = v1 >= v2 00:06:03 v #7266 > > │ let v4 : float = 00:06:03 v #7267 > > │ if v3 then 00:06:03 v #7268 > > │ v1 00:06:03 v #7269 > > │ else 00:06:03 v #7270 > > │ v2 00:06:03 v #7271 > > │ let v5 : bool = v4 < 3.0 00:06:03 v #7272 > > │ let v7 : bool = 00:06:03 v #7273 > > │ if v5 then 00:06:03 v #7274 > > │ true 00:06:03 v #7275 > > │ else 00:06:03 v #7276 > > │ method1(v5) 00:06:03 v #7277 > > │ let v8 : string = "__assert_approx_eq" 00:06:03 v #7278 > > │ let v9 : string = $"{v8} / actual: %A{v0} / expected: 00:06:03 v #7279 > > %A{2.0}" 00:06:03 v #7280 > > │ let v12 : unit = () 00:06:03 v #7281 > > │ let v13 : (unit -> unit) = closure0(v9) 00:06:03 v #7282 > > │ let v14 : unit = (fun () -> v13 (); v12) () 00:06:03 v #7283 > > │ let v16 : bool = v7 = false 00:06:03 v #7284 > > │ if v16 then 00:06:03 v #7285 > > │ failwith<unit> v9 00:06:03 v #7286 > > │ method0() 00:06:03 v #7287 > > │ 00:06:03 v #7288 > > │ __assert_approx_eq / actual: 1.0 / expected: 2.0 00:06:03 v #7289 > > │ 00:06:03 v #7290 > > 00:06:03 v #7291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:03 v #7292 > > │ ### __assert_eq 00:06:03 v #7293 > > 00:06:03 v #7294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #7295 > > inl rec __assert_eq trace b a = 00:06:03 v #7296 > > __expect (=) trace (reflection.nameof { __assert_eq }) b a 00:06:03 v #7297 > > 00:06:03 v #7298 > > inl _assert_eq b a = 00:06:03 v #7299 > > __assert_eq Console b a 00:06:03 v #7300 > > 00:06:03 v #7301 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:03 v #7302 > > │ ### __assert_eq' 00:06:03 v #7303 > > 00:06:03 v #7304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #7305 > > inl rec __assert_eq' trace b a = 00:06:03 v #7306 > > __expect (=.) trace (reflection.nameof { __assert_eq' }) b a 00:06:03 v #7307 > > 00:06:03 v #7308 > > inl _assert_eq' b a = 00:06:03 v #7309 > > __assert_eq' Console b a 00:06:03 v #7310 > > 00:06:03 v #7311 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:03 v #7312 > > │ ### __assert_ne 00:06:03 v #7313 > > 00:06:03 v #7314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #7315 > > inl rec __assert_ne trace b a = 00:06:03 v #7316 > > __expect (<>.) trace (reflection.nameof { __assert_ne }) b a 00:06:03 v #7317 > > 00:06:03 v #7318 > > inl _assert_ne b a = 00:06:03 v #7319 > > __assert_ne Console b a 00:06:04 v #7320 > > 00:06:04 v #7321 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7322 > > │ ### __assert_gt 00:06:04 v #7323 > > 00:06:04 v #7324 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7325 > > inl rec __assert_gt trace b a = 00:06:04 v #7326 > > __expect (>) trace (reflection.nameof { __assert_gt }) b a 00:06:04 v #7327 > > 00:06:04 v #7328 > > inl _assert_gt b a = 00:06:04 v #7329 > > __assert_gt Console b a 00:06:04 v #7330 > > 00:06:04 v #7331 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7332 > > │ ### __assert_ge 00:06:04 v #7333 > > 00:06:04 v #7334 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7335 > > inl rec __assert_ge trace b a = 00:06:04 v #7336 > > __expect (>=) trace (reflection.nameof { __assert_ge }) b a 00:06:04 v #7337 > > 00:06:04 v #7338 > > inl _assert_ge b a = 00:06:04 v #7339 > > __assert_ge Console b a 00:06:04 v #7340 > > 00:06:04 v #7341 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7342 > > │ ### __assert_lt 00:06:04 v #7343 > > 00:06:04 v #7344 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7345 > > inl rec __assert_lt trace b a = 00:06:04 v #7346 > > __expect (<) trace (reflection.nameof { __assert_lt }) b a 00:06:04 v #7347 > > 00:06:04 v #7348 > > inl _assert_lt b a = 00:06:04 v #7349 > > __assert_lt Console b a 00:06:04 v #7350 > > 00:06:04 v #7351 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7352 > > │ ### __assert_le 00:06:04 v #7353 > > 00:06:04 v #7354 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7355 > > inl rec __assert_le trace b a = 00:06:04 v #7356 > > __expect (<=) trace (reflection.nameof { __assert_le }) b a 00:06:04 v #7357 > > 00:06:04 v #7358 > > inl _assert_le b a = 00:06:04 v #7359 > > __assert_le Console b a 00:06:04 v #7360 > > 00:06:04 v #7361 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7362 > > │ ### __assert 00:06:04 v #7363 > > 00:06:04 v #7364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7365 > > inl rec __assert fn trace b a = 00:06:04 v #7366 > > __expect fn trace (reflection.nameof { __assert }) a b 00:06:04 v #7367 > > 00:06:04 v #7368 > > inl _assert fn b a = 00:06:04 v #7369 > > __assert fn Console b a 00:06:04 v #7370 > > 00:06:04 v #7371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:04 v #7372 > > │ ### __assert_between 00:06:04 v #7373 > > 00:06:04 v #7374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:04 v #7375 > > inl rec __assert_between trace a b actual = 00:06:04 v #7376 > > inl assert_between actual (a, b) = 00:06:04 v #7377 > > __assert_ge Silent a actual 00:06:04 v #7378 > > __assert_le Silent b actual 00:06:04 v #7379 > > true 00:06:04 v #7380 > > __expect assert_between trace (reflection.nameof { __assert_between }) (a, 00:06:04 v #7381 > > b) actual 00:06:04 v #7382 > > 00:06:04 v #7383 > > inl _assert_between a b actual = 00:06:04 v #7384 > > __assert_between Console a b actual 00:06:05 v #7385 > > 00:06:05 v #7386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #7387 > > │ ### _assert_fn 00:06:05 v #7388 > > 00:06:05 v #7389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #7390 > > inl rec _assert_fn fn list = 00:06:05 v #7391 > > list 00:06:05 v #7392 > > |> listm.rev 00:06:05 v #7393 > > |> listm.map fun input, expected => join 00:06:05 v #7394 > > input 00:06:05 v #7395 > > |> fn 00:06:05 v #7396 > > |> resultm.get 00:06:05 v #7397 > > |> fun x => 00:06:05 v #7398 > > inl expected' = join expected 00:06:05 v #7399 > > inl name = reflection.nameof { _assert_fn } 00:06:05 v #7400 > > try 00:06:05 v #7401 > > fun () => 00:06:05 v #7402 > > console.write_line "" 00:06:05 v #7403 > > trace Verbose 00:06:05 v #7404 > > fun () => name 00:06:05 v #7405 > > fun () => { input } 00:06:05 v #7406 > > x 00:06:05 v #7407 > > |> sm'.format 00:06:05 v #7408 > > |> _assert_eq' (expected' |> sm'.format) 00:06:05 v #7409 > > true 00:06:05 v #7410 > > fun ex => 00:06:05 v #7411 > > trace Critical 00:06:05 v #7412 > > fun () => 00:06:05 v #7413 > > backend_switch { 00:06:05 v #7414 > > Fsharp = fun () => $'$"{!name} / error"' : 00:06:05 v #7415 > > string 00:06:05 v #7416 > > Python = fun () => $'f"{!name} / error"' : 00:06:05 v #7417 > > string 00:06:05 v #7418 > > } 00:06:05 v #7419 > > fun () => { ex expected } 00:06:05 v #7420 > > Some false 00:06:05 v #7421 > > |> optionm.value 00:06:05 v #7422 > > |> listm'.filter not 00:06:05 v #7423 > > |> function 00:06:05 v #7424 > > | [[]] => () 00:06:05 v #7425 > > | x => x |> sm'.format_debug |> failwith 00:06:05 v #7426 > > 00:06:05 v #7427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #7428 > > │ ## fsharp 00:06:05 v #7429 > > 00:06:05 v #7430 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:05 v #7431 > > │ ### __assert_contains 00:06:05 v #7432 > > 00:06:05 v #7433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #7434 > > inl rec __assert_contains forall t u. (trace : testing_trace) (b : t) (a : u) : 00:06:05 v #7435 > > () = 00:06:05 v #7436 > > __expect 00:06:05 v #7437 > > fun a b => 00:06:05 v #7438 > > a 00:06:05 v #7439 > > |> $'List.ofSeq' 00:06:05 v #7440 > > |> fun x => x : listm'.list' t 00:06:05 v #7441 > > |> $'List.tryFind' ((=) b) 00:06:05 v #7442 > > |> optionm'.unbox 00:06:05 v #7443 > > |> fun (x : option t) => x <> None 00:06:05 v #7444 > > trace 00:06:05 v #7445 > > // TODO: forall nameof (Cannot dyn a forall into a runtime var.) 00:06:05 v #7446 > > // Metavars that are not part of the enclosing function's signature are 00:06:05 v #7447 > > not allowed. They need to be values. 00:06:05 v #7448 > > // Got: {__assert_contains : testing_trace -> _ -> _ -> ()} -> string 00:06:05 v #7449 > > // (reflection.nameof { __assert_contains }) 00:06:05 v #7450 > > "__assert_contains" 00:06:05 v #7451 > > b 00:06:05 v #7452 > > a 00:06:05 v #7453 > > 00:06:05 v #7454 > > inl _assert_contains b a = 00:06:05 v #7455 > > __assert_contains Console b a 00:06:05 v #7456 > > 00:06:05 v #7457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #7458 > > //// test 00:06:05 v #7459 > > 00:06:05 v #7460 > > ;[[ "a"; "b"; "c" ]] 00:06:05 v #7461 > > |> _assert_contains "b" 00:06:05 v #7462 > > 00:06:05 v #7463 > > ── [ 498.45ms - stdout ] ─────────────────────────────────────────────────────── 00:06:05 v #7464 > > │ __assert_contains / actual: [|"a"; "b"; "c"|] / expected: "b" 00:06:05 v #7465 > > │ 00:06:05 v #7466 > > 00:06:05 v #7467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:05 v #7468 > > //// test 00:06:05 v #7469 > > 00:06:05 v #7470 > > "abcd" 00:06:05 v #7471 > > |> _assert_contains 'b' 00:06:06 v #7472 > > 00:06:06 v #7473 > > ── [ 197.51ms - stdout ] ─────────────────────────────────────────────────────── 00:06:06 v #7474 > > │ __assert_contains / actual: "abcd" / expected: 'b' 00:06:06 v #7475 > > │ 00:06:06 v #7476 > > 00:06:06 v #7477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:06 v #7478 > > │ ### _throws 00:06:06 v #7479 > > 00:06:06 v #7480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:06 v #7481 > > inl _throws (fn : () -> ()) : option exn = 00:06:06 v #7482 > > inl none = None : option exn 00:06:06 v #7483 > > inl some (s : exn) = Some s 00:06:06 v #7484 > > backend_switch { 00:06:06 v #7485 > > Fsharp = fun () => 00:06:06 v #7486 > > $'try !fn (); !none with ex -> ex |> !some ' : option exn 00:06:06 v #7487 > > Python = fun () => 00:06:06 v #7488 > > $'fn = !fn ' 00:06:06 v #7489 > > $'none = !none ' 00:06:06 v #7490 > > $'some = !some ' 00:06:06 v #7491 > > $'try: fn(); x = none ' 00:06:06 v #7492 > > $'except Exception as ex: x = some(ex)' 00:06:06 v #7493 > > $'x' : option exn 00:06:06 v #7494 > > } 00:06:06 v #7495 > > 00:06:06 v #7496 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:06 v #7497 > > │ ### print_and_return 00:06:06 v #7498 > > 00:06:06 v #7499 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:06 v #7500 > > inl rec print_and_return x = 00:06:06 v #7501 > > inl name = reflection.nameof { print_and_return } 00:06:06 v #7502 > > backend_switch { 00:06:06 v #7503 > > Fsharp = fun () => $'printfn $"{!name} / x: {!x}"' : () 00:06:06 v #7504 > > Python = fun () => $'print(f"{!name} / x: {!x}")' : () 00:06:06 v #7505 > > } 00:06:06 v #7506 > > x 00:06:06 v #7507 > 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 14123 } 00:06:06 v #7508 > 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:07 v #7509 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.ipynb to html 00:06:07 v #7510 > 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:07 v #7511 > 00:00:17 v #7 ! validate(nb) 00:06:07 v #7512 > 00:00:18 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:07 v #7513 > 00:00:18 v #9 ! return _pygments_highlight( 00:06:07 v #7514 > 00:00:18 v #10 ! [NbConvertApp] Writing 321554 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html 00:06:07 v #7515 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:06:07 v #7516 > 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:06:07 v #7517 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/testing.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:08 v #7518 > 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:08 v #7519 > 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:08 v #7520 > 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 15080 } 00:06:08 d #7521 runtime.execute_with_options_async / { exit_code = 0; output_length = 18496 } 00:06:08 d #9 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path testing.dib --retries 3 00:06:08 d #7522 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path guid.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:08 v #7523 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "guid.dib", "--retries", "3"])) } 00:06:08 v #7524 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:09 v #7525 > > 00:06:09 v #7526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:09 v #7527 > > │ # guid 00:06:11 v #7528 > > 00:06:11 v #7529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:11 v #7530 > > //// test 00:06:11 v #7531 > > 00:06:11 v #7532 > > open testing 00:06:12 v #7533 > > 00:06:12 v #7534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:12 v #7535 > > │ ## guid 00:06:12 v #7536 > > 00:06:12 v #7537 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:12 v #7538 > > │ ### guid 00:06:12 v #7539 > > 00:06:12 v #7540 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:12 v #7541 > > nominal guid_python = 00:06:12 v #7542 > > `( 00:06:12 v #7543 > > global "import uuid" 00:06:12 v #7544 > > $'' : $'uuid.UUID' 00:06:12 v #7545 > > ) 00:06:12 v #7546 > > type guid_switch = 00:06:12 v #7547 > > { 00:06:12 v #7548 > > Fsharp : $'System.Guid' 00:06:12 v #7549 > > Python : guid_python 00:06:12 v #7550 > > } 00:06:12 v #7551 > > nominal guid = $'backend_switch `(guid_switch)' 00:06:12 v #7552 > > 00:06:12 v #7553 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:12 v #7554 > > │ ### new_guid 00:06:12 v #7555 > > 00:06:12 v #7556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:12 v #7557 > > inl new_guid (x : string) : guid = 00:06:12 v #7558 > > run_target_args (fun () => x) function 00:06:12 v #7559 > > | Rust (Contract) => fun _ => null () 00:06:12 v #7560 > > | _ => fun x => x |> convert 00:06:12 v #7561 > > 00:06:12 v #7562 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:12 v #7563 > > │ ### new_raw_guid 00:06:12 v #7564 > > 00:06:12 v #7565 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:12 v #7566 > > inl new_raw_guid () : guid = 00:06:12 v #7567 > > backend_switch { 00:06:12 v #7568 > > Fsharp = fun () => $'System.Guid.NewGuid' () : guid 00:06:12 v #7569 > > Python = fun () => $'uuid.uuid4()' : guid 00:06:12 v #7570 > > } 00:06:13 v #7571 > > 00:06:13 v #7572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:13 v #7573 > > │ ### hash_guid 00:06:13 v #7574 > > 00:06:13 v #7575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:13 v #7576 > > type hash_guid = guid 00:06:13 v #7577 > > 00:06:13 v #7578 > > let hash_guid (hash : string) : hash_guid = 00:06:13 v #7579 > > inl hash = hash |> sm'.pad_left 32i32 '0' 00:06:13 v #7580 > > run_target_args (fun () => hash) function 00:06:13 v #7581 > > | Rust (Contract) => fun _ => null () 00:06:13 v #7582 > > | _ => fun hash => 00:06:13 v #7583 > > inl a = hash |> sm'.range (am'.Start 0i32) (am'.End fun _ => 8) 00:06:13 v #7584 > > inl b = hash |> sm'.range (am'.Start 8i32) (am'.End fun _ => 12) 00:06:13 v #7585 > > inl c = hash |> sm'.range (am'.Start 12i32) (am'.End fun _ => 16) 00:06:13 v #7586 > > inl d = hash |> sm'.range (am'.Start 16i32) (am'.End fun _ => 20) 00:06:13 v #7587 > > inl e = hash |> sm'.range (am'.Start 20i32) (am'.End fun _ => 32) 00:06:13 v #7588 > > $'$"{!a}-{!b}-{!c}-{!d}-{!e}"' |> new_guid 00:06:13 v #7589 > > 00:06:13 v #7590 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:13 v #7591 > > //// test 00:06:13 v #7592 > > ///! fsharp 00:06:13 v #7593 > > ///! cuda 00:06:13 v #7594 > > ///! rust 00:06:13 v #7595 > > ///! typescript 00:06:13 v #7596 > > ///! python 00:06:13 v #7597 > > 00:06:13 v #7598 > > "" 00:06:13 v #7599 > > |> hash_guid 00:06:13 v #7600 > > |> _assert_eq' (new_guid "00000000-0000-0000-0000-000000000000") 00:06:13 v #7601 > > 00:06:13 v #7602 > > "123456789012345678901234567890123" 00:06:13 v #7603 > > |> hash_guid 00:06:13 v #7604 > > |> _assert_eq' (new_guid "12345678-9012-3456-7890-123456789012") 00:06:22 v #7605 > > 00:06:22 v #7606 > > ── [ 9.15s - return value ] ──────────────────────────────────────────────────── 00:06:22 v #7607 > > │ 00:06:22 v #7608 > > │ .py output (Cuda): 00:06:22 v #7609 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 00:06:22 v #7610 > > expected: 00000000-0000-0000-0000-000000000000 00:06:22 v #7611 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 00:06:22 v #7612 > > expected: 12345678-9012-3456-7890-123456789012 00:06:22 v #7613 > > │ 00:06:22 v #7614 > > │ 00:06:22 v #7615 > > │ .rs output: 00:06:22 v #7616 > > │ __assert_eq' / actual: 00:06:22 v #7617 > > Guid(00000000-0000-0000-0000-000000000000) / expected: 00:06:22 v #7618 > > Guid(00000000-0000-0000-0000-000000000000) 00:06:22 v #7619 > > │ __assert_eq' / actual: 00:06:22 v #7620 > > Guid(12345678-9012-3456-7890-123456789012) / expected: 00:06:22 v #7621 > > Guid(12345678-9012-3456-7890-123456789012) 00:06:22 v #7622 > > │ 00:06:22 v #7623 > > │ 00:06:22 v #7624 > > │ .ts output: 00:06:22 v #7625 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 00:06:22 v #7626 > > expected: 00000000-0000-0000-0000-000000000000 00:06:22 v #7627 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 00:06:22 v #7628 > > expected: 12345678-9012-3456-7890-123456789012 00:06:22 v #7629 > > │ 00:06:22 v #7630 > > │ 00:06:22 v #7631 > > │ .py output: 00:06:22 v #7632 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 00:06:22 v #7633 > > expected: 00000000-0000-0000-0000-000000000000 00:06:22 v #7634 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 00:06:22 v #7635 > > expected: 12345678-9012-3456-7890-123456789012 00:06:22 v #7636 > > │ 00:06:22 v #7637 > > │ 00:06:22 v #7638 > > │ 00:06:22 v #7639 > > 00:06:22 v #7640 > > ── [ 9.16s - stdout ] ────────────────────────────────────────────────────────── 00:06:22 v #7641 > > │ .fsx output: 00:06:22 v #7642 > > │ __assert_eq' / actual: 00000000-0000-0000-0000-000000000000 00:06:22 v #7643 > > expected: 00000000-0000-0000-0000-000000000000 00:06:22 v #7644 > > │ __assert_eq' / actual: 12345678-9012-3456-7890-123456789012 00:06:22 v #7645 > > expected: 12345678-9012-3456-7890-123456789012 00:06:22 v #7646 > > │ 00:06:22 v #7647 > > 00:06:22 v #7648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:22 v #7649 > > │ ## main 00:06:22 v #7650 > > 00:06:22 v #7651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:22 v #7652 > > inl main () = 00:06:22 v #7653 > > $'let new_guid x = !new_guid x' : () 00:06:22 v #7654 > > $'let hash_guid x = !hash_guid x' : () 00:06:22 v #7655 > > $'let new_raw_guid x = !new_raw_guid x' : () 00:06:22 v #7656 > 00:00:14 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5263 } 00:06:22 v #7657 > 00:00:14 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:23 v #7658 > 00:00:15 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.ipynb to html 00:06:23 v #7659 > 00:00:15 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:23 v #7660 > 00:00:15 v #7 ! validate(nb) 00:06:23 v #7661 > 00:00:15 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:23 v #7662 > 00:00:15 v #9 ! return _pygments_highlight( 00:06:24 v #7663 > 00:00:15 v #10 ! [NbConvertApp] Writing 287180 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html 00:06:24 v #7664 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:06:24 v #7665 > 00:00:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:06:24 v #7666 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/guid.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:24 v #7667 > 00:00:16 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:24 v #7668 > 00:00:16 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:24 v #7669 > 00:00:16 d #16 spiral.run / dib / { exit_code = 0; result_length = 6214 } 00:06:24 d #7670 runtime.execute_with_options_async / { exit_code = 0; output_length = 9111 } 00:06:24 d #10 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path guid.dib --retries 3 00:06:24 d #7671 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:24 v #7672 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "async.dib", "--retries", "3"])) } 00:06:24 v #7673 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:25 v #7674 > > 00:06:25 v #7675 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:25 v #7676 > > │ # async 00:06:28 v #7677 > > 00:06:28 v #7678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:28 v #7679 > > //// test 00:06:28 v #7680 > > 00:06:28 v #7681 > > open testing 00:06:28 v #7682 > > 00:06:28 v #7683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:28 v #7684 > > open rust 00:06:28 v #7685 > > open rust_operators 00:06:29 v #7686 > > 00:06:29 v #7687 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7688 > > │ ### base_let' 00:06:29 v #7689 > > 00:06:29 v #7690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7691 > > inl base_let' x = 00:06:29 v #7692 > > let' x 00:06:29 v #7693 > > 00:06:29 v #7694 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7695 > > │ ## rust 00:06:29 v #7696 > > 00:06:29 v #7697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7698 > > │ ### future 00:06:29 v #7699 > > 00:06:29 v #7700 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7701 > > nominal future t = 00:06:29 v #7702 > > `( 00:06:29 v #7703 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:29 v #7704 > > Fable.Core.Emit(\"std::future::Future<Output = $0>\")>]]\n#endif\ntype 00:06:29 v #7705 > > std_future_Future<'T> = class end" 00:06:29 v #7706 > > $'' : $'std_future_Future<`t>' 00:06:29 v #7707 > > ) 00:06:29 v #7708 > > 00:06:29 v #7709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7710 > > │ ### future_pin 00:06:29 v #7711 > > 00:06:29 v #7712 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7713 > > type future_pin t = rust.pin (rust.box (rust.dyn' (future t))) 00:06:29 v #7714 > > 00:06:29 v #7715 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7716 > > │ ### future_pin_send 00:06:29 v #7717 > > 00:06:29 v #7718 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7719 > > type future_pin_send t = rust.pin (rust.box (rust.send (rust.dyn' (future t)))) 00:06:29 v #7720 > > 00:06:29 v #7721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7722 > > │ ### block_on_tokio 00:06:29 v #7723 > > 00:06:29 v #7724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7725 > > inl block_on_tokio forall t. (fn : future_pin t) : t = 00:06:29 v #7726 > > inl runtime : infer = 00:06:29 v #7727 > > 00:06:29 v #7728 > > !\($'$"tokio::runtime::Builder::new_multi_thread().enable_all().build().unwrap() 00:06:29 v #7729 > > "') 00:06:29 v #7730 > > !\\(fn, $'"!runtime.handle().block_on($0)"') 00:06:29 v #7731 > > 00:06:29 v #7732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7733 > > │ ### block_on_futures_lite 00:06:29 v #7734 > > 00:06:29 v #7735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7736 > > inl block_on_futures_lite forall t. (fn : future_pin t) : t = 00:06:29 v #7737 > > !\\(fn, $'"futures_lite::future::block_on($0)"') 00:06:29 v #7738 > > 00:06:29 v #7739 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:29 v #7740 > > │ ### block_on_futures 00:06:29 v #7741 > > 00:06:29 v #7742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:29 v #7743 > > inl block_on_futures forall t. (fn : future_pin t) : t = 00:06:29 v #7744 > > !\\(fn, $'"futures::executor::block_on($0)"') 00:06:30 v #7745 > > 00:06:30 v #7746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7747 > > │ ### block_on_async_std 00:06:30 v #7748 > > 00:06:30 v #7749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7750 > > inl block_on_async_std forall t. (fn : future_pin t) : t = 00:06:30 v #7751 > > !\\(fn, $'"async_std::task::block_on($0)"') 00:06:30 v #7752 > > 00:06:30 v #7753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7754 > > │ ### block_on_tokio_send 00:06:30 v #7755 > > 00:06:30 v #7756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7757 > > inl block_on_tokio_send forall t. (fn : future_pin_send t) : t = 00:06:30 v #7758 > > !\($'"tokio::runtime::block_on(!fn)"') 00:06:30 v #7759 > > 00:06:30 v #7760 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7761 > > │ ### stream_ext_tokio 00:06:30 v #7762 > > 00:06:30 v #7763 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7764 > > nominal stream_ext_tokio = 00:06:30 v #7765 > > `( 00:06:30 v #7766 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:30 v #7767 > > Fable.Core.Emit(\"tokio_stream::StreamExt\")>]]\n#endif\ntype 00:06:30 v #7768 > > tokio_stream_StreamExt = class end" 00:06:30 v #7769 > > $'' : $'tokio_stream_StreamExt' 00:06:30 v #7770 > > ) 00:06:30 v #7771 > > 00:06:30 v #7772 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7773 > > │ ### join_handle_tokio 00:06:30 v #7774 > > 00:06:30 v #7775 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7776 > > nominal join_handle_tokio t = 00:06:30 v #7777 > > `( 00:06:30 v #7778 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:30 v #7779 > > Fable.Core.Emit(\"tokio::task::JoinHandle<$0>\")>]]\n#endif\ntype 00:06:30 v #7780 > > tokio_task_JoinHandle<'T> = class end" 00:06:30 v #7781 > > $'' : $'tokio_task_JoinHandle<`t>' 00:06:30 v #7782 > > ) 00:06:30 v #7783 > > 00:06:30 v #7784 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7785 > > │ ### stream_collect_tokio 00:06:30 v #7786 > > 00:06:30 v #7787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7788 > > inl stream_collect_tokio forall t u. 00:06:30 v #7789 > > (stream : t) 00:06:30 v #7790 > > : future_pin (am'.vec u) 00:06:30 v #7791 > > = 00:06:30 v #7792 > > !\($'"Box::pin(tokio_stream::StreamExt::collect(!stream))"') 00:06:30 v #7793 > > 00:06:30 v #7794 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:30 v #7795 > > │ ### stream_collect_futures 00:06:30 v #7796 > > 00:06:30 v #7797 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:30 v #7798 > > inl stream_collect_futures forall t u. 00:06:30 v #7799 > > (stream : t) 00:06:30 v #7800 > > : future_pin (am'.vec u) 00:06:30 v #7801 > > = 00:06:30 v #7802 > > !\($'"Box::pin(futures::stream::StreamExt::collect(!stream))"') 00:06:31 v #7803 > > 00:06:31 v #7804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7805 > > │ ### stream_next_tokio 00:06:31 v #7806 > > 00:06:31 v #7807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7808 > > inl stream_next_tokio forall t u. 00:06:31 v #7809 > > (stream : t) 00:06:31 v #7810 > > : future_pin (optionm'.option' u) 00:06:31 v #7811 > > = 00:06:31 v #7812 > > !\($'"let mut !stream = !stream"') 00:06:31 v #7813 > > !\($'"Box::pin(tokio_stream::StreamExt::next(&mut !stream))"') 00:06:31 v #7814 > > 00:06:31 v #7815 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7816 > > │ ### stream_filter_map_tokio 00:06:31 v #7817 > > 00:06:31 v #7818 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7819 > > inl stream_filter_map_tokio forall t u v. 00:06:31 v #7820 > > (fn : u -> optionm'.option' v) 00:06:31 v #7821 > > (stream : t) 00:06:31 v #7822 > > : infer' v 00:06:31 v #7823 > > = 00:06:31 v #7824 > > inl fn = join fn 00:06:31 v #7825 > > !\($'"tokio_stream::StreamExt::filter_map(!stream, |x| !fn(x))"') 00:06:31 v #7826 > > 00:06:31 v #7827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7828 > > │ ### stream_filter_map_futures 00:06:31 v #7829 > > 00:06:31 v #7830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7831 > > inl stream_filter_map_futures forall t u v. 00:06:31 v #7832 > > (fn : u -> optionm'.option' v) 00:06:31 v #7833 > > (stream : t) 00:06:31 v #7834 > > : infer' v 00:06:31 v #7835 > > = 00:06:31 v #7836 > > inl fn = join fn 00:06:31 v #7837 > > !\($'"futures::stream::StreamExt::filter_map(!stream, |x| async { !fn(x) 00:06:31 v #7838 > > })"') 00:06:31 v #7839 > > 00:06:31 v #7840 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7841 > > │ ### spawn_tokio 00:06:31 v #7842 > > 00:06:31 v #7843 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7844 > > inl spawn_tokio forall t. (fn : future_pin_send t) : join_handle_tokio t = 00:06:31 v #7845 > > !\($'"tokio::runtime::spawn(!fn)"') 00:06:31 v #7846 > > 00:06:31 v #7847 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7848 > > │ ### try_join_all 00:06:31 v #7849 > > 00:06:31 v #7850 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7851 > > nominal try_join_all t = 00:06:31 v #7852 > > `( 00:06:31 v #7853 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:31 v #7854 > > Fable.Core.Emit(\"futures::future::TryJoinAll<$0>\")>]]\n#endif\ntype 00:06:31 v #7855 > > futures_future_TryJoinAll<'T> = class end" 00:06:31 v #7856 > > $'' : $'futures_future_TryJoinAll<`t>' 00:06:31 v #7857 > > ) 00:06:31 v #7858 > > 00:06:31 v #7859 > > inl try_join_all forall t. (x : am'.vec (future_pin (resultm.result' t 00:06:31 v #7860 > > sm'.std_string))) : try_join_all (future_pin (resultm.result' t sm'.std_string)) 00:06:31 v #7861 > > = 00:06:31 v #7862 > > inl x = join x 00:06:31 v #7863 > > !\($'"futures::future::try_join_all(!x)"') 00:06:31 v #7864 > > 00:06:31 v #7865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7866 > > │ ### fuse_tokio 00:06:31 v #7867 > > 00:06:31 v #7868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7869 > > nominal fuse_tokio t = 00:06:31 v #7870 > > `( 00:06:31 v #7871 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:31 v #7872 > > Fable.Core.Emit(\"tokio::prelude::stream::Fuse<$0>\")>]]\n#endif\ntype 00:06:31 v #7873 > > tokio_prelude_stream_Fuse<'T> = class end" 00:06:31 v #7874 > > $'' : $'tokio_prelude_stream_Fuse<`t>' 00:06:31 v #7875 > > ) 00:06:31 v #7876 > > 00:06:31 v #7877 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:31 v #7878 > > │ ### fuse' 00:06:31 v #7879 > > 00:06:31 v #7880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:31 v #7881 > > type fuse' t = fuse_tokio t 00:06:32 v #7882 > > 00:06:32 v #7883 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7884 > > │ ### future_fuse 00:06:32 v #7885 > > 00:06:32 v #7886 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7887 > > inl future_fuse forall t. (x : future_pin t) : fuse' (future_pin t) = 00:06:32 v #7888 > > !\($'"futures::future::FutureExt::fuse(!x)"') 00:06:32 v #7889 > > 00:06:32 v #7890 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7891 > > │ ### join_all 00:06:32 v #7892 > > 00:06:32 v #7893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7894 > > nominal join_all t = 00:06:32 v #7895 > > `( 00:06:32 v #7896 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:32 v #7897 > > Fable.Core.Emit(\"futures::future::JoinAll<$0>\")>]]\n#endif\ntype 00:06:32 v #7898 > > futures_future_JoinAll<'T> = class end" 00:06:32 v #7899 > > $'' : $'futures_future_JoinAll<`t>' 00:06:32 v #7900 > > ) 00:06:32 v #7901 > > 00:06:32 v #7902 > > inl join_all forall t. (x : am'.vec (future_pin t)) : join_all (future_pin t) = 00:06:32 v #7903 > > inl x = join x 00:06:32 v #7904 > > !\($'"futures::future::join_all(!x)"') 00:06:32 v #7905 > > 00:06:32 v #7906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7907 > > │ ### join_all_send 00:06:32 v #7908 > > 00:06:32 v #7909 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7910 > > inl join_all_send forall t. (x : am'.vec (future_pin_send t)) : join_all 00:06:32 v #7911 > > (future_pin_send t) = 00:06:32 v #7912 > > inl x = join x 00:06:32 v #7913 > > !\($'"futures::future::join_all(!x)"') 00:06:32 v #7914 > > 00:06:32 v #7915 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7916 > > │ ### join_handle' 00:06:32 v #7917 > > 00:06:32 v #7918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7919 > > type join_handle' t = join_handle_tokio t 00:06:32 v #7920 > > 00:06:32 v #7921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7922 > > │ ### await_handle 00:06:32 v #7923 > > 00:06:32 v #7924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7925 > > inl await_handle forall t. (x : join_handle' t) : t = 00:06:32 v #7926 > > !\($'"!x.await"') 00:06:32 v #7927 > > 00:06:32 v #7928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:32 v #7929 > > │ ### await_all 00:06:32 v #7930 > > 00:06:32 v #7931 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:32 v #7932 > > inl await_all forall t. (x : join_all (future_pin t)) : am'.vec t = 00:06:32 v #7933 > > !\($'"!x.await"') 00:06:33 v #7934 > > 00:06:33 v #7935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7936 > > │ ### await_all_send 00:06:33 v #7937 > > 00:06:33 v #7938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7939 > > inl await_all_send forall t. (x : join_all (future_pin_send t)) : am'.vec t = 00:06:33 v #7940 > > !\($'"!x.await"') 00:06:33 v #7941 > > 00:06:33 v #7942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7943 > > │ ### try_await_all 00:06:33 v #7944 > > 00:06:33 v #7945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7946 > > inl try_await_all forall t. (x : try_join_all (future_pin (resultm.result' t 00:06:33 v #7947 > > sm'.std_string))) : resultm.result' (am'.vec t) sm'.std_string = 00:06:33 v #7948 > > !\($'"!x.await"') 00:06:33 v #7949 > > 00:06:33 v #7950 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7951 > > │ ### try_await_all_send 00:06:33 v #7952 > > 00:06:33 v #7953 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7954 > > inl try_await_all_send forall t. (x : try_join_all (future_pin_send 00:06:33 v #7955 > > (resultm.result' t sm'.std_string))) : resultm.result' (am'.vec t) 00:06:33 v #7956 > > sm'.std_string = 00:06:33 v #7957 > > !\($'"!x.await"') 00:06:33 v #7958 > > 00:06:33 v #7959 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7960 > > │ ### await 00:06:33 v #7961 > > 00:06:33 v #7962 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7963 > > inl await forall t. (x : future_pin t) : t = 00:06:33 v #7964 > > !\($'"!x.await"') 00:06:33 v #7965 > > 00:06:33 v #7966 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7967 > > │ ### await 00:06:33 v #7968 > > 00:06:33 v #7969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7970 > > inl await_send forall t. (x : future_pin_send t) : t = 00:06:33 v #7971 > > !\($'"!x.await"') 00:06:33 v #7972 > > 00:06:33 v #7973 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7974 > > │ ### into_iter 00:06:33 v #7975 > > 00:06:33 v #7976 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7977 > > nominal into_iter t = 00:06:33 v #7978 > > `( 00:06:33 v #7979 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:33 v #7980 > > Fable.Core.Emit(\"rayon::vec::IntoIter<$0>\")>]]\n#endif\ntype 00:06:33 v #7981 > > rayon_vec_IntoIter<'T> = class end" 00:06:33 v #7982 > > $'' : $'rayon_vec_IntoIter<`t>' 00:06:33 v #7983 > > ) 00:06:33 v #7984 > > 00:06:33 v #7985 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:33 v #7986 > > │ ### into_par_iter 00:06:33 v #7987 > > 00:06:33 v #7988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:33 v #7989 > > inl into_par_iter forall t. (x : am'.vec t) : into_iter t = 00:06:33 v #7990 > > !\\(x, $'"rayon::iter::IntoParallelIterator::into_par_iter($0)"') 00:06:34 v #7991 > > 00:06:34 v #7992 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #7993 > > │ ### par_iter 00:06:34 v #7994 > > 00:06:34 v #7995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #7996 > > inl par_iter forall t. (x : am'.vec t) : into_iter t = 00:06:34 v #7997 > > !\($'"rayon::iter::IntoParallelIterator::par_iter(!x)"') 00:06:34 v #7998 > > 00:06:34 v #7999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8000 > > │ ### iter_map 00:06:34 v #8001 > > 00:06:34 v #8002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8003 > > nominal iter_map t u = 00:06:34 v #8004 > > `( 00:06:34 v #8005 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:06:34 v #8006 > > Fable.Core.Emit(\"rayon::iter::Map<$0, _>\")>]]\n#endif\ntype rayon_iter_Map<'T> 00:06:34 v #8007 > > = class end" 00:06:34 v #8008 > > $'' : $'rayon_iter_Map<`t>' 00:06:34 v #8009 > > ) 00:06:34 v #8010 > > 00:06:34 v #8011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8012 > > │ ### par_map 00:06:34 v #8013 > > 00:06:34 v #8014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8015 > > inl par_map forall t u. (fn : t -> u) (ar : into_iter t) : iter_map (into_iter 00:06:34 v #8016 > > t) u = 00:06:34 v #8017 > > !\\((ar, fn), $'"rayon::iter::ParallelIterator::map($0, |x| $1(x))"') 00:06:34 v #8018 > > 00:06:34 v #8019 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8020 > > │ ### par_collect 00:06:34 v #8021 > > 00:06:34 v #8022 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8023 > > inl par_collect forall t u. (iter : iter_map (into_iter t) u) : am'.vec u = 00:06:34 v #8024 > > !\\(iter, $'"rayon::iter::ParallelIterator::collect($0)"') 00:06:34 v #8025 > > 00:06:34 v #8026 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8027 > > │ ### try_join_all_iter 00:06:34 v #8028 > > 00:06:34 v #8029 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8030 > > inl try_join_all_iter forall t. (x : am'.vec (future_pin_send (resultm.result' t 00:06:34 v #8031 > > sm'.std_string))) : try_join_all (future_pin_send (resultm.result' t 00:06:34 v #8032 > > sm'.std_string)) = 00:06:34 v #8033 > > inl x = join x 00:06:34 v #8034 > > !\($'"futures::future::try_join_all(!x)"') 00:06:34 v #8035 > > 00:06:34 v #8036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8037 > > │ ### future_init 00:06:34 v #8038 > > 00:06:34 v #8039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8040 > > inl future_init forall t. (move : bool) (x : () -> t) : infer' t = 00:06:34 v #8041 > > (!\($'"true; let __future_init = Box::pin(/*"') : bool) |> ignore 00:06:34 v #8042 > > if move 00:06:34 v #8043 > > then (!\($'"*/ async move { /*"') : bool) |> ignore 00:06:34 v #8044 > > else (!\($'"*/ async { /*"') : bool) |> ignore 00:06:34 v #8045 > > (!\($'"*/ //"') : bool) |> ignore 00:06:34 v #8046 > > 00:06:34 v #8047 > > inl x' = x () 00:06:34 v #8048 > > // inl x' = join x' 00:06:34 v #8049 > > 00:06:34 v #8050 > > inl depth = 1, 0 00:06:34 v #8051 > > 00:06:34 v #8052 > > x' |> rust.fix_closure depth 00:06:34 v #8053 > > 00:06:34 v #8054 > > !\($'"__future_init"') 00:06:34 v #8055 > > 00:06:34 v #8056 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:34 v #8057 > > │ ### new_future 00:06:34 v #8058 > > 00:06:34 v #8059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:34 v #8060 > > inl new_future forall t. (x : () -> t) : future_pin t = 00:06:34 v #8061 > > inl result = future_init false x 00:06:34 v #8062 > > !\($'"!result"') 00:06:35 v #8063 > > 00:06:35 v #8064 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8065 > > │ ### new_future_move 00:06:35 v #8066 > > 00:06:35 v #8067 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8068 > > inl new_future_move forall t. (x : () -> t) : future_pin t = 00:06:35 v #8069 > > inl result = future_init true x 00:06:35 v #8070 > > !\($'"!result"') 00:06:35 v #8071 > > 00:06:35 v #8072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8073 > > │ ### new_future_send 00:06:35 v #8074 > > 00:06:35 v #8075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8076 > > inl new_future_send forall t. (x : () -> t) : future_pin_send t = 00:06:35 v #8077 > > inl result = future_init false x 00:06:35 v #8078 > > !\($'"!result"') 00:06:35 v #8079 > > 00:06:35 v #8080 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8081 > > │ ### new_future_move_send 00:06:35 v #8082 > > 00:06:35 v #8083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8084 > > inl new_future_move_send forall t. (x : () -> t) : future_pin_send t = 00:06:35 v #8085 > > inl result = future_init true x 00:06:35 v #8086 > > !\($'"!result"') 00:06:35 v #8087 > > 00:06:35 v #8088 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8089 > > │ ## fsharp 00:06:35 v #8090 > > 00:06:35 v #8091 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8092 > > │ ### async 00:06:35 v #8093 > > 00:06:35 v #8094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8095 > > nominal async_python t = 00:06:35 v #8096 > > `( 00:06:35 v #8097 > > backend_switch `(()) `({}) { 00:06:35 v #8098 > > Python = (fun () => global "import asyncio") : () -> () 00:06:35 v #8099 > > } 00:06:35 v #8100 > > $'' : $'any' 00:06:35 v #8101 > > ) 00:06:35 v #8102 > > type async_switch t = 00:06:35 v #8103 > > { 00:06:35 v #8104 > > Fsharp : $'Async<`t>' 00:06:35 v #8105 > > Python : async_python t 00:06:35 v #8106 > > } 00:06:35 v #8107 > > nominal async t = $'backend_switch `(async_switch t)' 00:06:35 v #8108 > > 00:06:35 v #8109 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8110 > > │ ### task 00:06:35 v #8111 > > 00:06:35 v #8112 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8113 > > nominal task t = 00:06:35 v #8114 > > `( 00:06:35 v #8115 > > typecase t with 00:06:35 v #8116 > > | () => $'' : $'System.Threading.Tasks.Task' 00:06:35 v #8117 > > | _ => $'' : $'System.Threading.Tasks.Task<`t>' 00:06:35 v #8118 > > ) 00:06:35 v #8119 > > 00:06:35 v #8120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:35 v #8121 > > │ ### new_async_unit 00:06:35 v #8122 > > 00:06:35 v #8123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:35 v #8124 > > inl new_async_unit forall t. (fn : () -> ()) : async t = 00:06:35 v #8125 > > join 00:06:35 v #8126 > > run_target_args' fn function 00:06:35 v #8127 > > | Fsharp _ 00:06:35 v #8128 > > // | Rust _ 00:06:35 v #8129 > > | TypeScript _ 00:06:35 v #8130 > > | Python _ => fun fn => 00:06:35 v #8131 > > fun () => 00:06:35 v #8132 > > $'async {' 00:06:35 v #8133 > > fun () => 00:06:35 v #8134 > > fn () 00:06:35 v #8135 > > real 00:06:35 v #8136 > > typecase t with 00:06:35 v #8137 > > | () => $'()' : () 00:06:35 v #8138 > > | _ => () 00:06:35 v #8139 > > |> indent 00:06:35 v #8140 > > $'}' : () 00:06:35 v #8141 > > |> base_let' 00:06:35 v #8142 > > | Cuda _ => fun fn => 00:06:35 v #8143 > > $'async def __new_async_unit__():' 00:06:35 v #8144 > > fun () => 00:06:35 v #8145 > > fn () 00:06:35 v #8146 > > $'""" new_async_unit' 00:06:35 v #8147 > > |> indent 00:06:35 v #8148 > > $'new_async_unit """' 00:06:35 v #8149 > > $'__new_async_unit__' 00:06:35 v #8150 > > | _ => fun _ => null () 00:06:36 v #8151 > > 00:06:36 v #8152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8153 > > │ ### new_async 00:06:36 v #8154 > > 00:06:36 v #8155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8156 > > inl new_async forall t. (fn : () -> t) : async t = 00:06:36 v #8157 > > new_async_unit (fn >> ignore) 00:06:36 v #8158 > > 00:06:36 v #8159 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8160 > > │ ### new_task 00:06:36 v #8161 > > 00:06:36 v #8162 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8163 > > inl new_task forall t. (fn : () -> t) : task t = 00:06:36 v #8164 > > run_target_args' fn function 00:06:36 v #8165 > > | Fsharp _ => fun fn => 00:06:36 v #8166 > > inl result : optionm'.option' (task t) = optionm'.none' () 00:06:36 v #8167 > > $'let mutable _new_task_!result = !result ' 00:06:36 v #8168 > > $'task {' 00:06:36 v #8169 > > fn () |> ignore 00:06:36 v #8170 > > $'}' 00:06:36 v #8171 > > $'|> fun x -> _new_task_!result <- Some x' 00:06:36 v #8172 > > $'match _new_task_!result with Some x -> x | None -> failwith 00:06:36 v #8173 > > "async.new_task / _new_task_!result=None"' 00:06:36 v #8174 > > | _ => fun _ => null () 00:06:36 v #8175 > > 00:06:36 v #8176 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8177 > > │ ### await_task 00:06:36 v #8178 > > 00:06:36 v #8179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8180 > > inl await_task forall t. (a : task t) : async t = 00:06:36 v #8181 > > run_target function 00:06:36 v #8182 > > | Fsharp _ 00:06:36 v #8183 > > // | Rust _ 00:06:36 v #8184 > > | TypeScript _ 00:06:36 v #8185 > > | Python _ => fun () => 00:06:36 v #8186 > > a |> $'Async.AwaitTask' 00:06:36 v #8187 > > | _ => fun () => null () 00:06:36 v #8188 > > 00:06:36 v #8189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8190 > > │ ### ignore 00:06:36 v #8191 > > 00:06:36 v #8192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8193 > > inl ignore forall t. (a : async t) : async () = 00:06:36 v #8194 > > run_target function 00:06:36 v #8195 > > | Fsharp _ 00:06:36 v #8196 > > // | Rust _ 00:06:36 v #8197 > > | TypeScript _ 00:06:36 v #8198 > > | Python _ => fun () => 00:06:36 v #8199 > > a |> $'Async.Ignore' 00:06:36 v #8200 > > | _ => fun () => null () 00:06:36 v #8201 > > 00:06:36 v #8202 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8203 > > │ ### run_synchronously 00:06:36 v #8204 > > 00:06:36 v #8205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8206 > > inl run_synchronously forall t. (a : async t) : t = 00:06:36 v #8207 > > run_target function 00:06:36 v #8208 > > | Fsharp _ 00:06:36 v #8209 > > // | Rust _ 00:06:36 v #8210 > > | Python _ => fun () => 00:06:36 v #8211 > > a |> $'Async.RunSynchronously' 00:06:36 v #8212 > > | Cuda (Native) => fun () => 00:06:36 v #8213 > > $'asyncio.run(!a())' 00:06:36 v #8214 > > | _ => fun () => null () 00:06:36 v #8215 > > 00:06:36 v #8216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:36 v #8217 > > │ ### start 00:06:36 v #8218 > > 00:06:36 v #8219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:36 v #8220 > > inl start (a : async ()) : () = 00:06:36 v #8221 > > run_target function 00:06:36 v #8222 > > | Fsharp _ 00:06:36 v #8223 > > | Rust _ 00:06:36 v #8224 > > | TypeScript _ 00:06:36 v #8225 > > | Python _ => fun () => 00:06:36 v #8226 > > a |> $'Async.Start' 00:06:36 v #8227 > > | _ => fun () => null () 00:06:37 v #8228 > > 00:06:37 v #8229 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8230 > > │ ### start_child 00:06:37 v #8231 > > 00:06:37 v #8232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8233 > > inl start_child forall t. (a : async t) : async (async t) = 00:06:37 v #8234 > > run_target function 00:06:37 v #8235 > > | Fsharp _ 00:06:37 v #8236 > > | TypeScript _ 00:06:37 v #8237 > > | Python _ => fun () => 00:06:37 v #8238 > > a |> $'Async.StartChild' 00:06:37 v #8239 > > | _ => fun () => null () 00:06:37 v #8240 > > 00:06:37 v #8241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8242 > > │ ### start_child_timeout 00:06:37 v #8243 > > 00:06:37 v #8244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8245 > > inl start_child_timeout forall t. (timeout : i32) (a : async t) : async (async 00:06:37 v #8246 > > t) = 00:06:37 v #8247 > > run_target function 00:06:37 v #8248 > > | Fsharp _ 00:06:37 v #8249 > > | TypeScript _ 00:06:37 v #8250 > > | Python _ => fun () => 00:06:37 v #8251 > > $'Async.StartChild (!a, !timeout)' 00:06:37 v #8252 > > | _ => fun () => null () 00:06:37 v #8253 > > 00:06:37 v #8254 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8255 > > │ ### start_immediate 00:06:37 v #8256 > > 00:06:37 v #8257 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8258 > > inl start_immediate forall t. (a : async t) : () = 00:06:37 v #8259 > > run_target function 00:06:37 v #8260 > > | Fsharp _ 00:06:37 v #8261 > > // | Rust _ 00:06:37 v #8262 > > | TypeScript _ 00:06:37 v #8263 > > | Python _ => fun () => 00:06:37 v #8264 > > a |> $'Async.StartImmediate' 00:06:37 v #8265 > > | _ => fun () => null () 00:06:37 v #8266 > > 00:06:37 v #8267 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8268 > > │ ### start_with_continuations 00:06:37 v #8269 > > 00:06:37 v #8270 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8271 > > inl start_with_continuations forall t. (a : async t) : () = 00:06:37 v #8272 > > run_target_args' a function 00:06:37 v #8273 > > | Fsharp _ 00:06:37 v #8274 > > | Rust _ 00:06:37 v #8275 > > | TypeScript _ 00:06:37 v #8276 > > | Python _ => fun a => 00:06:37 v #8277 > > $'Async.StartWithContinuations (!a, ignore, ignore, ignore)' 00:06:37 v #8278 > > | _ => fun _ => null () 00:06:37 v #8279 > > 00:06:37 v #8280 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8281 > > │ ### task_canceled_exception 00:06:37 v #8282 > > 00:06:37 v #8283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8284 > > nominal task_canceled_exception = 00:06:37 v #8285 > > $'System.Threading.Tasks.TaskCanceledException' 00:06:37 v #8286 > > 00:06:37 v #8287 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:37 v #8288 > > │ ### sleep 00:06:37 v #8289 > > 00:06:37 v #8290 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:37 v #8291 > > inl sleep (ms : i32) : async () = 00:06:37 v #8292 > > run_target function 00:06:37 v #8293 > > | Fsharp _ 00:06:37 v #8294 > > | Rust _ 00:06:37 v #8295 > > | TypeScript _ 00:06:37 v #8296 > > | Python _ => fun () => 00:06:37 v #8297 > > ms |> $'Async.Sleep' 00:06:37 v #8298 > > | Cuda _ => fun () => 00:06:37 v #8299 > > $'asyncio.sleep(!ms / 1000)' 00:06:37 v #8300 > > | _ => fun () => null () 00:06:38 v #8301 > > 00:06:38 v #8302 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8303 > > │ ### do 00:06:38 v #8304 > > 00:06:38 v #8305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8306 > > inl do (a : async ()) : () = 00:06:38 v #8307 > > backend_switch { 00:06:38 v #8308 > > Fsharp = fun () => $'do\! !a ' : () 00:06:38 v #8309 > > Python = fun () => $'await !a ' : () 00:06:38 v #8310 > > } 00:06:38 v #8311 > > 00:06:38 v #8312 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8313 > > │ ### let' 00:06:38 v #8314 > > 00:06:38 v #8315 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8316 > > inl let' forall t. (a : async t) : t = 00:06:38 v #8317 > > $'let\! !a = !a ' 00:06:38 v #8318 > > $'!a ' 00:06:38 v #8319 > > 00:06:38 v #8320 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8321 > > │ ### return_await 00:06:38 v #8322 > > 00:06:38 v #8323 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8324 > > inl return_await forall t. (a : async t) : () = 00:06:38 v #8325 > > backend_switch { 00:06:38 v #8326 > > Fsharp = fun () => $'return\! !a ' : () 00:06:38 v #8327 > > Python = fun () => $'asyncio.run(!a())' : () 00:06:38 v #8328 > > } 00:06:38 v #8329 > > 00:06:38 v #8330 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8331 > > │ ### return_await' 00:06:38 v #8332 > > 00:06:38 v #8333 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8334 > > inl return_await' forall t. (a : async t) : t = 00:06:38 v #8335 > > backend_switch { 00:06:38 v #8336 > > Fsharp = fun () => $'return\! !a ' : () 00:06:38 v #8337 > > Python = fun () => $'await !a()' : () 00:06:38 v #8338 > > } 00:06:38 v #8339 > > 00:06:38 v #8340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8341 > > │ ### map 00:06:38 v #8342 > > 00:06:38 v #8343 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8344 > > inl map forall t u. (fn : t -> u) (a : async t) : async u = 00:06:38 v #8345 > > fun () => 00:06:38 v #8346 > > inl x = a |> let' 00:06:38 v #8347 > > fn x |> return 00:06:38 v #8348 > > |> new_async_unit 00:06:38 v #8349 > > 00:06:38 v #8350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:38 v #8351 > > │ ### catch' 00:06:38 v #8352 > > 00:06:38 v #8353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:38 v #8354 > > inl catch' forall t e. (a : async t) : async (choice2' t e) = 00:06:38 v #8355 > > run_target function 00:06:38 v #8356 > > | Fsharp _ 00:06:38 v #8357 > > // | Rust _ 00:06:38 v #8358 > > | TypeScript _ 00:06:38 v #8359 > > | Python _ => fun () => 00:06:38 v #8360 > > a |> $'Async.Catch' 00:06:38 v #8361 > > | _ => fun () => null () 00:06:39 v #8362 > > 00:06:39 v #8363 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8364 > > │ ### catch 00:06:39 v #8365 > > 00:06:39 v #8366 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8367 > > inl catch forall t e. (a : async t) : async (result t e) = 00:06:39 v #8368 > > a 00:06:39 v #8369 > > |> catch' 00:06:39 v #8370 > > |> map choice2_unbox 00:06:39 v #8371 > > |> map function 00:06:39 v #8372 > > | C1of2 result => Ok result 00:06:39 v #8373 > > | C2of2 ex => Error ex 00:06:39 v #8374 > > 00:06:39 v #8375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8376 > > │ ### run_with_timeout_async 00:06:39 v #8377 > > 00:06:39 v #8378 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8379 > > let run_with_timeout_async forall t. (timeout : i32) (fn : async t) : async 00:06:39 v #8380 > > (option t) = 00:06:39 v #8381 > > run_target_args (fun () => timeout, fn) function 00:06:39 v #8382 > > | Fsharp _ 00:06:39 v #8383 > > | Rust _ 00:06:39 v #8384 > > | TypeScript _ 00:06:39 v #8385 > > | Python _ => fun timeout, fn => 00:06:39 v #8386 > > fun () => 00:06:39 v #8387 > > fn 00:06:39 v #8388 > > |> start_child_timeout timeout 00:06:39 v #8389 > > |> let' 00:06:39 v #8390 > > |> catch 00:06:39 v #8391 > > |> map function 00:06:39 v #8392 > > | Ok result => Some result 00:06:39 v #8393 > > | Error ex when ex |> sm'.format_debug |> sm'.contains 00:06:39 v #8394 > > "System.TimeoutException" => 00:06:39 v #8395 > > trace Verbose 00:06:39 v #8396 > > fun () => "async.run_with_timeout_async" 00:06:39 v #8397 > > fun () => { timeout } 00:06:39 v #8398 > > None 00:06:39 v #8399 > > | Error (ex : exn) => 00:06:39 v #8400 > > trace Critical 00:06:39 v #8401 > > fun () => "async.run_with_timeout_async**" 00:06:39 v #8402 > > fun () => { timeout ex = ex |> sm'.format_exception 00:06:39 v #8403 > > } 00:06:39 v #8404 > > None 00:06:39 v #8405 > > |> return_await 00:06:39 v #8406 > > |> new_async_unit 00:06:39 v #8407 > > | _ => fun _ => null () 00:06:39 v #8408 > > 00:06:39 v #8409 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8410 > > │ ### run_with_timeout 00:06:39 v #8411 > > 00:06:39 v #8412 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8413 > > inl run_with_timeout timeout fn = 00:06:39 v #8414 > > fn 00:06:39 v #8415 > > |> run_with_timeout_async timeout 00:06:39 v #8416 > > |> run_synchronously 00:06:39 v #8417 > > 00:06:39 v #8418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8419 > > │ ### cancellation_token 00:06:39 v #8420 > > 00:06:39 v #8421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8422 > > inl cancellation_token () : async threading.cancellation_token = 00:06:39 v #8423 > > $'Async.CancellationToken' 00:06:39 v #8424 > > 00:06:39 v #8425 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8426 > > inl default_cancellation_token () : threading.cancellation_token = 00:06:39 v #8427 > > $'Async.DefaultCancellationToken' 00:06:39 v #8428 > > 00:06:39 v #8429 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8430 > > │ ### merge_cancellation_token_with_default_async 00:06:39 v #8431 > > 00:06:39 v #8432 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8433 > > inl merge_cancellation_token_with_default_async 00:06:39 v #8434 > > (token : threading.cancellation_token) 00:06:39 v #8435 > > : async threading.cancellation_token 00:06:39 v #8436 > > = 00:06:39 v #8437 > > fun () => 00:06:39 v #8438 > > run_target function 00:06:39 v #8439 > > | Fsharp (Native) => fun () => 00:06:39 v #8440 > > inl ct = cancellation_token () |> let' 00:06:39 v #8441 > > inl dct = default_cancellation_token () 00:06:39 v #8442 > > inl cts = threading.create_linked_token_source ;[[ ct; dct; 00:06:39 v #8443 > > token ]] 00:06:39 v #8444 > > cts |> threading.cancellation_source_token |> return 00:06:39 v #8445 > > | _ => fun () => (null () : threading.cancellation_token) |> return 00:06:39 v #8446 > > |> new_async_unit 00:06:39 v #8447 > > 00:06:39 v #8448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:39 v #8449 > > │ ### with_trace_level 00:06:39 v #8450 > > 00:06:39 v #8451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:39 v #8452 > > inl with_trace_level forall t. level fn : _ t = new_async fun () => 00:06:39 v #8453 > > inl trace_state = get_trace_state_or_init None 00:06:39 v #8454 > > inl old_trace_level = *trace_state.level 00:06:39 v #8455 > > inl trace_level = trace_state.level 00:06:39 v #8456 > > try_finally 00:06:39 v #8457 > > fun () => 00:06:39 v #8458 > > trace_level <- level 00:06:39 v #8459 > > fn |> return_await 00:06:39 v #8460 > > fun () => 00:06:39 v #8461 > > trace_level <- old_trace_level 00:06:40 v #8462 > > 00:06:40 v #8463 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #8464 > > │ ### value_task 00:06:40 v #8465 > > 00:06:40 v #8466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #8467 > > nominal value_task = $'System.Threading.Tasks.ValueTask' 00:06:40 v #8468 > > 00:06:40 v #8469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #8470 > > │ ### value_task_as_task 00:06:40 v #8471 > > 00:06:40 v #8472 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #8473 > > inl value_task_as_task (task : value_task) : task () = 00:06:40 v #8474 > > run_target function 00:06:40 v #8475 > > | Fsharp (Native) => fun () => $'!task.AsTask' () 00:06:40 v #8476 > > | _ => fun () => null () 00:06:40 v #8477 > > 00:06:40 v #8478 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #8479 > > │ ### await_value_task_unit 00:06:40 v #8480 > > 00:06:40 v #8481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #8482 > > inl await_value_task_unit (task : value_task) : async () = 00:06:40 v #8483 > > task |> value_task_as_task |> await_task 00:06:40 v #8484 > > 00:06:40 v #8485 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:40 v #8486 > > │ ## main 00:06:40 v #8487 > > 00:06:40 v #8488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:40 v #8489 > > inl main () = 00:06:40 v #8490 > > $'let merge_cancellation_token_with_default_async x = 00:06:40 v #8491 > > !merge_cancellation_token_with_default_async x' : () 00:06:41 v #8492 > 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33617 } 00:06:41 v #8493 > 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:42 v #8494 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.ipynb to html 00:06:42 v #8495 > 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:42 v #8496 > 00:00:17 v #7 ! validate(nb) 00:06:42 v #8497 > 00:00:18 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:42 v #8498 > 00:00:18 v #9 ! return _pygments_highlight( 00:06:43 v #8499 > 00:00:18 v #10 ! [NbConvertApp] Writing 422266 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html 00:06:43 v #8500 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:06:43 v #8501 > 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:06:43 v #8502 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/async.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:43 v #8503 > 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:43 v #8504 > 00:00:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:43 v #8505 > 00:00:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 34570 } 00:06:43 d #8506 runtime.execute_with_options_async / { exit_code = 0; output_length = 38852 } 00:06:43 d #11 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path async.dib --retries 3 00:06:43 d #8507 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:43 v #8508 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "runtime.dib", "--retries", "3"])) } 00:06:43 v #8509 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:06:44 v #8510 > > 00:06:44 v #8511 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:44 v #8512 > > │ # runtime 00:06:47 v #8513 > > 00:06:47 v #8514 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:47 v #8515 > > open rust 00:06:47 v #8516 > > open rust_operators 00:06:47 v #8517 > > open sm'_operators 00:06:48 v #8518 > > 00:06:48 v #8519 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:48 v #8520 > > //// test 00:06:48 v #8521 > > 00:06:48 v #8522 > > open testing 00:06:48 v #8523 > > open file_system_operators 00:06:48 v #8524 > > 00:06:48 v #8525 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:48 v #8526 > > │ ## runtime 00:06:48 v #8527 > > 00:06:48 v #8528 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:48 v #8529 > > │ ### split_args 00:06:48 v #8530 > > 00:06:48 v #8531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:48 v #8532 > > let split_args (args : string) : result (array_base string) string = 00:06:48 v #8533 > > open parsing 00:06:48 v #8534 > > inl esc = [[ '\\'; '`' ]] 00:06:48 v #8535 > > inl quotes = [[ '"' ]] 00:06:48 v #8536 > > inl special = esc ++ quotes 00:06:48 v #8537 > > inl p_esc_char c = 00:06:48 v #8538 > > p_char c >>. any_char () |>> fun c' => $c +. $c' 00:06:48 v #8539 > > inl p_word = special |> none_of |>> sm'.obj_to_string 00:06:48 v #8540 > > inl p_plain = special ++ [[ ' ' ]] |> none_of |> many1_chars 00:06:48 v #8541 > > inl p_text = p_word |> many1_strings 00:06:48 v #8542 > > inl p_esc = esc |> listm.map p_esc_char |> choice 00:06:48 v #8543 > > inl p_quoted = (p_word <|> p_esc) |> many |>> sm'.concat_list "" 00:06:48 v #8544 > > inl p_quoted_all = p_quoted |> between (p_char '"') (p_char '"') 00:06:48 v #8545 > > inl p_esc_root = p_esc >>% "" >>. (p_word |> many) |>> sm'.concat_list "" 00:06:48 v #8546 > > inl p_content = p_plain <|> p_quoted_all <|> p_esc_root 00:06:48 v #8547 > > inl p_args = spaces1 () |> sep_by p_content 00:06:48 v #8548 > > args 00:06:48 v #8549 > > |> parse p_args 00:06:48 v #8550 > > |> resultm.map (fst >> listm'.box >> listm'.to_array') 00:06:48 v #8551 > > 00:06:48 v #8552 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:48 v #8553 > > //// test 00:06:48 v #8554 > > ///! fsharp 00:06:48 v #8555 > > ///! cuda 00:06:48 v #8556 > > ///! rust 00:06:48 v #8557 > > ///! typescript 00:06:48 v #8558 > > ///! python 00:06:48 v #8559 > > 00:06:48 v #8560 > > [[ 00:06:48 v #8561 > > "a b c", 00:06:48 v #8562 > > ;[[ "a"; "b"; "c" ]] 00:06:48 v #8563 > > 00:06:48 v #8564 > > "e f \"g h\" i", 00:06:48 v #8565 > > ;[[ "e"; "f"; "g h"; "i" ]] 00:06:48 v #8566 > > 00:06:48 v #8567 > > "\"j k\" \"l\" \"m\"", 00:06:48 v #8568 > > ;[[ "j k"; "l"; "m" ]] 00:06:48 v #8569 > > 00:06:48 v #8570 > > "s -t \"u \`\"v\`\" w\"", 00:06:48 v #8571 > > ;[[ "s"; "-t"; "u \`\"v\`\" w" ]] 00:06:48 v #8572 > > 00:06:48 v #8573 > > "n -o \"p \\\"q\\\" r\"", 00:06:48 v #8574 > > ;[[ "n"; "-o"; "p \\\"q\\\" r" ]] 00:06:48 v #8575 > > 00:06:48 v #8576 > > "r -s \"t \\\"u\\\"\"", 00:06:48 v #8577 > > ;[[ "r"; "-s"; "t \\\"u\\\"" ]] 00:06:48 v #8578 > > 00:06:48 v #8579 > > $'"x -y \\\"$z -a \'(b=\\\\\\"c-id=)[[a-fA-F0-9]]{8}\', { \`$_[[1]] + \`$d++ 00:06:48 v #8580 > > }\\\""', 00:06:48 v #8581 > > ;[[ "x"; "-y"; "$z -a '(b=\\\"c-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$d++ }" 00:06:48 v #8582 > > ]] 00:06:48 v #8583 > > 00:06:48 v #8584 > > "e -f \"$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }\"", 00:06:48 v #8585 > > ;[[ "e"; "-f"; "$g -h '(i=`\"j-id=)[[a-fA-F0-9]]{8}', { `$_[[1]] + `$k++ }" 00:06:48 v #8586 > > ]] 00:06:48 v #8587 > > 00:06:48 v #8588 > > $'"--l \\\\\\"\'\'\' m \'\'\'\\\\\\" "', 00:06:48 v #8589 > > ;[[ "--l"; "''' m '''" ]] 00:06:48 v #8590 > > 00:06:48 v #8591 > > $'"n --o --p q --r \\\"s:/t u/v.w\\\" --x \\\"y:/z.a\\\" --b c.d 00:06:48 v #8592 > > \\\"\\\\e{f-g}\\\" h.i \\\"j (k)\\\""', 00:06:48 v #8593 > > ;[[ "n"; "--o"; "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; 00:06:48 v #8594 > > "c.d"; "\\e{f-g}"; "h.i"; "j (k)" ]] 00:06:48 v #8595 > > 00:06:48 v #8596 > > $'"l \\\"m n:\\\\o.p\\\""', 00:06:48 v #8597 > > ;[[ "l"; "m n:\\o.p" ]] 00:06:48 v #8598 > > ]] 00:06:48 v #8599 > > |> _assert_fn split_args 00:07:03 v #8600 > > 00:07:03 v #8601 > > ── [ 14.54s - return value ] ─────────────────────────────────────────────────── 00:07:03 v #8602 > > │ 00:07:03 v #8603 > > │ .py output (Cuda): 00:07:03 v #8604 > > │ 00:07:03 v #8605 > > │ 00:00:00 v #1 _assert_fn / { input = a b c } 00:07:03 v #8606 > > │ __assert_eq' / actual: ['a' 'b' 'c'] / expected: ['a' 'b' 00:07:03 v #8607 > > 'c'] 00:07:03 v #8608 > > │ 00:07:03 v #8609 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i } 00:07:03 v #8610 > > │ __assert_eq' / actual: ['e' 'f' 'g h' 'i'] / expected: ['e' 00:07:03 v #8611 > > 'f' 'g h' 'i'] 00:07:03 v #8612 > > │ 00:07:03 v #8613 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" } 00:07:03 v #8614 > > │ __assert_eq' / actual: ['j k' 'l' 'm'] / expected: ['j k' 'l' 00:07:03 v #8615 > > 'm'] 00:07:03 v #8616 > > │ 00:07:03 v #8617 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" } 00:07:03 v #8618 > > │ __assert_eq' / actual: ['s' '-t' 'u `"v`" w'] / expected: 00:07:03 v #8619 > > ['s' '-t' 'u `"v`" w'] 00:07:03 v #8620 > > │ 00:07:03 v #8621 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" } 00:07:03 v #8622 > > │ __assert_eq' / actual: ['n' '-o' 'p \\"q\\" r'] / expected: 00:07:03 v #8623 > > ['n' '-o' 'p \\"q\\" r'] 00:07:03 v #8624 > > │ 00:07:03 v #8625 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } 00:07:03 v #8626 > > │ __assert_eq' / actual: ['r' '-s' 't \\"u\\"'] / expected: 00:07:03 v #8627 > > ['r' '-s' 't \\"u\\"'] 00:07:03 v #8628 > > │ 00:07:03 v #8629 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a 00:07:03 v #8630 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } 00:07:03 v #8631 > > │ __assert_eq' / actual: ['x' '-y' '$z -a 00:07:03 v #8632 > > \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] / expected: ['x' '-y' '$z 00:07:03 v #8633 > > -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] 00:07:03 v #8634 > > │ 00:07:03 v #8635 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h 00:07:03 v #8636 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } 00:07:03 v #8637 > > │ __assert_eq' / actual: ['e' '-f' '$g -h 00:07:03 v #8638 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] / expected: ['e' '-f' '$g -h 00:07:03 v #8639 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] 00:07:03 v #8640 > > │ 00:07:03 v #8641 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" 00:07:03 v #8642 > > } 00:07:03 v #8643 > > │ __assert_eq' / a...t_fn / { input = n -o "p \"q\" r" } 00:07:03 v #8644 > > │ __assert_eq' / actual: ['n', '-o', 'p \\"q\\" r'] / expected: 00:07:03 v #8645 > > ['n', '-o', 'p \\"q\\" r'] 00:07:03 v #8646 > > │ 00:07:03 v #8647 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } 00:07:03 v #8648 > > │ __assert_eq' / actual: ['r', '-s', 't \\"u\\"'] / expected: 00:07:03 v #8649 > > ['r', '-s', 't \\"u\\"'] 00:07:03 v #8650 > > │ 00:07:03 v #8651 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a 00:07:03 v #8652 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } 00:07:03 v #8653 > > │ __assert_eq' / actual: ['x', '-y', '$z -a 00:07:03 v #8654 > > \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] / expected: ['x', '-y', '$z 00:07:03 v #8655 > > -a \'(b=\\"c-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$d++ }'] 00:07:03 v #8656 > > │ 00:07:03 v #8657 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h 00:07:03 v #8658 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } 00:07:03 v #8659 > > │ __assert_eq' / actual: ['e', '-f', '$g -h 00:07:03 v #8660 > > \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] / expected: ['e', '-f', '$g 00:07:03 v #8661 > > -h \'(i=`"j-id=)[a-fA-F0-9]{8}\', { `$_[1] + `$k++ }'] 00:07:03 v #8662 > > │ 00:07:03 v #8663 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" 00:07:03 v #8664 > > } 00:07:03 v #8665 > > │ __assert_eq' / actual: ['--l', "''' m '''"] / expected: 00:07:03 v #8666 > > ['--l', "''' m '''"] 00:07:03 v #8667 > > │ 00:07:03 v #8668 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r 00:07:03 v #8669 > > "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } 00:07:03 v #8670 > > │ __assert_eq' / actual: ['n', '--o', '--p', 'q', '--r', 's:/t 00:07:03 v #8671 > > u/v.w', '--x', 'y:/z.a', '--b', 'c.d', '\\e{f-g}', 'h.i', 'j (k)'] / expected: 00:07:03 v #8672 > > ['n', '--o', '--p', 'q', '--r', 's:/t u/v.w', '--x', 'y:/z.a', '--b', 'c.d', 00:07:03 v #8673 > > '\\e{f-g}', 'h.i', 'j (k)'] 00:07:03 v #8674 > > │ 00:07:03 v #8675 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" } 00:07:03 v #8676 > > │ __assert_eq' / actual: ['l', 'm n:\\o.p'] / expected: ['l', 00:07:03 v #8677 > > 'm n:\\o.p'] 00:07:03 v #8678 > > │ 00:07:03 v #8679 > > │ 00:07:03 v #8680 > > │ 00:07:03 v #8681 > > 00:07:03 v #8682 > > ── [ 14.55s - stdout ] ───────────────────────────────────────────────────────── 00:07:03 v #8683 > > │ .fsx output: 00:07:03 v #8684 > > │ 00:07:03 v #8685 > > │ 00:00:00 v #1 _assert_fn / { input = a b c } 00:07:03 v #8686 > > │ __assert_eq' / actual: "[|"a"; "b"; "c"|]" / expected: 00:07:03 v #8687 > > "[|"a"; "b"; "c"|]" 00:07:03 v #8688 > > │ 00:07:03 v #8689 > > │ 00:00:00 v #2 _assert_fn / { input = e f "g h" i } 00:07:03 v #8690 > > │ __assert_eq' / actual: "[|"e"; "f"; "g h"; "i"|]" / expected: 00:07:03 v #8691 > > "[|"e"; "f"; "g h"; "i"|]" 00:07:03 v #8692 > > │ 00:07:03 v #8693 > > │ 00:00:00 v #3 _assert_fn / { input = "j k" "l" "m" } 00:07:03 v #8694 > > │ __assert_eq' / actual: "[|"j k"; "l"; "m"|]" / expected: 00:07:03 v #8695 > > "[|"j k"; "l"; "m"|]" 00:07:03 v #8696 > > │ 00:07:03 v #8697 > > │ 00:00:00 v #4 _assert_fn / { input = s -t "u `"v`" w" } 00:07:03 v #8698 > > │ __assert_eq' / actual: "[|"s"; "-t"; "u `"v`" w"|]" 00:07:03 v #8699 > > expected: "[|"s"; "-t"; "u `"v`" w"|]" 00:07:03 v #8700 > > │ 00:07:03 v #8701 > > │ 00:00:00 v #5 _assert_fn / { input = n -o "p \"q\" r" } 00:07:03 v #8702 > > │ __assert_eq' / actual: "[|"n"; "-o"; "p \"q\" r"|]" 00:07:03 v #8703 > > expected: "[|"n"; "-o"; "p \"q\" r"|]" 00:07:03 v #8704 > > │ 00:07:03 v #8705 > > │ 00:00:00 v #6 _assert_fn / { input = r -s "t \"u\"" } 00:07:03 v #8706 > > │ __assert_eq' / actual: "[|"r"; "-s"; "t \"u\""|]" / expected: 00:07:03 v #8707 > > "[|"r"; "-s"; "t \"u\""|]" 00:07:03 v #8708 > > │ 00:07:03 v #8709 > > │ 00:00:00 v #7 _assert_fn / { input = x -y "$z -a 00:07:03 v #8710 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }" } 00:07:03 v #8711 > > │ __assert_eq' / actual: "[|"x"; "-y"; "$z -a 00:07:03 v #8712 > > '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]" / expected: "[|"x"; "-y"; 00:07:03 v #8713 > > "$z -a '(b=\"c-id=)[a-fA-F0-9]{8}', { `$_[1] + `$d++ }"|]" 00:07:03 v #8714 > > │ 00:07:03 v #8715 > > │ 00:00:00 v #8 _assert_fn / { input = e -f "$g -h 00:07:03 v #8716 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }" } 00:07:03 v #8717 > > │ __assert_eq' / actual: "[|"e"; "-f"; "$g -h 00:07:03 v #8718 > > '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]" / expected: "[|"e"; "-f"; 00:07:03 v #8719 > > "$g -h '(i=`"j-id=)[a-fA-F0-9]{8}', { `$_[1] + `$k++ }"|]" 00:07:03 v #8720 > > │ 00:07:03 v #8721 > > │ 00:00:00 v #9 _assert_fn / { input = --l \"''' m '''\" 00:07:03 v #8722 > > } 00:07:03 v #8723 > > │ __assert_eq' / actual: "[|"--l"; "''' m '''"|]" / expected: 00:07:03 v #8724 > > "[|"--l"; "''' m '''"|]" 00:07:03 v #8725 > > │ 00:07:03 v #8726 > > │ 00:00:00 v #10 _assert_fn / { input = n --o --p q --r 00:07:03 v #8727 > > "s:/t u/v.w" --x "y:/z.a" --b c.d "\e{f-g}" h.i "j (k)" } 00:07:03 v #8728 > > │ __assert_eq' / actual: "[|"n"; "--o"; "--p"; "q"; "--r"; 00:07:03 v #8729 > > "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; 00:07:03 v #8730 > > │ "\e{f-g}"; "h.i"; "j (k)"|]" / expected: "[|"n"; "--o"; 00:07:03 v #8731 > > "--p"; "q"; "--r"; "s:/t u/v.w"; "--x"; "y:/z.a"; "--b"; "c.d"; 00:07:03 v #8732 > > │ "\e{f-g}"; "h.i"; "j (k)"|]" 00:07:03 v #8733 > > │ 00:07:03 v #8734 > > │ 00:00:00 v #11 _assert_fn / { input = l "m n:\o.p" } 00:07:03 v #8735 > > │ __assert_eq' / actual: "[|"l"; "m n:\o.p"|]" / expected: 00:07:03 v #8736 > > "[|"l"; "m n:\o.p"|]" 00:07:03 v #8737 > > │ 00:07:03 v #8738 > > 00:07:03 v #8739 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:03 v #8740 > > │ ### split_command 00:07:03 v #8741 > > 00:07:03 v #8742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:03 v #8743 > > let split_command (command : string) : result (string * option string) string = 00:07:03 v #8744 > > open parsing 00:07:03 v #8745 > > inl quotes = [[ '"'; '\'' ]] 00:07:03 v #8746 > > inl p_quoted_char = quotes |> listm.map p_char |> choice 00:07:03 v #8747 > > inl normalize = function '\\' => '/' | c => c 00:07:03 v #8748 > > inl p_quoted = quotes |> none_of |>> normalize |> many_chars |> between 00:07:03 v #8749 > > p_quoted_char p_quoted_char 00:07:03 v #8750 > > inl p_unquoted = quotes ++ [[ ' ' ]] |> none_of |>> normalize |> many1_chars 00:07:03 v #8751 > > inl p_path = p_quoted <|> p_unquoted <|> eof () >>% "" .>> spaces () 00:07:03 v #8752 > > inl p_args = p_char ' ' |> opt >>. (any_char () |> many1_chars) 00:07:03 v #8753 > > inl p_command = p_path .>>. (p_args |> opt) 00:07:03 v #8754 > > command 00:07:03 v #8755 > > |> parse p_command 00:07:03 v #8756 > > |> resultm.map fst 00:07:03 v #8757 > > 00:07:03 v #8758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:03 v #8759 > > //// test 00:07:03 v #8760 > > ///! fsharp 00:07:03 v #8761 > > ///! cuda 00:07:03 v #8762 > > ///! rust 00:07:03 v #8763 > > ///! typescript 00:07:03 v #8764 > > ///! python 00:07:03 v #8765 > > 00:07:03 v #8766 > > [[ 00:07:03 v #8767 > > "", 00:07:03 v #8768 > > ("", None) 00:07:03 v #8769 > > 00:07:03 v #8770 > > "/a/b/c", 00:07:03 v #8771 > > ("/a/b/c", None) 00:07:03 v #8772 > > 00:07:03 v #8773 > > "d e.f", 00:07:03 v #8774 > > ("d", Some "e.f") 00:07:03 v #8775 > > 00:07:03 v #8776 > > "..\\..\\g.h i.j k.l", 00:07:03 v #8777 > > ("../../g.h", Some "i.j k.l") 00:07:03 v #8778 > > 00:07:03 v #8779 > > "m:\\n\\o.p \"q.r s.t\"", 00:07:03 v #8780 > > ("m:/n/o.p", Some "\"q.r s.t\"") 00:07:03 v #8781 > > 00:07:03 v #8782 > > "\"..\\..\\u v\\w.x\" \"y z.a\" b.c", 00:07:03 v #8783 > > ("../../u v/w.x", Some "\"y z.a\" b.c") 00:07:03 v #8784 > > 00:07:03 v #8785 > > "\"..\\..\\d e.f\" -g \\\\\"h i\\\\\"", 00:07:03 v #8786 > > ("../../d e.f", Some "-g \\\\\"h i\\\\\"") 00:07:03 v #8787 > > 00:07:03 v #8788 > > "..\\..\\j k.l -m \\\\\"n o\\\\\"", 00:07:03 v #8789 > > ("../../j", Some "k.l -m \\\\\"n o\\\\\"") 00:07:03 v #8790 > > ]] 00:07:03 v #8791 > > |> _assert_fn split_command 00:07:16 v #8792 > > 00:07:16 v #8793 > > ── [ 13.80s - return value ] ─────────────────────────────────────────────────── 00:07:16 v #8794 > > │ 00:07:16 v #8795 > > │ .py output (Cuda): 00:07:16 v #8796 > > │ 00:07:16 v #8797 > > │ 00:00:00 v #1 _assert_fn / { input = } 00:07:16 v #8798 > > │ __assert_eq' / actual: , US1_1() / expected: , US1_1() 00:07:16 v #8799 > > │ 00:07:16 v #8800 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } 00:07:16 v #8801 > > │ __assert_eq' / actual: /a/b/c, US1_1() / expected: /a/b/c, 00:07:16 v #8802 > > US1_1() 00:07:16 v #8803 > > │ 00:07:16 v #8804 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } 00:07:16 v #8805 > > │ __assert_eq' / actual: d, US1_0(v0='e.f') / expected: d, 00:07:16 v #8806 > > US1_0(v0='e.f') 00:07:16 v #8807 > > │ 00:07:16 v #8808 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } 00:07:16 v #8809 > > │ __assert_eq' / actual: ../../g.h, US1_0(v0='i.j k.l') 00:07:16 v #8810 > > expected: ../../g.h, US1_0(v0='i.j k.l') 00:07:16 v #8811 > > │ 00:07:16 v #8812 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" 00:07:16 v #8813 > > } 00:07:16 v #8814 > > │ __assert_eq' / actual: m:/n/o.p, US1_0(v0='"q.r s.t"') 00:07:16 v #8815 > > expected: m:/n/o.p, US1_0(v0='"q.r s.t"') 00:07:16 v #8816 > > │ 00:07:16 v #8817 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y 00:07:16 v #8818 > > z.a" b.c } 00:07:16 v #8819 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0(v0='"y z.a" b.c') 00:07:16 v #8820 > > / expected: ../../u v/w.x, US1_0(v0='"y z.a" b.c') 00:07:16 v #8821 > > │ 00:07:16 v #8822 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g 00:07:16 v #8823 > > \\"h i\\" } 00:07:16 v #8824 > > │ __assert_eq' / actual: ../../d e.f, US1_0(v0='-g \\\\"h 00:07:16 v #8825 > > i\\\\"') / expected: ../../d e.f, US1_0(v0='-g \\\\"h i\\\\"') 00:07:16 v #8826 > > │ 00:07:16 v #8827 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n 00:07:16 v #8828 > > o\\" } 00:07:16 v #8829 > > │ __assert_eq' / actual: ../../j, US1_0(v0='k.l -m \\\\"n 00:07:16 v #8830 > > o\\\\"') / expected: ../../j, US1_0(v0='k.l -m \\\\"n o\\\\"') 00:07:16 v #8831 > > │ 00:07:16 v #8832 > > │ 00:07:16 v #8833 > > │ .rs output: 00:07:16 v #8834 > > │ 00:07:16 v #8835 > > │ 00:00:00 v #1 _assert_fn / { input = } 00:07:16 v #8836 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1" 00:07:16 v #8837 > > │ 00:07:16 v #8838 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } 00:07:16 v #8839 > > │ __assert_eq' / actual: "/a/b/c, US1_1...eq' / actual: ../../d 00:07:16 v #8840 > > e.f, US1_0 (-g \\"h i\\") / expected: ../../d e.f, US1_0 (-g \\"h i\\") 00:07:16 v #8841 > > │ 00:07:16 v #8842 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n 00:07:16 v #8843 > > o\\" } 00:07:16 v #8844 > > │ __assert_eq' / actual: ../../j, US1_0 (k.l -m \\"n o\\") 00:07:16 v #8845 > > expected: ../../j, US1_0 (k.l -m \\"n o\\") 00:07:16 v #8846 > > │ 00:07:16 v #8847 > > │ 00:07:16 v #8848 > > │ .py output: 00:07:16 v #8849 > > │ 00:07:16 v #8850 > > │ 00:00:00 v #1 _assert_fn / { input = } 00:07:16 v #8851 > > │ __assert_eq' / actual: , US1_1 / expected: , US1_1 00:07:16 v #8852 > > │ 00:07:16 v #8853 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } 00:07:16 v #8854 > > │ __assert_eq' / actual: /a/b/c, US1_1 / expected: /a/b/c, 00:07:16 v #8855 > > US1_1 00:07:16 v #8856 > > │ 00:07:16 v #8857 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } 00:07:16 v #8858 > > │ __assert_eq' / actual: d, US1_0 "e.f" / expected: d, US1_0 00:07:16 v #8859 > > "e.f" 00:07:16 v #8860 > > │ 00:07:16 v #8861 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } 00:07:16 v #8862 > > │ __assert_eq' / actual: ../../g.h, US1_0 ("i.j k.l") 00:07:16 v #8863 > > expected: ../../g.h, US1_0 ("i.j k.l") 00:07:16 v #8864 > > │ 00:07:16 v #8865 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" 00:07:16 v #8866 > > } 00:07:16 v #8867 > > │ __assert_eq' / actual: m:/n/o.p, US1_0 (""q.r s.t"") 00:07:16 v #8868 > > expected: m:/n/o.p, US1_0 (""q.r s.t"") 00:07:16 v #8869 > > │ 00:07:16 v #8870 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y 00:07:16 v #8871 > > z.a" b.c } 00:07:16 v #8872 > > │ __assert_eq' / actual: ../../u v/w.x, US1_0 (""y z.a" b.c") 00:07:16 v #8873 > > expected: ../../u v/w.x, US1_0 (""y z.a" b.c") 00:07:16 v #8874 > > │ 00:07:16 v #8875 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g 00:07:16 v #8876 > > \\"h i\\" } 00:07:16 v #8877 > > │ __assert_eq' / actual: ../../d e.f, US1_0 ("-g \\"h i\\"") 00:07:16 v #8878 > > expected: ../../d e.f, US1_0 ("-g \\"h i\\"") 00:07:16 v #8879 > > │ 00:07:16 v #8880 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n 00:07:16 v #8881 > > o\\" } 00:07:16 v #8882 > > │ __assert_eq' / actual: ../../j, US1_0 ("k.l -m \\"n o\\"") 00:07:16 v #8883 > > expected: ../../j, US1_0 ("k.l -m \\"n o\\"") 00:07:16 v #8884 > > │ 00:07:16 v #8885 > > │ 00:07:16 v #8886 > > │ 00:07:16 v #8887 > > 00:07:16 v #8888 > > ── [ 13.81s - stdout ] ───────────────────────────────────────────────────────── 00:07:16 v #8889 > > │ .fsx output: 00:07:16 v #8890 > > │ 00:07:16 v #8891 > > │ 00:00:00 v #1 _assert_fn / { input = } 00:07:16 v #8892 > > │ __assert_eq' / actual: ", US1_1" / expected: ", US1_1" 00:07:16 v #8893 > > │ 00:07:16 v #8894 > > │ 00:00:00 v #2 _assert_fn / { input = /a/b/c } 00:07:16 v #8895 > > │ __assert_eq' / actual: "/a/b/c, US1_1" / expected: "/a/b/c, 00:07:16 v #8896 > > US1_1" 00:07:16 v #8897 > > │ 00:07:16 v #8898 > > │ 00:00:00 v #3 _assert_fn / { input = d e.f } 00:07:16 v #8899 > > │ __assert_eq' / actual: "d, US1_0 "e.f"" / expected: "d, US1_0 00:07:16 v #8900 > > "e.f"" 00:07:16 v #8901 > > │ 00:07:16 v #8902 > > │ 00:00:00 v #4 _assert_fn / { input = ..\..\g.h i.j k.l } 00:07:16 v #8903 > > │ __assert_eq' / actual: "../../g.h, US1_0 "i.j k.l"" 00:07:16 v #8904 > > expected: "../../g.h, US1_0 "i.j k.l"" 00:07:16 v #8905 > > │ 00:07:16 v #8906 > > │ 00:00:00 v #5 _assert_fn / { input = m:\n\o.p "q.r s.t" 00:07:16 v #8907 > > } 00:07:16 v #8908 > > │ __assert_eq' / actual: "m:/n/o.p, US1_0 ""q.r s.t""" 00:07:16 v #8909 > > expected: "m:/n/o.p, US1_0 ""q.r s.t""" 00:07:16 v #8910 > > │ 00:07:16 v #8911 > > │ 00:00:00 v #6 _assert_fn / { input = "..\..\u v\w.x" "y 00:07:16 v #8912 > > z.a" b.c } 00:07:16 v #8913 > > │ __assert_eq' / actual: "../../u v/w.x, US1_0 ""y z.a" b.c"" 00:07:16 v #8914 > > expected: "../../u v/w.x, US1_0 ""y z.a" b.c"" 00:07:16 v #8915 > > │ 00:07:16 v #8916 > > │ 00:00:00 v #7 _assert_fn / { input = "..\..\d e.f" -g 00:07:16 v #8917 > > \\"h i\\" } 00:07:16 v #8918 > > │ __assert_eq' / actual: "../../d e.f, US1_0 "-g \\"h i\\""" 00:07:16 v #8919 > > expected: "../../d e.f, US1_0 "-g \\"h i\\""" 00:07:16 v #8920 > > │ 00:07:16 v #8921 > > │ 00:00:00 v #8 _assert_fn / { input = ..\..\j k.l -m \\"n 00:07:16 v #8922 > > o\\" } 00:07:16 v #8923 > > │ __assert_eq' / actual: "../../j, US1_0 "k.l -m \\"n o\\""" 00:07:16 v #8924 > > expected: "../../j, US1_0 "k.l -m \\"n o\\""" 00:07:16 v #8925 > > │ 00:07:16 v #8926 > > 00:07:16 v #8927 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:16 v #8928 > > │ ### execution_line 00:07:16 v #8929 > > 00:07:16 v #8930 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:16 v #8931 > > type execution_line = 00:07:16 v #8932 > > { 00:07:16 v #8933 > > process_id : int 00:07:16 v #8934 > > line : string 00:07:16 v #8935 > > error : bool 00:07:16 v #8936 > > } 00:07:17 v #8937 > > 00:07:17 v #8938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #8939 > > │ ## rust 00:07:17 v #8940 > > 00:07:17 v #8941 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #8942 > > │ ### process_child 00:07:17 v #8943 > > 00:07:17 v #8944 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #8945 > > nominal process_child = 00:07:17 v #8946 > > `( 00:07:17 v #8947 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:17 v #8948 > > Fable.Core.Emit(\"std::process::Child\")>]]\n#endif\ntype std_process_Child = 00:07:17 v #8949 > > class end" 00:07:17 v #8950 > > $'' : $'std_process_Child' 00:07:17 v #8951 > > ) 00:07:17 v #8952 > > 00:07:17 v #8953 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #8954 > > │ ### process_child_stdin 00:07:17 v #8955 > > 00:07:17 v #8956 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #8957 > > nominal process_child_stdin = 00:07:17 v #8958 > > `( 00:07:17 v #8959 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:17 v #8960 > > Fable.Core.Emit(\"std::process::ChildStdin\")>]]\n#endif\ntype 00:07:17 v #8961 > > std_process_ChildStdin = class end" 00:07:17 v #8962 > > $'' : $'std_process_ChildStdin' 00:07:17 v #8963 > > ) 00:07:17 v #8964 > > 00:07:17 v #8965 > > inl process_child_stdin 00:07:17 v #8966 > > (child : rust.ref (rust.mut' process_child)) 00:07:17 v #8967 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdin)) 00:07:17 v #8968 > > = 00:07:17 v #8969 > > !\\(child, $'"&mut $0.stdin"') 00:07:17 v #8970 > > 00:07:17 v #8971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #8972 > > │ ## runtime 00:07:17 v #8973 > > 00:07:17 v #8974 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #8975 > > │ ### execution_options 00:07:17 v #8976 > > 00:07:17 v #8977 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #8978 > > type execution_options = 00:07:17 v #8979 > > { 00:07:17 v #8980 > > command : string 00:07:17 v #8981 > > cancellation_token : optionm'.option' threading.cancellation_token 00:07:17 v #8982 > > environment_variables : array_base (string * string) 00:07:17 v #8983 > > on_line : optionm'.option' (execution_line -> async.async ()) 00:07:17 v #8984 > > stdin : optionm'.option' (threading.arc (threading.mutex 00:07:17 v #8985 > > process_child_stdin) -> ()) 00:07:17 v #8986 > > trace : bool 00:07:17 v #8987 > > working_directory : optionm'.option' string 00:07:17 v #8988 > > } 00:07:17 v #8989 > > 00:07:17 v #8990 > > inl execution_options (fn : execution_options -> execution_options) : 00:07:17 v #8991 > > execution_options = 00:07:17 v #8992 > > { 00:07:17 v #8993 > > command = "" 00:07:17 v #8994 > > cancellation_token = None |> optionm'.box 00:07:17 v #8995 > > environment_variables = ;[[]] 00:07:17 v #8996 > > on_line = None |> optionm'.box 00:07:17 v #8997 > > stdin = None |> optionm'.box 00:07:17 v #8998 > > trace = true 00:07:17 v #8999 > > working_directory = None |> optionm'.box 00:07:17 v #9000 > > } 00:07:17 v #9001 > > |> fn 00:07:17 v #9002 > > 00:07:17 v #9003 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #9004 > > │ ## rust 00:07:17 v #9005 > > 00:07:17 v #9006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #9007 > > │ ### process_child_stderr 00:07:17 v #9008 > > 00:07:17 v #9009 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #9010 > > nominal process_child_stderr = 00:07:17 v #9011 > > `( 00:07:17 v #9012 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:17 v #9013 > > Fable.Core.Emit(\"std::process::ChildStderr\")>]]\n#endif\ntype 00:07:17 v #9014 > > std_process_ChildStderr = class end" 00:07:17 v #9015 > > $'' : $'std_process_ChildStderr' 00:07:17 v #9016 > > ) 00:07:17 v #9017 > > 00:07:17 v #9018 > > inl process_child_stderr 00:07:17 v #9019 > > (child : rust.ref (rust.mut' process_child)) 00:07:17 v #9020 > > : rust.ref (rust.mut' (optionm'.option' process_child_stderr)) 00:07:17 v #9021 > > = 00:07:17 v #9022 > > !\\(child, $'"&mut $0.stderr"') 00:07:17 v #9023 > > 00:07:17 v #9024 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #9025 > > │ ### process_child_stdout 00:07:17 v #9026 > > 00:07:17 v #9027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #9028 > > nominal process_child_stdout = 00:07:17 v #9029 > > `( 00:07:17 v #9030 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:17 v #9031 > > Fable.Core.Emit(\"std::process::ChildStdout\")>]]\n#endif\ntype 00:07:17 v #9032 > > std_process_ChildStdout = class end" 00:07:17 v #9033 > > $'' : $'std_process_ChildStdout' 00:07:17 v #9034 > > ) 00:07:17 v #9035 > > 00:07:17 v #9036 > > inl process_child_stdout 00:07:17 v #9037 > > (child : rust.ref (rust.mut' process_child)) 00:07:17 v #9038 > > : rust.ref (rust.mut' (optionm'.option' process_child_stdout)) 00:07:17 v #9039 > > = 00:07:17 v #9040 > > !\\(child, $'"&mut $0.stdout"') 00:07:17 v #9041 > > 00:07:17 v #9042 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:17 v #9043 > > │ ### process_command 00:07:17 v #9044 > > 00:07:17 v #9045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:17 v #9046 > > nominal process_command = 00:07:17 v #9047 > > `( 00:07:17 v #9048 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:17 v #9049 > > Fable.Core.Emit(\"std::process::Command\")>]]\n#endif\ntype std_process_Command 00:07:17 v #9050 > > = class end" 00:07:17 v #9051 > > $'' : $'std_process_Command' 00:07:17 v #9052 > > ) 00:07:18 v #9053 > > 00:07:18 v #9054 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9055 > > │ ### process_stdio 00:07:18 v #9056 > > 00:07:18 v #9057 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9058 > > nominal process_stdio = 00:07:18 v #9059 > > `( 00:07:18 v #9060 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:18 v #9061 > > Fable.Core.Emit(\"std::process::Stdio\")>]]\n#endif\ntype std_process_Stdio = 00:07:18 v #9062 > > class end" 00:07:18 v #9063 > > $'' : $'std_process_Stdio' 00:07:18 v #9064 > > ) 00:07:18 v #9065 > > 00:07:18 v #9066 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9067 > > │ ### process_output 00:07:18 v #9068 > > 00:07:18 v #9069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9070 > > nominal process_output = 00:07:18 v #9071 > > `( 00:07:18 v #9072 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:18 v #9073 > > Fable.Core.Emit(\"std::process::Output\")>]]\n#endif\ntype std_process_Output = 00:07:18 v #9074 > > class end" 00:07:18 v #9075 > > $'' : $'std_process_Output' 00:07:18 v #9076 > > ) 00:07:18 v #9077 > > 00:07:18 v #9078 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9079 > > │ ### process_exit_status 00:07:18 v #9080 > > 00:07:18 v #9081 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9082 > > nominal process_exit_status = 00:07:18 v #9083 > > `( 00:07:18 v #9084 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:18 v #9085 > > Fable.Core.Emit(\"std::process::ExitStatus\")>]]\n#endif\ntype 00:07:18 v #9086 > > std_process_ExitStatus = class end" 00:07:18 v #9087 > > $'' : $'std_process_ExitStatus' 00:07:18 v #9088 > > ) 00:07:18 v #9089 > > 00:07:18 v #9090 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9091 > > │ ### process_output_status 00:07:18 v #9092 > > 00:07:18 v #9093 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9094 > > inl process_output_status (output : process_output) : process_exit_status = 00:07:18 v #9095 > > !\\(output, $'"$0.status"') 00:07:18 v #9096 > > 00:07:18 v #9097 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9098 > > │ ### process_exit_status_code 00:07:18 v #9099 > > 00:07:18 v #9100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9101 > > inl process_exit_status_code (status : process_exit_status) : optionm'.option' 00:07:18 v #9102 > > i32 = 00:07:18 v #9103 > > !\\(status, $'"$0.code()"') 00:07:18 v #9104 > > 00:07:18 v #9105 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9106 > > │ ### stdin_write_all 00:07:18 v #9107 > > 00:07:18 v #9108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9109 > > inl stdin_write_all (stdin : threading.mutex_guard process_child_stdin) (text : 00:07:18 v #9110 > > string) : () = 00:07:18 v #9111 > > inl stream = text |> sm'.as_bytes 00:07:18 v #9112 > > inl stdin = join stdin 00:07:18 v #9113 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:07:18 v #9114 > > (!\\(stdin, $'"true; std::io::Write::write_all(&mut *$0, 00:07:18 v #9115 > > !stream).unwrap()"') : bool) |> ignore 00:07:18 v #9116 > > 00:07:18 v #9117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:18 v #9118 > > │ ### stdin_flush 00:07:18 v #9119 > > 00:07:18 v #9120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:18 v #9121 > > inl stdin_flush (stdin : threading.mutex_guard process_child_stdin) : () = 00:07:18 v #9122 > > inl stdin = join stdin 00:07:18 v #9123 > > (!\($'"true; let mut !stdin = !stdin"') : bool) |> ignore 00:07:18 v #9124 > > (!\\(stdin, $'"true; std::io::Write::flush(&mut *$0).unwrap()"') : bool) |> 00:07:18 v #9125 > > ignore 00:07:19 v #9126 > > 00:07:19 v #9127 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9128 > > │ ### new_process_command 00:07:19 v #9129 > > 00:07:19 v #9130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9131 > > inl new_process_command (file_name : string) : process_command = 00:07:19 v #9132 > > !\\(file_name, $'"std::process::Command::new(&*$0)"') 00:07:19 v #9133 > > 00:07:19 v #9134 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9135 > > │ ### process_stdio_piped 00:07:19 v #9136 > > 00:07:19 v #9137 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9138 > > inl process_stdio_piped () : process_stdio = 00:07:19 v #9139 > > !\($'"std::process::Stdio::piped()"') 00:07:19 v #9140 > > 00:07:19 v #9141 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9142 > > │ ### process_command_args 00:07:19 v #9143 > > 00:07:19 v #9144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9145 > > inl process_command_args (args : am'.vec sm'.std_string) (c : process_command) : 00:07:19 v #9146 > > process_command = 00:07:19 v #9147 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:19 v #9148 > > (!\\(args, $'"true; std::process::Command::args(&mut !c, &*$0)"') : bool) |> 00:07:19 v #9149 > > ignore 00:07:19 v #9150 > > c |> rust.emit 00:07:19 v #9151 > > 00:07:19 v #9152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9153 > > │ ### process_command_stdout 00:07:19 v #9154 > > 00:07:19 v #9155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9156 > > inl process_command_stdout (stdio : process_stdio) (c : process_command) : 00:07:19 v #9157 > > process_command = 00:07:19 v #9158 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:19 v #9159 > > (!\($'"true; std::process::Command::stdout(&mut !c, 00:07:19 v #9160 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:19 v #9161 > > c |> rust.emit 00:07:19 v #9162 > > 00:07:19 v #9163 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9164 > > │ ### process_command_stderr 00:07:19 v #9165 > > 00:07:19 v #9166 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9167 > > inl process_command_stderr (stdio : process_stdio) (c : process_command) : 00:07:19 v #9168 > > process_command = 00:07:19 v #9169 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:19 v #9170 > > (!\($'"true; std::process::Command::stderr(&mut !c, 00:07:19 v #9171 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:19 v #9172 > > c |> rust.emit 00:07:19 v #9173 > > 00:07:19 v #9174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:19 v #9175 > > │ ### process_command_stdin 00:07:19 v #9176 > > 00:07:19 v #9177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:19 v #9178 > > inl process_command_stdin (stdio : process_stdio) (c : process_command) : 00:07:19 v #9179 > > process_command = 00:07:19 v #9180 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:19 v #9181 > > (!\($'"true; std::process::Command::stdin(&mut !c, 00:07:19 v #9182 > > std::process::Stdio::piped())"') : bool) |> ignore 00:07:19 v #9183 > > c |> rust.emit 00:07:20 v #9184 > > 00:07:20 v #9185 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9186 > > │ ### process_command_current_dir 00:07:20 v #9187 > > 00:07:20 v #9188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9189 > > inl process_command_current_dir (dir : string) (c : process_command) : 00:07:20 v #9190 > > process_command = 00:07:20 v #9191 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:20 v #9192 > > (!\\(dir, $'"true; std::process::Command::current_dir(&mut !c, &*$0)"') : 00:07:20 v #9193 > > bool) |> ignore 00:07:20 v #9194 > > !\($'$"!c"') 00:07:20 v #9195 > > 00:07:20 v #9196 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9197 > > │ ### process_command_env 00:07:20 v #9198 > > 00:07:20 v #9199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9200 > > inl process_command_env (key : string) (value : string) (c : process_command) : 00:07:20 v #9201 > > process_command = 00:07:20 v #9202 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:20 v #9203 > > (!\\((key, value), $'"true; std::process::Command::env(&mut !c, &*$0, 00:07:20 v #9204 > > &*$1)"') : bool) |> ignore 00:07:20 v #9205 > > c |> rust.emit 00:07:20 v #9206 > > 00:07:20 v #9207 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9208 > > │ ### process_command_spawn 00:07:20 v #9209 > > 00:07:20 v #9210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9211 > > inl process_command_spawn 00:07:20 v #9212 > > (c : process_command) 00:07:20 v #9213 > > : resultm.result' process_child stream.io_error 00:07:20 v #9214 > > = 00:07:20 v #9215 > > (!\($'"true; let mut !c = !c"') : bool) |> ignore 00:07:20 v #9216 > > !\($'"std::process::Command::spawn(&mut !c)"') 00:07:20 v #9217 > > 00:07:20 v #9218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9219 > > │ ### child_wait_with_output 00:07:20 v #9220 > > 00:07:20 v #9221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9222 > > inl child_wait_with_output 00:07:20 v #9223 > > (child : process_child) 00:07:20 v #9224 > > : resultm.result' process_output stream.io_error 00:07:20 v #9225 > > = 00:07:20 v #9226 > > !\\(child, $'"$0.wait_with_output()"') 00:07:20 v #9227 > > 00:07:20 v #9228 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9229 > > │ ### stdio_line 00:07:20 v #9230 > > 00:07:20 v #9231 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9232 > > inl stdio_line 00:07:20 v #9233 > > (stdio : result () ()) 00:07:20 v #9234 > > (trace' : bool) 00:07:20 v #9235 > > (channel_sender : threading.arc (threading.mutex (threading.channel_sender 00:07:20 v #9236 > > sm'.std_string))) 00:07:20 v #9237 > > (line : resultm.result' sm'.std_string stream.io_error) 00:07:20 v #9238 > > : resultm.result' () sm'.std_string 00:07:20 v #9239 > > = 00:07:20 v #9240 > > inl highlight text = 00:07:20 v #9241 > > $'$"\\u001b[[4;7m{!text}\\u001b[[0m"' 00:07:20 v #9242 > > inl line = 00:07:20 v #9243 > > match 00:07:20 v #9244 > > line 00:07:20 v #9245 > > |> resultm.map_error' sm'.format' 00:07:20 v #9246 > > |> resultm.unbox' 00:07:20 v #9247 > > with 00:07:20 v #9248 > > | Ok line => 00:07:20 v #9249 > > inl line = 00:07:20 v #9250 > > line 00:07:20 v #9251 > > |> sm'.from_std_string 00:07:20 v #9252 > > // |> sm'.as_bytes 00:07:20 v #9253 > > // |> am'.slice_to_vec 00:07:20 v #9254 > > |> sm'.encoding_encode' (sm'.encoding_utf8' ()) 00:07:20 v #9255 > > |> rust.cow_as_ref 00:07:20 v #9256 > > |> sm'.str_from_utf8 00:07:20 v #9257 > > // |> sm'.utf8_decode 00:07:20 v #9258 > > |> resultm.unwrap' 00:07:20 v #9259 > > |> sm'.ref_to_std_string 00:07:20 v #9260 > > // String::from_utf8_lossy(line.as_bytes()).into() 00:07:20 v #9261 > > inl line_log = line |> sm'.from_std_string 00:07:20 v #9262 > > inl text = 00:07:20 v #9263 > > match stdio with 00:07:20 v #9264 > > | Ok () => $'$"> {!line_log}"' 00:07:20 v #9265 > > | Error () => $'$"\! {!line_log}"' 00:07:20 v #9266 > > if trace' 00:07:20 v #9267 > > then trace Verbose (fun () => text) id 00:07:20 v #9268 > > else text |> console.write_line 00:07:20 v #9269 > > match stdio with 00:07:20 v #9270 > > | Ok () => line 00:07:20 v #9271 > > | Error () => line |> highlight |> sm'.to_std_string 00:07:20 v #9272 > > | Error e => 00:07:20 v #9273 > > trace Critical 00:07:20 v #9274 > > fun () => "runtime.stdio_line" 00:07:20 v #9275 > > fun () => { trace' e } 00:07:20 v #9276 > > e |> highlight |> sm'.to_std_string 00:07:20 v #9277 > > channel_sender 00:07:20 v #9278 > > |> threading.arc_mutex_lock 00:07:20 v #9279 > > |> resultm.unwrap' 00:07:20 v #9280 > > |> threading.mutex_guard_ref 00:07:20 v #9281 > > |> threading.channel_send line 00:07:20 v #9282 > > |> resultm.map_error' sm'.format' 00:07:20 v #9283 > > 00:07:20 v #9284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:20 v #9285 > > │ ### command 00:07:20 v #9286 > > 00:07:20 v #9287 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:20 v #9288 > > nominal command = 00:07:20 v #9289 > > `( 00:07:20 v #9290 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:20 v #9291 > > Fable.Core.Emit(\"clap::Command\")>]]\n#endif\ntype clap_Command = class end" 00:07:20 v #9292 > > $'' : $'clap_Command' 00:07:20 v #9293 > > ) 00:07:21 v #9294 > > 00:07:21 v #9295 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:21 v #9296 > > │ ### new_command 00:07:21 v #9297 > > 00:07:21 v #9298 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:21 v #9299 > > inl new_command (s : rust.static_ref sm'.str) : command = 00:07:21 v #9300 > > !\\(s, $'"clap::Command::new($0)"') 00:07:21 v #9301 > > 00:07:21 v #9302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:21 v #9303 > > //// test 00:07:21 v #9304 > > ///! rust -d clap 00:07:21 v #9305 > > 00:07:21 v #9306 > > ##"command" 00:07:21 v #9307 > > |> new_command 00:07:21 v #9308 > > |> sm'.format_pretty 00:07:21 v #9309 > > |> _assert sm'.contains "\"command\"" 00:07:30 v #9310 > > 00:07:30 v #9311 > > ── [ 8.92s - return value ] ──────────────────────────────────────────────────── 00:07:30 v #9312 > > │ __assert / actual: ""command"" / expected: "Command { 00:07:30 v #9313 > > │ name: "command", 00:07:30 v #9314 > > │ long_flag: None, 00:07:30 v #9315 > > │ short_flag: None, 00:07:30 v #9316 > > │ display_name: None, 00:07:30 v #9317 > > │ bin_name: None, 00:07:30 v #9318 > > │ author: None, 00:07:30 v #9319 > > │ version: None, 00:07:30 v #9320 > > │ long_version: None, 00:07:30 v #9321 > > │ about: None, 00:07:30 v #9322 > > │ long_about: None, 00:07:30 v #9323 > > │ before_help: None, 00:07:30 v #9324 > > │ before_long_help: None, 00:07:30 v #9325 > > │ after_help: None, 00:07:30 v #9326 > > │ after_long_help: None, 00:07:30 v #9327 > > │ aliases: [], 00:07:30 v #9328 > > │ short_flag_aliases: [], 00:07:30 v #9329 > > │ long_flag_aliases: [], 00:07:30 v #9330 > > │ usage_str: None, 00:07:30 v #9331 > > │ usage_name: None, 00:07:30 v #9332 > > │ help_str: None, 00:07:30 v #9333 > > │ disp_ord: None, 00:07:30 v #9334 > > │ template: None, 00:07:30 v #9335 > > │ settings: AppFlags( 00:07:30 v #9336 > > │ 0, 00:07:30 v #9337 > > │ ), 00:07:30 v #9338 > > │ g_settings: AppFlags( 00:07:30 v #9339 > > │ 0, 00:07:30 v #9340 > > │ ), 00:07:30 v #9341 > > │ args: MKeyMap { 00:07:30 v #9342 > > │ args: [], 00:07:30 v #9343 > > │ keys: [], 00:07:30 v #9344 > > │ }, 00:07:30 v #9345 > > │ subcommands: [], 00:07:30 v #9346 > > │ groups: [], 00:07:30 v #9347 > > │ current_help_heading: None, 00:07:30 v #9348 > > │ current_disp_ord: Some( 00:07:30 v #9349 > > │ 0, 00:07:30 v #9350 > > │ ), 00:07:30 v #9351 > > │ subcommand_value_name: None, 00:07:30 v #9352 > > │ subcommand_heading: None, 00:07:30 v #9353 > > │ external_value_parser: None, 00:07:30 v #9354 > > │ long_help_exists: false, 00:07:30 v #9355 > > │ deferred: None, 00:07:30 v #9356 > > │ app_ext: Extensions { 00:07:30 v #9357 > > │ extensions: FlatMap { 00:07:30 v #9358 > > │ keys: [], 00:07:30 v #9359 > > │ values: [], 00:07:30 v #9360 > > │ }, 00:07:30 v #9361 > > │ }, 00:07:30 v #9362 > > │ }" 00:07:30 v #9363 > > │ 00:07:30 v #9364 > > 00:07:30 v #9365 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:30 v #9366 > > │ ### arg 00:07:30 v #9367 > > 00:07:30 v #9368 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:30 v #9369 > > nominal arg = 00:07:30 v #9370 > > `( 00:07:30 v #9371 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:30 v #9372 > > Fable.Core.Emit(\"clap::Arg\")>]]\n#endif\ntype clap_Arg = class end" 00:07:30 v #9373 > > $'' : $'clap_Arg' 00:07:30 v #9374 > > ) 00:07:30 v #9375 > > 00:07:30 v #9376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:30 v #9377 > > │ ### new_arg 00:07:30 v #9378 > > 00:07:30 v #9379 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:30 v #9380 > > inl new_arg (s : rust.static_ref sm'.str) : arg = 00:07:30 v #9381 > > !\\(s, $'"clap::Arg::new($0)"') 00:07:30 v #9382 > > 00:07:30 v #9383 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:30 v #9384 > > //// test 00:07:30 v #9385 > > ///! rust -d clap 00:07:30 v #9386 > > 00:07:30 v #9387 > > ##"arg" 00:07:30 v #9388 > > |> new_arg 00:07:30 v #9389 > > |> sm'.format_pretty 00:07:30 v #9390 > > |> _assert sm'.contains "\"arg\"" 00:07:35 v #9391 > > 00:07:35 v #9392 > > ── [ 5.54s - return value ] ──────────────────────────────────────────────────── 00:07:35 v #9393 > > │ __assert / actual: ""arg"" / expected: "Arg { 00:07:35 v #9394 > > │ id: "arg", 00:07:35 v #9395 > > │ help: None, 00:07:35 v #9396 > > │ long_help: None, 00:07:35 v #9397 > > │ action: None, 00:07:35 v #9398 > > │ value_parser: None, 00:07:35 v #9399 > > │ blacklist: [], 00:07:35 v #9400 > > │ settings: ArgFlags( 00:07:35 v #9401 > > │ 0, 00:07:35 v #9402 > > │ ), 00:07:35 v #9403 > > │ overrides: [], 00:07:35 v #9404 > > │ groups: [], 00:07:35 v #9405 > > │ requires: [], 00:07:35 v #9406 > > │ r_ifs: [], 00:07:35 v #9407 > > │ r_unless: [], 00:07:35 v #9408 > > │ short: None, 00:07:35 v #9409 > > │ long: None, 00:07:35 v #9410 > > │ aliases: [], 00:07:35 v #9411 > > │ short_aliases: [], 00:07:35 v #9412 > > │ disp_ord: None, 00:07:35 v #9413 > > │ val_names: [], 00:07:35 v #9414 > > │ num_vals: None, 00:07:35 v #9415 > > │ val_delim: None, 00:07:35 v #9416 > > │ default_vals: [], 00:07:35 v #9417 > > │ default_vals_ifs: [], 00:07:35 v #9418 > > │ terminator: None, 00:07:35 v #9419 > > │ index: None, 00:07:35 v #9420 > > │ help_heading: None, 00:07:35 v #9421 > > │ default_missing_vals: [], 00:07:35 v #9422 > > │ ext: Extensions { 00:07:35 v #9423 > > │ extensions: FlatMap { 00:07:35 v #9424 > > │ keys: [], 00:07:35 v #9425 > > │ values: [], 00:07:35 v #9426 > > │ }, 00:07:35 v #9427 > > │ }, 00:07:35 v #9428 > > │ }" 00:07:35 v #9429 > > │ 00:07:35 v #9430 > > 00:07:35 v #9431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:35 v #9432 > > │ ### command_arg 00:07:35 v #9433 > > 00:07:35 v #9434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:35 v #9435 > > inl command_arg (arg : arg) (command : command) : command = 00:07:35 v #9436 > > !\\((command, arg), $'"clap::Command::arg($0, $1)"') 00:07:36 v #9437 > > 00:07:36 v #9438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9439 > > │ ### arg_required 00:07:36 v #9440 > > 00:07:36 v #9441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9442 > > inl arg_required (value : bool) (arg : arg) : arg = 00:07:36 v #9443 > > !\\((arg, value), $'"$0.required($1)"') 00:07:36 v #9444 > > 00:07:36 v #9445 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9446 > > │ ### arg_require_equals 00:07:36 v #9447 > > 00:07:36 v #9448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9449 > > inl arg_require_equals (value : bool) (arg : arg) : arg = 00:07:36 v #9450 > > !\\((arg, value), $'"$0.require_equals($1)"') 00:07:36 v #9451 > > 00:07:36 v #9452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9453 > > │ ### arg_default_value 00:07:36 v #9454 > > 00:07:36 v #9455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9456 > > inl arg_default_value (value : string) (arg : arg) : arg = 00:07:36 v #9457 > > inl value = #value 00:07:36 v #9458 > > !\\((arg, value), $'"$0.default_value($1)"') 00:07:36 v #9459 > > 00:07:36 v #9460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9461 > > │ ### arg_default_missing_value 00:07:36 v #9462 > > 00:07:36 v #9463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9464 > > inl arg_default_missing_value (value : string) (arg : arg) : arg = 00:07:36 v #9465 > > inl value = #value 00:07:36 v #9466 > > !\\((arg, value), $'"$0.default_missing_value($1)"') 00:07:36 v #9467 > > 00:07:36 v #9468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9469 > > │ ### arg_overrides_with 00:07:36 v #9470 > > 00:07:36 v #9471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9472 > > inl arg_overrides_with (value : string) (arg : arg) : arg = 00:07:36 v #9473 > > inl value = #value 00:07:36 v #9474 > > !\\((arg, value), $'"$0.overrides_with($1)"') 00:07:36 v #9475 > > 00:07:36 v #9476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:36 v #9477 > > │ ### arg_short 00:07:36 v #9478 > > 00:07:36 v #9479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:36 v #9480 > > inl arg_short (value : char) (arg : arg) : arg = 00:07:36 v #9481 > > !\\((arg, value), $'"$0.short($1)"') 00:07:37 v #9482 > > 00:07:37 v #9483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9484 > > │ ### arg_long 00:07:37 v #9485 > > 00:07:37 v #9486 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9487 > > inl arg_long (value : rust.static_ref sm'.str) (arg : arg) : arg = 00:07:37 v #9488 > > !\\((arg, value), $'"$0.long($1)"') 00:07:37 v #9489 > > 00:07:37 v #9490 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9491 > > │ ### arg_value_names 00:07:37 v #9492 > > 00:07:37 v #9493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9494 > > inl arg_value_names (values : array_base (rust.static_ref sm'.str)) (arg : arg) 00:07:37 v #9495 > > : arg = 00:07:37 v #9496 > > inl values = values |> am'.to_vec 00:07:37 v #9497 > > !\\((arg, values), $'"$0.value_names($1)"') 00:07:37 v #9498 > > 00:07:37 v #9499 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9500 > > │ ### arg_num_args 00:07:37 v #9501 > > 00:07:37 v #9502 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9503 > > inl arg_num_args (value : i32) (arg : arg) : arg = 00:07:37 v #9504 > > !\\((arg, value), $'"$0.num_args($1)"') 00:07:37 v #9505 > > 00:07:37 v #9506 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9507 > > │ ### value_range 00:07:37 v #9508 > > 00:07:37 v #9509 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9510 > > nominal value_range = 00:07:37 v #9511 > > `( 00:07:37 v #9512 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:37 v #9513 > > Fable.Core.Emit(\"clap::builder::ValueRange\")>]]\n#endif\ntype 00:07:37 v #9514 > > clap_builder_ValueRange = class end" 00:07:37 v #9515 > > $'' : $'clap_builder_ValueRange' 00:07:37 v #9516 > > ) 00:07:37 v #9517 > > 00:07:37 v #9518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9519 > > │ ### new_value_range 00:07:37 v #9520 > > 00:07:37 v #9521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9522 > > inl new_value_range forall t. inclusive (start : _ t) (end : _ t) : value_range 00:07:37 v #9523 > > = 00:07:37 v #9524 > > inl len () = 00:07:37 v #9525 > > 0i32 |> convert 00:07:37 v #9526 > > inl start, end = 00:07:37 v #9527 > > open am' 00:07:37 v #9528 > > match start, end with 00:07:37 v #9529 > > | Start start, End fn => 00:07:37 v #9530 > > start, len |> fn 00:07:37 v #9531 > > | End start_fn, End end_fn => 00:07:37 v #9532 > > start_fn len, end_fn len 00:07:37 v #9533 > > inl inclusive = 00:07:37 v #9534 > > if inclusive 00:07:37 v #9535 > > then "=" 00:07:37 v #9536 > > else "" 00:07:37 v #9537 > > match start, end with 00:07:37 v #9538 > > | start, end when end =. len () => !\\(start, 00:07:37 v #9539 > > $'"clap::builder::ValueRange::new($0..)"') 00:07:37 v #9540 > > | start, end => !\\((start, end), $'"clap::builder::ValueRange::new($0.." + 00:07:37 v #9541 > > !inclusive + "$1)"') 00:07:37 v #9542 > > 00:07:37 v #9543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:37 v #9544 > > │ ### arg_num_args_range 00:07:37 v #9545 > > 00:07:37 v #9546 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:37 v #9547 > > inl arg_num_args_range (value : value_range) (arg : arg) : arg = 00:07:37 v #9548 > > !\\((arg, value), $'"$0.num_args($1)"') 00:07:38 v #9549 > > 00:07:38 v #9550 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9551 > > │ ### arg_value_name 00:07:38 v #9552 > > 00:07:38 v #9553 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9554 > > inl arg_value_name (value : string) (arg : arg) : arg = 00:07:38 v #9555 > > inl value = value |> sm'.as_str 00:07:38 v #9556 > > !\\((arg, value), $'"$0.value_name($1)"') 00:07:38 v #9557 > > 00:07:38 v #9558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9559 > > │ ### value_parser 00:07:38 v #9560 > > 00:07:38 v #9561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9562 > > nominal value_parser = 00:07:38 v #9563 > > `( 00:07:38 v #9564 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:38 v #9565 > > Fable.Core.Emit(\"clap::builder::ValueParser\")>]]\n#endif\ntype 00:07:38 v #9566 > > clap_builder_ValueParser = class end" 00:07:38 v #9567 > > $'' : $'clap_builder_ValueParser' 00:07:38 v #9568 > > ) 00:07:38 v #9569 > > 00:07:38 v #9570 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9571 > > │ ### possible_value 00:07:38 v #9572 > > 00:07:38 v #9573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9574 > > nominal possible_value = 00:07:38 v #9575 > > `( 00:07:38 v #9576 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:38 v #9577 > > Fable.Core.Emit(\"clap::builder::PossibleValue\")>]]\n#endif\ntype 00:07:38 v #9578 > > clap_builder_PossibleValue = class end" 00:07:38 v #9579 > > $'' : $'clap_builder_PossibleValue' 00:07:38 v #9580 > > ) 00:07:38 v #9581 > > 00:07:38 v #9582 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9583 > > │ ### new_possible_value 00:07:38 v #9584 > > 00:07:38 v #9585 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9586 > > inl new_possible_value forall t. (x : t) : possible_value = 00:07:38 v #9587 > > !\\(x, $'"clap::builder::PossibleValue::new(&**$0)"') 00:07:38 v #9588 > > 00:07:38 v #9589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9590 > > │ ### value_parser_path_buf 00:07:38 v #9591 > > 00:07:38 v #9592 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9593 > > inl value_parser_path_buf () : value_parser = 00:07:38 v #9594 > > !\($'"clap::value_parser\!(std::path::PathBuf)"') 00:07:38 v #9595 > > 00:07:38 v #9596 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:38 v #9597 > > │ ### value_parser_expr 00:07:38 v #9598 > > 00:07:38 v #9599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:38 v #9600 > > inl value_parser_expr (expr : string) : value_parser = 00:07:38 v #9601 > > !\($'"clap::value_parser\!(" + !expr + ").into()"') 00:07:39 v #9602 > > 00:07:39 v #9603 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9604 > > │ ### arg_value_parser 00:07:39 v #9605 > > 00:07:39 v #9606 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9607 > > inl arg_value_parser (values : value_parser) (arg : arg) : arg = 00:07:39 v #9608 > > !\\((arg, values), $'"$0.value_parser($1)"') 00:07:39 v #9609 > > 00:07:39 v #9610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9611 > > │ ### arg_action 00:07:39 v #9612 > > 00:07:39 v #9613 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9614 > > nominal arg_action' = 00:07:39 v #9615 > > `( 00:07:39 v #9616 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:39 v #9617 > > Fable.Core.Emit(\"clap::ArgAction\")>]]\n#endif\ntype clap_ArgAction = class 00:07:39 v #9618 > > end" 00:07:39 v #9619 > > $'' : $'clap_ArgAction' 00:07:39 v #9620 > > ) 00:07:39 v #9621 > > 00:07:39 v #9622 > > union arg_action = 00:07:39 v #9623 > > | Set 00:07:39 v #9624 > > | Append 00:07:39 v #9625 > > | SetTrue 00:07:39 v #9626 > > | SetFalse 00:07:39 v #9627 > > | Count 00:07:39 v #9628 > > | Help 00:07:39 v #9629 > > | HelpShort 00:07:39 v #9630 > > | HelpLong 00:07:39 v #9631 > > | Version 00:07:39 v #9632 > > 00:07:39 v #9633 > > inl arg_action = function 00:07:39 v #9634 > > | Set => !\($'"clap::ArgAction::Set"') : arg_action' 00:07:39 v #9635 > > | Append => !\($'"clap::ArgAction::Append"') : arg_action' 00:07:39 v #9636 > > | SetTrue => !\($'"clap::ArgAction::SetTrue"') : arg_action' 00:07:39 v #9637 > > | SetFalse => !\($'"clap::ArgAction::SetFalse"') : arg_action' 00:07:39 v #9638 > > | Count => !\($'"clap::ArgAction::Count"') : arg_action' 00:07:39 v #9639 > > | Help => !\($'"clap::ArgAction::Help"') : arg_action' 00:07:39 v #9640 > > | HelpShort => !\($'"clap::ArgAction::HelpShort"') : arg_action' 00:07:39 v #9641 > > | HelpLong => !\($'"clap::ArgAction::HelpLong"') : arg_action' 00:07:39 v #9642 > > | Version => !\($'"clap::ArgAction::Version"') : arg_action' 00:07:39 v #9643 > > 00:07:39 v #9644 > > inl arg_action (value : arg_action) (arg : arg) : arg = 00:07:39 v #9645 > > inl value = value |> arg_action 00:07:39 v #9646 > > !\\((arg, value), $'"$0.action($1)"') 00:07:39 v #9647 > > 00:07:39 v #9648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9649 > > │ ### arg_index 00:07:39 v #9650 > > 00:07:39 v #9651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9652 > > inl arg_index (value : i32) (arg : arg) : arg = 00:07:39 v #9653 > > !\\((arg, value), $'"$0.index($1)"') 00:07:39 v #9654 > > 00:07:39 v #9655 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9656 > > │ ### arg_matches 00:07:39 v #9657 > > 00:07:39 v #9658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9659 > > nominal arg_matches = 00:07:39 v #9660 > > `( 00:07:39 v #9661 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:07:39 v #9662 > > Fable.Core.Emit(\"clap::ArgMatches\")>]]\n#endif\ntype clap_ArgMatches = class 00:07:39 v #9663 > > end" 00:07:39 v #9664 > > $'' : $'clap_ArgMatches' 00:07:39 v #9665 > > ) 00:07:39 v #9666 > > 00:07:39 v #9667 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9668 > > │ ### command_get_matches 00:07:39 v #9669 > > 00:07:39 v #9670 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9671 > > inl command_get_matches (command : command) : arg_matches = 00:07:39 v #9672 > > !\\(command, $'"clap::Command::get_matches($0)"') 00:07:39 v #9673 > > 00:07:39 v #9674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:39 v #9675 > > │ ### command_get_matches_from 00:07:39 v #9676 > > 00:07:39 v #9677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:39 v #9678 > > inl command_get_matches_from (args : array_base string) (command : command) : 00:07:39 v #9679 > > arg_matches = 00:07:39 v #9680 > > inl args = args |> am'.to_vec |> am'.vec_map sm'.to_std_string 00:07:39 v #9681 > > !\\(command, $'"clap::Command::get_matches_from($0, !args)"') 00:07:40 v #9682 > > 00:07:40 v #9683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9684 > > │ ### command_args_override_self 00:07:40 v #9685 > > 00:07:40 v #9686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9687 > > inl command_args_override_self (yes : bool) (command : command) : command = 00:07:40 v #9688 > > !\\(command, $'"clap::Command::args_override_self($0, !yes)"') 00:07:40 v #9689 > > 00:07:40 v #9690 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9691 > > │ ### command_init_arg 00:07:40 v #9692 > > 00:07:40 v #9693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9694 > > inl command_init_arg (long, short) fn command = 00:07:40 v #9695 > > command 00:07:40 v #9696 > > |> command_arg ( 00:07:40 v #9697 > > ##long 00:07:40 v #9698 > > |> new_arg 00:07:40 v #9699 > > |> arg_short short 00:07:40 v #9700 > > |> arg_long ##long 00:07:40 v #9701 > > |> fn 00:07:40 v #9702 > > ) 00:07:40 v #9703 > > 00:07:40 v #9704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9705 > > │ ### matches_get_one 00:07:40 v #9706 > > 00:07:40 v #9707 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9708 > > inl matches_get_one forall t. (x : string) (matches : arg_matches) : 00:07:40 v #9709 > > optionm'.option' t = 00:07:40 v #9710 > > inl x = join x 00:07:40 v #9711 > > inl x = x |> sm'.as_str 00:07:40 v #9712 > > !\\((matches, x), $'"clap::ArgMatches::get_one(&$0, $1).cloned()"') 00:07:40 v #9713 > > 00:07:40 v #9714 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9715 > > │ ### matches_get_flag 00:07:40 v #9716 > > 00:07:40 v #9717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9718 > > inl matches_get_flag (x : string) (matches : arg_matches) : bool = 00:07:40 v #9719 > > inl x = join x 00:07:40 v #9720 > > inl x = x |> sm'.as_str 00:07:40 v #9721 > > !\\((matches, x), $'"clap::ArgMatches::get_flag(&$0, $1)"') 00:07:40 v #9722 > > 00:07:40 v #9723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9724 > > │ ### matches_get_many 00:07:40 v #9725 > > 00:07:40 v #9726 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9727 > > inl matches_get_many forall t. (x : string) (matches : arg_matches) : 00:07:40 v #9728 > > optionm'.option' (am'.vec t) = 00:07:40 v #9729 > > inl x = join x 00:07:40 v #9730 > > inl x = x |> sm'.as_str 00:07:40 v #9731 > > !\\((matches, x), $'"clap::ArgMatches::get_many(&$0, $1).map(|x| 00:07:40 v #9732 > > x.cloned().into_iter().collect())"') 00:07:40 v #9733 > > 00:07:40 v #9734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:40 v #9735 > > │ ### matches_get_occurrences 00:07:40 v #9736 > > 00:07:40 v #9737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:40 v #9738 > > inl matches_get_occurrences (x : string) (matches : arg_matches) : 00:07:40 v #9739 > > optionm'.option' (array_base sm'.std_string) = 00:07:40 v #9740 > > inl x = join x 00:07:40 v #9741 > > inl x = x |> sm'.as_str 00:07:40 v #9742 > > !\($'"clap::ArgMatches::get_occurrences(&!matches, !x).cloned()"') 00:07:41 v #9743 > > 00:07:41 v #9744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9745 > > │ ### matches_subcommand 00:07:41 v #9746 > > 00:07:41 v #9747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9748 > > inl matches_subcommand (matches : arg_matches) : optionm'.option' 00:07:41 v #9749 > > (sm'.std_string * arg_matches) = 00:07:41 v #9750 > > !\\((matches, sm'.ref_to_std_string), 00:07:41 v #9751 > > $'"clap::ArgMatches::subcommand(Box::leak(Box::new($0))).map(|(a, b)| ($1(a), 00:07:41 v #9752 > > b.clone()))"') 00:07:41 v #9753 > > 00:07:41 v #9754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9755 > > │ ### matches_values_of 00:07:41 v #9756 > > 00:07:41 v #9757 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9758 > > inl matches_values_of (x : string) (matches : arg_matches) : array_base 00:07:41 v #9759 > > sm'.std_string = 00:07:41 v #9760 > > !\\((matches, x), $'"clap::ArgMatches::values_of($0, &*$1)"') 00:07:41 v #9761 > > 00:07:41 v #9762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9763 > > │ ### command_subcommand_required 00:07:41 v #9764 > > 00:07:41 v #9765 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9766 > > inl command_subcommand_required (value : bool) (command : command) : command = 00:07:41 v #9767 > > !\\(command, $'"clap::Command::subcommand_required($0, !value)"') 00:07:41 v #9768 > > 00:07:41 v #9769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9770 > > │ ### command_subcommand 00:07:41 v #9771 > > 00:07:41 v #9772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9773 > > inl command_subcommand (subcommand : command) (command : command) : command = 00:07:41 v #9774 > > !\\(command, $'"clap::Command::subcommand($0, !subcommand)"') 00:07:41 v #9775 > > 00:07:41 v #9776 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9777 > > │ ### value_parser_possible_values 00:07:41 v #9778 > > 00:07:41 v #9779 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9780 > > inl value_parser_possible_values (values : array_base string) : value_parser = 00:07:41 v #9781 > > inl values = 00:07:41 v #9782 > > values 00:07:41 v #9783 > > |> am'.to_vec 00:07:41 v #9784 > > |> am'.vec_map (sm'.to_std_string >> rust.new_box >> rust.box_leak >> 00:07:41 v #9785 > > new_possible_value) 00:07:41 v #9786 > > !\\(values, 00:07:41 v #9787 > > $'"Into::<clap::builder::ValueParser>::into(clap::builder::PossibleValuesParser: 00:07:41 v #9788 > > :new($0))"') 00:07:41 v #9789 > > 00:07:41 v #9790 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:41 v #9791 > > │ ### arg_union 00:07:41 v #9792 > > 00:07:41 v #9793 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:41 v #9794 > > inl arg_union forall union_type. (fn : union_type -> ()) (arg : arg) : arg = 00:07:41 v #9795 > > arg 00:07:41 v #9796 > > |> arg_value_parser ( 00:07:41 v #9797 > > real reflection.get_union_fields_untag `union_type () 00:07:41 v #9798 > > |> fun x => x : _ (string * union_type) 00:07:41 v #9799 > > |> listm.map fst 00:07:41 v #9800 > > |> listm'.box 00:07:41 v #9801 > > |> listm'.to_array' 00:07:41 v #9802 > > |> value_parser_possible_values 00:07:41 v #9803 > > ) 00:07:42 v #9804 > > 00:07:42 v #9805 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:42 v #9806 > > //// test 00:07:42 v #9807 > > ///! rust -d clap 00:07:42 v #9808 > > 00:07:42 v #9809 > > ##"command" 00:07:42 v #9810 > > |> new_command 00:07:42 v #9811 > > |> command_init_arg ("trace-level", 't') ( 00:07:42 v #9812 > > real arg_union `trace_level ignore 00:07:42 v #9813 > > ) 00:07:42 v #9814 > > |> command_get_matches_from ;[[ "_"; "--trace-level"; "Critical" ]] 00:07:42 v #9815 > > |> matches_get_one "trace-level" 00:07:42 v #9816 > > |> optionm'.unwrap 00:07:42 v #9817 > > |> sm'.from_std_string 00:07:42 v #9818 > > |> reflection.union_try_pick 00:07:42 v #9819 > > |> optionm.value 00:07:42 v #9820 > > |> _assert_eq Critical 00:07:48 v #9821 > > 00:07:48 v #9822 > > ── [ 6.11s - return value ] ──────────────────────────────────────────────────── 00:07:48 v #9823 > > │ __assert_eq / actual: US1_4 / expected: US1_4 00:07:48 v #9824 > > │ 00:07:48 v #9825 > > 00:07:48 v #9826 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9827 > > │ ### command_debug_assert 00:07:48 v #9828 > > 00:07:48 v #9829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #9830 > > inl command_debug_assert (command : command) : () = 00:07:48 v #9831 > > !\\(command, $'"clap::Command::debug_assert($0)"') 00:07:48 v #9832 > > 00:07:48 v #9833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9834 > > │ ## fsharp 00:07:48 v #9835 > > 00:07:48 v #9836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9837 > > │ ### process 00:07:48 v #9838 > > 00:07:48 v #9839 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #9840 > > nominal process = $'System.Diagnostics.Process' 00:07:48 v #9841 > > 00:07:48 v #9842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9843 > > │ ### process_start_info 00:07:48 v #9844 > > 00:07:48 v #9845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #9846 > > nominal process_start_info = $'System.Diagnostics.ProcessStartInfo' 00:07:48 v #9847 > > 00:07:48 v #9848 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9849 > > │ ### data_received_event_args 00:07:48 v #9850 > > 00:07:48 v #9851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #9852 > > nominal data_received_event_args = $'System.Diagnostics.DataReceivedEventArgs' 00:07:48 v #9853 > > 00:07:48 v #9854 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:48 v #9855 > > │ ### new_process 00:07:48 v #9856 > > 00:07:48 v #9857 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:48 v #9858 > > inl new_process (process_start_info : process_start_info) : process = 00:07:48 v #9859 > > $'new `process (StartInfo = !process_start_info)' 00:07:49 v #9860 > > 00:07:49 v #9861 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9862 > > │ ### process_start 00:07:49 v #9863 > > 00:07:49 v #9864 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9865 > > inl process_start (process : process) : bool = 00:07:49 v #9866 > > $'!process.Start' () 00:07:49 v #9867 > > 00:07:49 v #9868 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9869 > > │ ### process_exit_code 00:07:49 v #9870 > > 00:07:49 v #9871 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9872 > > inl process_exit_code (process : process) : i32 = 00:07:49 v #9873 > > run_target function 00:07:49 v #9874 > > | Fsharp (Native) => fun () => $'!process.ExitCode' 00:07:49 v #9875 > > | _ => fun () => null () 00:07:49 v #9876 > > 00:07:49 v #9877 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9878 > > │ ### process_id 00:07:49 v #9879 > > 00:07:49 v #9880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9881 > > let process_id (process : process) : i32 = 00:07:49 v #9882 > > run_target function 00:07:49 v #9883 > > | Fsharp (Native) => fun () => process |> $'_.Id' 00:07:49 v #9884 > > | _ => fun () => null () 00:07:49 v #9885 > > 00:07:49 v #9886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9887 > > │ ### process_has_exited 00:07:49 v #9888 > > 00:07:49 v #9889 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9890 > > let process_has_exited (process : process) : bool = 00:07:49 v #9891 > > run_target function 00:07:49 v #9892 > > | Fsharp (Native) => fun () => process |> $'_.HasExited' 00:07:49 v #9893 > > | _ => fun () => null () 00:07:49 v #9894 > > 00:07:49 v #9895 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9896 > > │ ### process_kill 00:07:49 v #9897 > > 00:07:49 v #9898 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9899 > > let process_kill (process : process) : () = 00:07:49 v #9900 > > run_target function 00:07:49 v #9901 > > | Fsharp (Native) => fun () => process |> $'_.Kill()' 00:07:49 v #9902 > > | _ => fun () => () 00:07:49 v #9903 > > 00:07:49 v #9904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:49 v #9905 > > │ ### process_begin_error_read_line 00:07:49 v #9906 > > 00:07:49 v #9907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:49 v #9908 > > inl process_begin_error_read_line (process : process) : () = 00:07:49 v #9909 > > process |> $'_.BeginErrorReadLine()' 00:07:50 v #9910 > > 00:07:50 v #9911 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9912 > > │ ### process_begin_output_read_line 00:07:50 v #9913 > > 00:07:50 v #9914 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9915 > > inl process_begin_output_read_line (process : process) : () = 00:07:50 v #9916 > > process |> $'_.BeginOutputReadLine()' 00:07:50 v #9917 > > 00:07:50 v #9918 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9919 > > │ ### process_add_output_data_received 00:07:50 v #9920 > > 00:07:50 v #9921 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9922 > > inl process_add_output_data_received fn (process : process) : () = 00:07:50 v #9923 > > $'!process.OutputDataReceived.Add !fn ' 00:07:50 v #9924 > > 00:07:50 v #9925 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9926 > > │ ### process_add_error_data_received 00:07:50 v #9927 > > 00:07:50 v #9928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9929 > > inl process_add_error_data_received fn (process : process) : () = 00:07:50 v #9930 > > $'!process.ErrorDataReceived.Add !fn ' 00:07:50 v #9931 > > 00:07:50 v #9932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9933 > > │ ### process_wait_for_exit_async 00:07:50 v #9934 > > 00:07:50 v #9935 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9936 > > inl process_wait_for_exit_async (ct : threading.cancellation_token) (process : 00:07:50 v #9937 > > process) : async.task () = 00:07:50 v #9938 > > run_target function 00:07:50 v #9939 > > | Fsharp (Native) => fun () => $'!process.WaitForExitAsync !ct ' 00:07:50 v #9940 > > | _ => fun () => null () 00:07:50 v #9941 > > 00:07:50 v #9942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9943 > > │ ### event_data 00:07:50 v #9944 > > 00:07:50 v #9945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9946 > > let event_data (e : data_received_event_args) : string = 00:07:50 v #9947 > > run_target function 00:07:50 v #9948 > > | Fsharp (Native) => fun () => e |> $'_.Data' 00:07:50 v #9949 > > | _ => fun () => null () 00:07:50 v #9950 > > 00:07:50 v #9951 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:50 v #9952 > > │ ### execute_with_options_async 00:07:50 v #9953 > > 00:07:50 v #9954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:50 v #9955 > > let execute_with_options_async (options : execution_options) : _ (int * string) 00:07:50 v #9956 > > = 00:07:50 v #9957 > > fun () => 00:07:50 v #9958 > > run_target_args (fun () => options) function 00:07:50 v #9959 > > | Fsharp (Native) => fun options => 00:07:50 v #9960 > > inl file_name, arguments = options.command |> split_command |> 00:07:50 v #9961 > > resultm.get 00:07:50 v #9962 > > inl working_directory = options.working_directory |> 00:07:50 v #9963 > > optionm'.unbox |> optionm'.default_value "" 00:07:50 v #9964 > > 00:07:50 v #9965 > > trace Debug 00:07:50 v #9966 > > fun () => "runtime.execute_with_options_async" 00:07:50 v #9967 > > fun () => { file_name arguments options } 00:07:50 v #9968 > > 00:07:50 v #9969 > > inl utf8 = sm'.encoding_utf8 () 00:07:50 v #9970 > > inl arguments = arguments |> optionm'.default_value "" 00:07:50 v #9971 > > 00:07:50 v #9972 > > $'let start_info = System.Diagnostics.ProcessStartInfo (' 00:07:50 v #9973 > > $' Arguments = !arguments,' 00:07:50 v #9974 > > $' StandardOutputEncoding = !utf8,' 00:07:50 v #9975 > > $' WorkingDirectory = !working_directory,' 00:07:50 v #9976 > > $' FileName = !file_name,' 00:07:50 v #9977 > > $' CreateNoWindow = true,' 00:07:50 v #9978 > > $' RedirectStandardError = true,' 00:07:50 v #9979 > > $' RedirectStandardOutput = true,' 00:07:50 v #9980 > > $' UseShellExecute = false' 00:07:50 v #9981 > > $')' 00:07:50 v #9982 > > inl start_info : process_start_info = $'start_info' 00:07:50 v #9983 > > 00:07:50 v #9984 > > inl environment_variables = join options.environment_variables 00:07:50 v #9985 > > (a environment_variables : _ i32 _) 00:07:50 v #9986 > > |> am.iter fun key, value => 00:07:50 v #9987 > > $'!start_info.EnvironmentVariables.[[!key]] <- !value ' 00:07:50 v #9988 > > 00:07:50 v #9989 > > inl proc = start_info |> new_process |> use 00:07:50 v #9990 > > inl output : _ string = threading.new_concurrent_stack () 00:07:50 v #9991 > > 00:07:50 v #9992 > > let event error (e : data_received_event_args) = 00:07:50 v #9993 > > fun () => 00:07:50 v #9994 > > inl data = e |> event_data 00:07:50 v #9995 > > if data <> null () then 00:07:50 v #9996 > > match options.on_line |> optionm'.unbox with 00:07:50 v #9997 > > | Some on_line => 00:07:50 v #9998 > > on_line 00:07:50 v #9999 > > { 00:07:50 v #10000 > > process_id = proc |> process_id 00:07:50 v #10001 > > line = data 00:07:50 v #10002 > > error = error 00:07:50 v #10003 > > } 00:07:50 v #10004 > > |> async.do 00:07:50 v #10005 > > | None => () 00:07:50 v #10006 > > 00:07:50 v #10007 > > inl text = 00:07:50 v #10008 > > if error 00:07:50 v #10009 > > then $'$"\! {!data}"' 00:07:50 v #10010 > > else $'$"> {!data}"' 00:07:50 v #10011 > > if options.trace 00:07:50 v #10012 > > then trace Verbose (fun () => text) id 00:07:50 v #10013 > > else text |> console.write_line 00:07:50 v #10014 > > 00:07:50 v #10015 > > inl l = if error then $'"\\u001b[[7;4m"' else "" 00:07:50 v #10016 > > inl r = if error then $'"\\u001b[[0m"' else "" 00:07:50 v #10017 > > output |> threading.concurrent_stack_push 00:07:50 v #10018 > > $'$"{!l}{!data}{!r}"' 00:07:50 v #10019 > > |> async.new_async 00:07:50 v #10020 > > 00:07:50 v #10021 > > proc |> process_add_output_data_received (event false >> 00:07:50 v #10022 > > async.start_immediate) 00:07:50 v #10023 > > proc |> process_add_error_data_received (event true >> 00:07:50 v #10024 > > async.start_immediate) 00:07:50 v #10025 > > 00:07:50 v #10026 > > if proc |> process_start |> not 00:07:50 v #10027 > > then failwith $'$"runtime.execute_with_options_async 00:07:50 v #10028 > > process_start error"' 00:07:50 v #10029 > > 00:07:50 v #10030 > > proc |> process_begin_error_read_line 00:07:50 v #10031 > > proc |> process_begin_output_read_line 00:07:50 v #10032 > > 00:07:50 v #10033 > > inl ct = 00:07:50 v #10034 > > options.cancellation_token 00:07:50 v #10035 > > |> optionm'.unbox 00:07:50 v #10036 > > |> optionm'.default_with threading.token_none 00:07:50 v #10037 > > |> async.merge_cancellation_token_with_default_async 00:07:50 v #10038 > > |> async.let' 00:07:50 v #10039 > > 00:07:50 v #10040 > > ct |> threading.token_register fun () => 00:07:50 v #10041 > > if proc |> process_has_exited |> not 00:07:50 v #10042 > > then proc |> process_kill 00:07:50 v #10043 > > |> use 00:07:50 v #10044 > > |> ignore 00:07:50 v #10045 > > 00:07:50 v #10046 > > inl exit_code : i32 = 00:07:50 v #10047 > > fun () => 00:07:50 v #10048 > > try_unit 00:07:50 v #10049 > > fun () => 00:07:50 v #10050 > > proc 00:07:50 v #10051 > > |> process_wait_for_exit_async ct 00:07:50 v #10052 > > |> async.await_task 00:07:50 v #10053 > > |> async.do 00:07:50 v #10054 > > proc |> process_exit_code |> return 00:07:50 v #10055 > > fun ex => 00:07:50 v #10056 > > // with :? 00:07:50 v #10057 > > System.Threading.Tasks.TaskCanceledException as ex => 00:07:50 v #10058 > > inl ex = ex () 00:07:50 v #10059 > > inl ex' = ex |> sm'.format_exception 00:07:50 v #10060 > > output |> threading.concurrent_stack_push ex' 00:07:50 v #10061 > > inl ex : async.task_canceled_exception = ex |> 00:07:50 v #10062 > > unbox 00:07:50 v #10063 > > trace Warning 00:07:50 v #10064 > > fun () => 00:07:50 v #10065 > > "runtime.execute_with_options_async / WaitForExitAsync" 00:07:50 v #10066 > > fun () => { ex } 00:07:50 v #10067 > > (limit.min : i32) |> return 00:07:50 v #10068 > > |> async.new_async_unit 00:07:50 v #10069 > > |> async.let' 00:07:50 v #10070 > > 00:07:50 v #10071 > > inl output = 00:07:50 v #10072 > > output 00:07:50 v #10073 > > |> seq.cast' 00:07:50 v #10074 > > |> seq.rev'' 00:07:50 v #10075 > > |> fun x => x : seq.seq' string 00:07:50 v #10076 > > |> sm'.concat "\n" 00:07:50 v #10077 > > 00:07:50 v #10078 > > trace Debug 00:07:50 v #10079 > > fun () => "runtime.execute_with_options_async" 00:07:50 v #10080 > > fun () => { exit_code output_length = output |> sm'.length : 00:07:50 v #10081 > > i32 } 00:07:50 v #10082 > > 00:07:50 v #10083 > > (exit_code, output) |> return 00:07:50 v #10084 > > | _ => fun _ => 00:07:50 v #10085 > > global "#if FABLE_COMPILER\n[[<CompilationRepresentation 00:07:50 v #10086 > > (CompilationRepresentationFlags.ModuleSuffix)>]]\nmodule System =\n module 00:07:50 v #10087 > > Diagnostics =\n type Process = bool\n type DataReceivedEventArgs = 00:07:50 v #10088 > > bool\n#endif" 00:07:50 v #10089 > > (null () : int * string) |> return 00:07:50 v #10090 > > |> async.new_async_unit 00:07:51 v #10091 > > 00:07:51 v #10092 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:07:51 v #10093 > > │ ### execute_async 00:07:51 v #10094 > > 00:07:51 v #10095 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:51 v #10096 > > let execute_async command = 00:07:51 v #10097 > > execution_options fun x => { x with 00:07:51 v #10098 > > command = command 00:07:51 v #10099 > > } 00:07:51 v #10100 > > |> execute_with_options_async 00:07:51 v #10101 > > 00:07:51 v #10102 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:07:51 v #10103 > > //// test 00:07:51 v #10104 > > 00:07:51 v #10105 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:07:51 v #10106 > > fun () => 00:07:51 v #10107 > > inl file_name = "test.txt" 00:07:51 v #10108 > > inl temp_dir, disposable = 00:07:51 v #10109 > > (file_name, content) 00:07:51 v #10110 > > |> sm'.format_debug 00:07:51 v #10111 > > |> crypto.hash_text 00:07:51 v #10112 > > |> file_system.create_temp_dir' 00:07:51 v #10113 > > disposable |> use |> ignore 00:07:51 v #10114 > > 00:07:51 v #10115 > > inl path = temp_dir </> file_name 00:07:51 v #10116 > > 00:07:51 v #10117 > > inl exit_code, result = execute_async $'\@$"pwsh -c ""Get-Content 00:07:51 v #10118 > > {!path}"""' |> async.let' 00:07:51 v #10119 > > exit_code |> join _assert_eq 1 00:07:51 v #10120 > > result |> _assert sm'.contains "not exist" 00:07:51 v #10121 > > 00:07:51 v #10122 > > content |> file_system.write_all_text_async path |> async.do 00:07:51 v #10123 > > 00:07:51 v #10124 > > execution_options fun x => { x with 00:07:51 v #10125 > > command = $'\@$"cat ""{!file_name}"""' 00:07:51 v #10126 > > working_directory = Some temp_dir |> optionm'.box 00:07:51 v #10127 > > } 00:07:51 v #10128 > > |> execute_with_options_async 00:07:51 v #10129 > > |> async.let' 00:07:51 v #10130 > > |> ignore 00:07:51 v #10131 > > 00:07:51 v #10132 > > execution_options fun x => { x with 00:07:51 v #10133 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:07:51 v #10134 > > [[System.Text.Encoding]]::UTF8; Get-Content {!file_name}"""' 00:07:51 v #10135 > > working_directory = Some temp_dir |> optionm'.box 00:07:51 v #10136 > > } 00:07:51 v #10137 > > |> execute_with_options_async 00:07:51 v #10138 > > |> async.return_await 00:07:51 v #10139 > > |> async.new_async_unit 00:07:51 v #10140 > > |> async.run_with_timeout 10000 00:07:51 v #10141 > > |> function 00:07:51 v #10142 > > | Some (exit_code, output) => 00:07:51 v #10143 > > exit_code |> join _assert_eq 0i32 00:07:51 v #10144 > > output |> join _assert_eq content 00:07:51 v #10145 > > true 00:07:51 v #10146 > > | _ => false 00:07:51 v #10147 > > |> _assert_eq true 00:08:01 v #10148 > > 00:08:01 v #10149 > > ── [ 10.54s - stdout ] ───────────────────────────────────────────────────────── 00:08:01 v #10150 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { 00:08:01 v #10151 > > file_name = pwsh; arguments = US2_0 00:08:01 v #10152 > > │ "-c "Get-Content 00:08:01 v #10153 > > /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.tx 00:08:01 v #10154 > > t""; options = { command = pwsh -c "Get-Content 00:08:01 v #10155 > > /tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.tx 00:08:01 v #10156 > > t"; cancellation_token = None; environment_variables = [||]; on_line = None; 00:08:01 v #10157 > > stdin = None; trace = true; working_directory = None } } 00:08:01 v #10158 > > │ 00:00:00 v #2 ! Get-Content: Cannot find path 00:08:01 v #10159 > > '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.t 00:08:01 v #10160 > > xt' because it does not exist. 00:08:01 v #10161 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { 00:08:01 v #10162 > > exit_code = 1; output_length = 168 } 00:08:01 v #10163 > > │ __assert_eq / actual: 1 / expected: 1 00:08:01 v #10164 > > │ __assert / actual: "not exist" / expected: 00:08:01 v #10165 > > "Get-Content: Cannot find path 00:08:01 v #10166 > > '/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9/test.t 00:08:01 v #10167 > > xt' because it does not exist." 00:08:01 v #10168 > > │ 00:00:00 d #4 runtime.execute_with_options_async / { 00:08:01 v #10169 > > file_name = cat; arguments = US2_0 ""test.txt""; options = { command = cat 00:08:01 v #10170 > > "test.txt"; cancellation_token = None; environment_variables = [||]; on_line = 00:08:01 v #10171 > > None; stdin = None; trace = true; working_directory = Some 00:08:01 v #10172 > > "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } } 00:08:01 v #10173 > > │ 00:00:00 v #5 > ╭─[ 你好,世界!こんにちは世界! ]─╮ 00:08:01 v #10174 > > │ 00:00:00 d #6 runtime.execute_with_options_async / { 00:08:01 v #10175 > > exit_code = 0; output_length = 22 } 00:08:01 v #10176 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { 00:08:01 v #10177 > > file_name = pwsh; arguments = US2_0 00:08:01 v #10178 > > │ "-c "[System.Console]::OutputEncoding = 00:08:01 v #10179 > > [System.Text.Encoding]::UTF8; Get-Content test.txt""; options = { command = pwsh 00:08:01 v #10180 > > -c "[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Get-Content 00:08:01 v #10181 > > test.txt"; cancellation_token = None; environment_variables = [||]; on_line = 00:08:01 v #10182 > > None; stdin = None; trace = true; working_directory = Some 00:08:01 v #10183 > > "/tmp/!create_temp_path_/dotnet-repl/76793606-813b-88ad-7791-7ce2871edce9" } } 00:08:01 v #10184 > > │ 00:00:00 v #8 > ╭─[ 你好,世界!こんにちは世界! ]─╮ 00:08:01 v #10185 > > │ 00:00:00 d #9 runtime.execute_with_options_async / { 00:08:01 v #10186 > > exit_code = 0; output_length = 22 } 00:08:01 v #10187 > > │ __assert_eq / actual: 0 / expected: 0 00:08:01 v #10188 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" 00:08:01 v #10189 > > / expected: "╭─[ 你好,世界!こんにちは世界! ]─╮" 00:08:01 v #10190 > > │ __assert_eq / actual: true / expected: true 00:08:01 v #10191 > > │ 00:08:01 v #10192 > > 00:08:01 v #10193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:01 v #10194 > > //// test 00:08:01 v #10195 > > 00:08:01 v #10196 > > fun () => 00:08:01 v #10197 > > inl file_name = "test.txt" 00:08:01 v #10198 > > inl text = "0" 00:08:01 v #10199 > > 00:08:01 v #10200 > > inl temp_dir, disposable = 00:08:01 v #10201 > > (file_name, text) 00:08:01 v #10202 > > |> sm'.format_debug 00:08:01 v #10203 > > |> crypto.hash_text 00:08:01 v #10204 > > |> file_system.create_temp_dir' 00:08:01 v #10205 > > disposable |> use |> ignore 00:08:01 v #10206 > > inl path = temp_dir </> file_name 00:08:01 v #10207 > > text |> file_system.write_all_text_async path |> async.do 00:08:01 v #10208 > > 00:08:01 v #10209 > > inl cts = threading.new_cancellation_token_source () 00:08:01 v #10210 > > trace Debug (fun () => "1") id 00:08:01 v #10211 > > inl result = 00:08:01 v #10212 > > execution_options fun x => { x with 00:08:01 v #10213 > > command = $'\@$"pwsh -c ""Get-Content {!path}"""' 00:08:01 v #10214 > > cancellation_token = cts |> threading.cancellation_source_token |> 00:08:01 v #10215 > > Some |> optionm'.box 00:08:01 v #10216 > > } 00:08:01 v #10217 > > |> execute_with_options_async 00:08:01 v #10218 > > |> async.start_child 00:08:01 v #10219 > > |> async.let' 00:08:01 v #10220 > > trace Debug (fun () => "2") id 00:08:01 v #10221 > > async.sleep 100 |> async.do 00:08:01 v #10222 > > trace Debug (fun () => "3") id 00:08:01 v #10223 > > cts |> threading.cancellation_source_cancel 00:08:01 v #10224 > > trace Debug (fun () => "4") id 00:08:01 v #10225 > > inl exit_code, output = result |> async.let' 00:08:01 v #10226 > > trace Debug (fun () => "5") id 00:08:01 v #10227 > > (exit_code, output) |> return 00:08:01 v #10228 > > |> async.new_async_unit 00:08:01 v #10229 > > |> async.run_with_timeout 10000 00:08:01 v #10230 > > |> function 00:08:01 v #10231 > > | Some (exit_code, output) => 00:08:01 v #10232 > > exit_code |> _assert_eq -2147483648i32 00:08:01 v #10233 > > output |> _assert_eq (join 00:08:01 v #10234 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled.") 00:08:01 v #10235 > > true 00:08:01 v #10236 > > | _ => false 00:08:01 v #10237 > > |> _assert_eq true 00:08:12 v #10238 > > 00:08:12 v #10239 > > ── [ 10.41s - stdout ] ───────────────────────────────────────────────────────── 00:08:12 v #10240 > > │ 00:00:00 d #1 1 00:08:12 v #10241 > > │ 00:00:00 d #2 2 00:08:12 v #10242 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { 00:08:12 v #10243 > > file_name = pwsh; arguments = US2_0 00:08:12 v #10244 > > │ "-c "Get-Content 00:08:12 v #10245 > > /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.tx 00:08:12 v #10246 > > t""; options = { command = pwsh -c "Get-Content 00:08:12 v #10247 > > /tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.tx 00:08:12 v #10248 > > t"; cancellation_token = Some System.Threading.CancellationToken; 00:08:12 v #10249 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:08:12 v #10250 > > working_directory = None } } 00:08:12 v #10251 > > │ 00:00:00 d #4 3 00:08:12 v #10252 > > │ 00:00:00 d #5 4 00:08:12 v #10253 > > │ 00:00:00 w #6 runtime.execute_with_options_async 00:08:12 v #10254 > > WaitForExitAsync / { ex = System.Threading.Tasks.TaskCanceledException: A task 00:08:12 v #10255 > > was canceled. } 00:08:12 v #10256 > > │ 00:00:00 d #7 runtime.execute_with_options_async / { 00:08:12 v #10257 > > exit_code = -2147483648; output_length = 66 } 00:08:12 v #10258 > > │ 00:00:00 d #8 5 00:08:12 v #10259 > > │ __assert_eq / actual: -2147483648 / expected: -2147483648 00:08:12 v #10260 > > │ __assert_eq / actual: 00:08:12 v #10261 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled." / expected: 00:08:12 v #10262 > > "System.Threading.Tasks.TaskCanceledException: A task was canceled." 00:08:12 v #10263 > > │ __assert_eq / actual: true / expected: true 00:08:12 v #10264 > > │ 00:08:12 v #10265 > > 00:08:12 v #10266 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:12 v #10267 > > │ ### current_process_kill 00:08:12 v #10268 > > 00:08:12 v #10269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:12 v #10270 > > let current_process_kill () = 00:08:12 v #10271 > > run_target function 00:08:12 v #10272 > > | Fsharp (Native) => fun () => 00:08:12 v #10273 > > inl fn () = 00:08:12 v #10274 > > run_target function 00:08:12 v #10275 > > | Fsharp (Native) => fun () => 00:08:12 v #10276 > > trace Warning (fun () => "runtime.current_process_kill 00:08:12 v #10277 > > exiting... 3") id 00:08:12 v #10278 > > $'System.Threading.Thread.Sleep 300' 00:08:12 v #10279 > > trace Warning (fun () => "runtime.current_process_kill 00:08:12 v #10280 > > exiting... 2") id 00:08:12 v #10281 > > $'System.Console.Out.Flush ()' 00:08:12 v #10282 > > $'System.Threading.Thread.Sleep 60' 00:08:12 v #10283 > > trace Warning (fun () => "runtime.current_process_kill 00:08:12 v #10284 > > exiting... 1") id 00:08:12 v #10285 > > $'System.Diagnostics.Process.GetCurrentProcess().Kill 00:08:12 v #10286 > > ()' : () 00:08:12 v #10287 > > | _ => fun () => () 00:08:12 v #10288 > > inl thread : threading.thread = $'new System.Threading.Thread (!fn)' 00:08:12 v #10289 > > thread |> $'_.Start()' : () 00:08:12 v #10290 > > | _ => fun () => () 00:08:12 v #10291 > > 00:08:12 v #10292 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:12 v #10293 > > │ ### gc_collect 00:08:12 v #10294 > > 00:08:12 v #10295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:12 v #10296 > > inl gc_collect () = 00:08:12 v #10297 > > run_target function 00:08:12 v #10298 > > | Fsharp _ => fun () => $'System.GC.Collect' () : () 00:08:12 v #10299 > > | Python _ => fun () => 00:08:12 v #10300 > > backend_switch { 00:08:12 v #10301 > > Python = fun () => global "import gc" 00:08:12 v #10302 > > } 00:08:12 v #10303 > > ($'gc.collect()' : int) |> ignore 00:08:12 v #10304 > > | _ => fun () => () 00:08:12 v #10305 > > 00:08:12 v #10306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:12 v #10307 > > │ ## runtime 00:08:12 v #10308 > > 00:08:12 v #10309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:12 v #10310 > > │ ### execute_with_options 00:08:12 v #10311 > > 00:08:12 v #10312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:12 v #10313 > > let execute_with_options (options : execution_options) : i32 * string = 00:08:12 v #10314 > > run_target_args' options function 00:08:12 v #10315 > > | Fsharp (Native) => fun options => 00:08:12 v #10316 > > options |> execute_with_options_async |> async.run_synchronously 00:08:12 v #10317 > > | Rust (Native) => fun options => 00:08:12 v #10318 > > inl command = join options.command 00:08:12 v #10319 > > inl file_name, arguments = command |> split_command |> resultm.get 00:08:12 v #10320 > > inl arguments = 00:08:12 v #10321 > > arguments 00:08:12 v #10322 > > |> optionm'.default_value "" 00:08:12 v #10323 > > |> split_args 00:08:12 v #10324 > > |> resultm.get 00:08:12 v #10325 > > |> am'.to_vec 00:08:12 v #10326 > > |> am'.vec_map sm'.to_std_string 00:08:12 v #10327 > > trace Debug 00:08:12 v #10328 > > fun () => "runtime.execute_with_options" 00:08:12 v #10329 > > fun () => { file_name arguments = arguments |> sm'.format_debug; 00:08:12 v #10330 > > options } 00:08:12 v #10331 > > fun () => 00:08:12 v #10332 > > fun () => 00:08:12 v #10333 > > // inl new_command_mutex (command : rust.ref (rust.mut' 00:08:12 v #10334 > > process_command)) : threading.arc (threading.mutex process_command) = 00:08:12 v #10335 > > // () 00:08:12 v #10336 > > file_name 00:08:12 v #10337 > > |> new_process_command 00:08:12 v #10338 > > |> process_command_args arguments 00:08:12 v #10339 > > |> process_command_stdout (process_stdio_piped ()) 00:08:12 v #10340 > > |> process_command_stderr (process_stdio_piped ()) 00:08:12 v #10341 > > |> process_command_stdin (process_stdio_piped ()) 00:08:12 v #10342 > > // |> new_command_mutex 00:08:12 v #10343 > > |> fun command => 00:08:12 v #10344 > > match options.working_directory |> optionm'.unbox with 00:08:12 v #10345 > > | Some working_directory => 00:08:12 v #10346 > > command 00:08:12 v #10347 > > |> process_command_current_dir working_directory 00:08:12 v #10348 > > | None => 00:08:12 v #10349 > > !\($'$"!command"') 00:08:12 v #10350 > > // |> rust.emit 00:08:12 v #10351 > > |> fun command => 00:08:12 v #10352 > > match options.environment_variables with 00:08:12 v #10353 > > | ;[[]] => command 00:08:12 v #10354 > > | vars => 00:08:12 v #10355 > > (command, vars |> am'.to_vec) 00:08:12 v #10356 > > ||> am'.vec_fold' fun command (key, value) => 00:08:12 v #10357 > > command |> process_command_env key value 00:08:12 v #10358 > > |> process_command_spawn 00:08:12 v #10359 > > |> resultm.map_error' sm'.format' 00:08:12 v #10360 > > |> resultm.map' (optionm'.some' >> (join id) >> 00:08:12 v #10361 > > threading.new_arc_mutex) 00:08:12 v #10362 > > |> resultm.unbox' 00:08:12 v #10363 > > |> function 00:08:12 v #10364 > > | Ok child => 00:08:12 v #10365 > > inl stdout = 00:08:12 v #10366 > > fun () => 00:08:12 v #10367 > > child 00:08:12 v #10368 > > |> threading.arc_mutex_lock 00:08:12 v #10369 > > |> resultm.unwrap' 00:08:12 v #10370 > > |> threading.mutex_guard_ref_mut 00:08:12 v #10371 > > |> optionm'.as_mut 00:08:12 v #10372 > > |> optionm'.unwrap 00:08:12 v #10373 > > |> process_child_stdout 00:08:12 v #10374 > > |> optionm'.take_ref_mut 00:08:12 v #10375 > > |> optionm'.unwrap 00:08:12 v #10376 > > |> rust.capture 00:08:12 v #10377 > > inl stderr = 00:08:12 v #10378 > > fun () => 00:08:12 v #10379 > > child 00:08:12 v #10380 > > |> threading.arc_mutex_lock 00:08:12 v #10381 > > |> resultm.unwrap' 00:08:12 v #10382 > > |> threading.mutex_guard_ref_mut 00:08:12 v #10383 > > |> optionm'.as_mut 00:08:12 v #10384 > > |> optionm'.unwrap 00:08:12 v #10385 > > |> process_child_stderr 00:08:12 v #10386 > > |> optionm'.take_ref_mut 00:08:12 v #10387 > > |> optionm'.unwrap 00:08:12 v #10388 > > |> rust.capture 00:08:12 v #10389 > > inl stdin = 00:08:12 v #10390 > > fun () => 00:08:12 v #10391 > > child 00:08:12 v #10392 > > |> threading.arc_mutex_lock 00:08:12 v #10393 > > |> resultm.unwrap' 00:08:12 v #10394 > > |> threading.mutex_guard_ref_mut 00:08:12 v #10395 > > |> optionm'.as_mut 00:08:12 v #10396 > > |> optionm'.unwrap 00:08:12 v #10397 > > |> process_child_stdin 00:08:12 v #10398 > > |> optionm'.take_ref_mut 00:08:12 v #10399 > > |> optionm'.unwrap 00:08:12 v #10400 > > |> optionm'.some' 00:08:12 v #10401 > > |> join id 00:08:12 v #10402 > > |> threading.new_arc_mutex 00:08:12 v #10403 > > |> rust.capture 00:08:12 v #10404 > > inl channel_sender, channel_receiver = 00:08:12 v #10405 > > threading.new_channel () 00:08:12 v #10406 > > inl channel_sender'' = channel_sender |> (join id) 00:08:12 v #10407 > > |> threading.new_arc_mutex 00:08:12 v #10408 > > inl channel_sender' = channel_sender |> (join id) |> 00:08:12 v #10409 > > threading.new_arc_mutex 00:08:12 v #10410 > > inl channel_receiver' = channel_receiver |> (join 00:08:12 v #10411 > > id) |> threading.new_arc_mutex 00:08:12 v #10412 > > inl stdout_handle = 00:08:12 v #10413 > > fun () => 00:08:12 v #10414 > > stdout 00:08:12 v #10415 > > |> stream.decode_reader_bytes_build 00:08:12 v #10416 > > |> stream.new_buf_reader 00:08:12 v #10417 > > |> stream.buf_read_lines 00:08:12 v #10418 > > |> iter.try_for_each fun lines => 00:08:12 v #10419 > > inl channel_sender'' = channel_sender'' 00:08:12 v #10420 > > |> rust.clone 00:08:12 v #10421 > > lines 00:08:12 v #10422 > > |> stdio_line (Ok ()) options.trace 00:08:12 v #10423 > > channel_sender'' 00:08:12 v #10424 > > |> resultm.to_try 00:08:12 v #10425 > > |> threading.spawn (1, 0) 1 00:08:12 v #10426 > > inl stderr_handle = 00:08:12 v #10427 > > fun () => 00:08:12 v #10428 > > stderr 00:08:12 v #10429 > > |> stream.decode_reader_bytes_build 00:08:12 v #10430 > > |> stream.new_buf_reader 00:08:12 v #10431 > > |> stream.buf_read_lines 00:08:12 v #10432 > > |> iter.try_for_each fun lines => 00:08:12 v #10433 > > inl channel_sender' = channel_sender' |> 00:08:12 v #10434 > > rust.clone 00:08:12 v #10435 > > lines 00:08:12 v #10436 > > |> stdio_line (Error ()) options.trace 00:08:12 v #10437 > > channel_sender' 00:08:12 v #10438 > > |> resultm.to_try 00:08:12 v #10439 > > |> threading.spawn (1, 0) 1 00:08:12 v #10440 > > match options.stdin |> optionm'.unbox with 00:08:12 v #10441 > > | Some stdin' => 00:08:12 v #10442 > > stdin 00:08:12 v #10443 > > |> threading.arc_mutex_lock 00:08:12 v #10444 > > |> resultm.unwrap' 00:08:12 v #10445 > > |> threading.mutex_guard_ref_mut 00:08:12 v #10446 > > |> optionm'.take_ref_mut 00:08:12 v #10447 > > |> optionm'.map' threading.new_arc_mutex 00:08:12 v #10448 > > |> optionm'.unbox 00:08:12 v #10449 > > |> function 00:08:12 v #10450 > > | Some stdin => 00:08:12 v #10451 > > stdin |> stdin' 00:08:12 v #10452 > > stdin 00:08:12 v #10453 > > |> threading.arc_mutex_lock 00:08:12 v #10454 > > |> resultm.unwrap' 00:08:12 v #10455 > > |> stdin_flush 00:08:12 v #10456 > > | None => () 00:08:12 v #10457 > > | None => () 00:08:12 v #10458 > > inl output = 00:08:12 v #10459 > > child 00:08:12 v #10460 > > |> threading.arc_mutex_lock 00:08:12 v #10461 > > |> resultm.unwrap' 00:08:12 v #10462 > > |> threading.mutex_guard_ref_mut 00:08:12 v #10463 > > |> optionm'.take_ref_mut 00:08:12 v #10464 > > |> optionm'.unwrap 00:08:12 v #10465 > > |> child_wait_with_output 00:08:12 v #10466 > > |> resultm.map_error' sm'.format' 00:08:12 v #10467 > > [[ stdout_handle; stderr_handle ]] 00:08:12 v #10468 > > |> am'.new_vec 00:08:12 v #10469 > > |> am'.vec_for_each' (threading.join' >> 00:08:12 v #10470 > > resultm.unwrap' >> resultm.unwrap') 00:08:12 v #10471 > > match output |> resultm.unbox with 00:08:12 v #10472 > > | Ok output => 00:08:12 v #10473 > > inl exit_code = 00:08:12 v #10474 > > output 00:08:12 v #10475 > > |> process_output_status 00:08:12 v #10476 > > |> process_exit_status_code 00:08:12 v #10477 > > |> optionm'.unbox 00:08:12 v #10478 > > match exit_code with 00:08:12 v #10479 > > | Some exit_code => exit_code, None, Some 00:08:12 v #10480 > > channel_receiver' 00:08:12 v #10481 > > | None => 00:08:12 v #10482 > > -1, 00:08:12 v #10483 > > ("runtime.execute_with_options 00:08:12 v #10484 > > exit_code=None" |> sm'.to_std_string |> Some), 00:08:12 v #10485 > > Some channel_receiver' 00:08:12 v #10486 > > | Error error => 00:08:12 v #10487 > > trace Critical 00:08:12 v #10488 > > fun () => "runtime.execute_with_options 00:08:12 v #10489 > > output error" 00:08:12 v #10490 > > fun () => { error } 00:08:12 v #10491 > > -2i32, error |> Some, None 00:08:12 v #10492 > > | Error error => 00:08:12 v #10493 > > trace Critical 00:08:12 v #10494 > > fun () => "runtime.execute_with_options / child 00:08:12 v #10495 > > error" 00:08:12 v #10496 > > fun () => { error } 00:08:12 v #10497 > > -1i32, error |> Some, None 00:08:12 v #10498 > > |> function 00:08:12 v #10499 > > | exit_code, std_trace, channel_receiver => 00:08:12 v #10500 > > inl std_trace = 00:08:12 v #10501 > > channel_receiver 00:08:12 v #10502 > > |> optionm'.box 00:08:12 v #10503 > > |> optionm'.map' fun channel_receiver => 00:08:12 v #10504 > > channel_receiver 00:08:12 v #10505 > > |> threading.arc_mutex_lock 00:08:12 v #10506 > > |> resultm.unwrap' 00:08:12 v #10507 > > |> iter.iter 00:08:12 v #10508 > > |> iter_collect'' 00:08:12 v #10509 > > |> am'.vec_map sm'.from_std_string 00:08:12 v #10510 > > |> am'.from_vec 00:08:12 v #10511 > > |> fun x => x : _ i32 _ 00:08:12 v #10512 > > |> seq.of_array 00:08:12 v #10513 > > |> sm'.concat "\n" 00:08:12 v #10514 > > |> optionm'.default_value' ( 00:08:12 v #10515 > > std_trace 00:08:12 v #10516 > > |> optionm.map sm'.from_std_string 00:08:12 v #10517 > > |> optionm'.default_value "" 00:08:12 v #10518 > > ) 00:08:12 v #10519 > > trace Verbose 00:08:12 v #10520 > > fun () => "runtime.execute_with_options 00:08:12 v #10521 > > result" 00:08:12 v #10522 > > fun () => { exit_code std_trace_length = 00:08:12 v #10523 > > std_trace |> sm'.length : i32 } 00:08:12 v #10524 > > new_pair exit_code std_trace 00:08:12 v #10525 > > |> capture 00:08:12 v #10526 > > // |> async.new_future_move 00:08:12 v #10527 > > // |> async.block_on 00:08:12 v #10528 > > |> fun x => x () 00:08:12 v #10529 > > |> from_pair 00:08:12 v #10530 > > | _ => fun _ => null () 00:08:12 v #10531 > > 00:08:12 v #10532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:12 v #10533 > > │ #### execute 00:08:12 v #10534 > > 00:08:12 v #10535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:12 v #10536 > > let execute command = 00:08:12 v #10537 > > execution_options fun x => { x with 00:08:12 v #10538 > > command = command 00:08:12 v #10539 > > } 00:08:12 v #10540 > > |> execute_with_options 00:08:13 v #10541 > > 00:08:13 v #10542 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:13 v #10543 > > │ #### tests 00:08:13 v #10544 > > 00:08:13 v #10545 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:13 v #10546 > > //// test 00:08:13 v #10547 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:08:13 v #10548 > > 00:08:13 v #10549 > > inl content = "╭─[[ 你好,世界!こんにちは世界! ]]─╮" 00:08:13 v #10550 > > 00:08:13 v #10551 > > inl file_name = join "test.txt" 00:08:13 v #10552 > > inl temp_dir, disposable = 00:08:13 v #10553 > > (file_name, content) 00:08:13 v #10554 > > |> sm'.format_debug 00:08:13 v #10555 > > |> crypto.hash_text 00:08:13 v #10556 > > |> file_system.create_temp_dir' 00:08:13 v #10557 > > disposable |> use |> ignore 00:08:13 v #10558 > > inl path = temp_dir </> file_name |> file_system.normalize_path 00:08:13 v #10559 > > inl exit_code, result = 00:08:13 v #10560 > > execute $'\@$"pwsh -c ""[[IO.File]]::ReadAllText(\'{!path}\')"""' 00:08:13 v #10561 > > exit_code |> _assert_eq 1 00:08:13 v #10562 > > result |> _assert sm'.contains "not find file" 00:08:13 v #10563 > > 00:08:13 v #10564 > > content |> file_system.write_all_text path 00:08:13 v #10565 > > 00:08:13 v #10566 > > execution_options fun x => { x with 00:08:13 v #10567 > > command = $'\@$"cat ""{!file_name}"""' 00:08:13 v #10568 > > working_directory = Some temp_dir |> optionm'.box 00:08:13 v #10569 > > } 00:08:13 v #10570 > > |> execute_with_options 00:08:13 v #10571 > > |> ignore 00:08:13 v #10572 > > 00:08:13 v #10573 > > inl exit_code, output = 00:08:13 v #10574 > > execution_options fun x => { x with 00:08:13 v #10575 > > command = $'\@$"pwsh -c ""[[System.Console]]::OutputEncoding = 00:08:13 v #10576 > > [[System.Text.Encoding]]::UTF8; [[IO.File]]::ReadAllText(\'{!file_name}\')"""' 00:08:13 v #10577 > > working_directory = Some temp_dir |> optionm'.box 00:08:13 v #10578 > > } 00:08:13 v #10579 > > |> execute_with_options 00:08:13 v #10580 > > 00:08:13 v #10581 > > exit_code |> _assert_eq 0i32 00:08:13 v #10582 > > output |> _assert_eq content 00:08:35 v #10583 > > 00:08:35 v #10584 > > ── [ 22.12s - return value ] ─────────────────────────────────────────────────── 00:08:35 v #10585 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:08:35 v #10586 > > /tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7061730236704c175d779d9e16 00:08:35 v #10587 > > 02a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16 } 00:08:35 v #10588 > > │ 00:00:00 d #2 runtime.execute_with_options / { 00:08:35 v #10589 > > file_name = pwsh; arguments = ["-c", 00:08:35 v #10590 > > "[IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7 00:08:35 v #10591 > > 061730236704c175d779d9e1602a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16/te 00:08:35 v #10592 > > st.txt')"]; options = { command = pwsh -c 00:08:35 v #10593 > > "[IO.File]::ReadAllText('/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7 00:08:35 v #10594 > > 061730236704c175d779d9e1602a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16/te 00:08:35 v #10595 > > st.txt')"; cancellation_token = None; environment_variables = 00:08:35 v #10596 > > Array(MutCell([])); on_line = None; stdin = None; trace = true; 00:08:35 v #10597 > > working_directory = None } } 00:08:35 v #10598 > > │ 00:00:00 v #3 ! MethodInvocationException: 00:08:35 v #10599 > > Exception calling "ReadAllText" with "1" argument(s): "Could not find file 00:08:35 v #10600 > > '/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7061730236704c175d779d9e1 00:08:35 v #10601 > > 602a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16/test.txt'." 00:08:35 v #10602 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { 00:08:35 v #10603 > > exit_code = 1; std_trace_length = 275 } 00:08:35 v #10604 > > │ __assert_eq / actual: 1 / expected: 1 00:08:35 v #10605 > > │ __assert / actual: "not find file" / expected: 00:08:35 v #10606 > > "MethodInvocationException: Exception calling "ReadAllText" with 00:08:35 v #10607 > > "1" argument(s): "Could not find file 00:08:35 v #10608 > > '/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7061730236704c175d779d9e1 00:08:35 v #10609 > > 602a93537d...aa16/test.txt'."" 00:08:35 v #10610 > > │ 00:00:00 d #5 runtime.execute_with_options / { 00:08:35 v #10611 > > file_name = cat; arguments = ["test.txt"]; options = { command = cat "test.txt"; 00:08:35 v #10612 > > cancellation_token = None; environment_variables = Array(MutCell([])); on_line = 00:08:35 v #10613 > > None; stdin = None; trace = true; working_directory = Some( 00:08:35 v #10614 > > │ 00:08:35 v #10615 > > "/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7061730236704c175d779d9e1 00:08:35 v #10616 > > 602a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16", 00:08:35 v #10617 > > │ ) } } 00:08:35 v #10618 > > │ 00:00:00 v #6 > ╭─[ 你好,世界!こんにちは世界! ]─╮ 00:08:35 v #10619 > > │ 00:00:00 v #7 runtime.execute_with_options / result / { 00:08:35 v #10620 > > exit_code = 0; std_trace_length = 22 } 00:08:35 v #10621 > > │ 00:00:00 d #8 runtime.execute_with_options / { 00:08:35 v #10622 > > file_name = pwsh; arguments = ["-c", "[System.Console]::OutputEncoding = 00:08:35 v #10623 > > [System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"]; options = { 00:08:35 v #10624 > > command = pwsh -c "[System.Console]::OutputEncoding = 00:08:35 v #10625 > > [System.Text.Encoding]::UTF8; [IO.File]::ReadAllText('test.txt')"; 00:08:35 v #10626 > > cancellation_token = None; environment_variables = Array(MutCell([])); on_line = 00:08:35 v #10627 > > None; stdin = None; trace = true; working_directory = Some( 00:08:35 v #10628 > > │ 00:08:35 v #10629 > > "/tmp/!create_temp_path_/spiral_0218d34e2cbc67800d20a7e7061730236704c175d779d9e1 00:08:35 v #10630 > > 602a93537dc36c5d/9242780b-ce0e-9155-5e07-f6ee5667aa16", 00:08:35 v #10631 > > │ ) } } 00:08:35 v #10632 > > │ 00:00:00 v #9 > ╭─[ 你好,世界!こんにちは世界! ]─╮ 00:08:35 v #10633 > > │ 00:00:00 v #10 runtime.execute_with_options / result 00:08:35 v #10634 > > { exit_code = 0; std_trace_length = 22 } 00:08:35 v #10635 > > │ __assert_eq / actual: 0 / expected: 0 00:08:35 v #10636 > > │ __assert_eq / actual: "╭─[ 你好,世界!こんにちは世界! ]─╮" 00:08:35 v #10637 > > / expected: "╭─[ 你好,世界!こんにちは世界! ]─╮" 00:08:35 v #10638 > > │ 00:08:35 v #10639 > > 00:08:35 v #10640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:35 v #10641 > > │ ### execute_retry 00:08:35 v #10642 > > 00:08:35 v #10643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:35 v #10644 > > let execute_retry retries options = 00:08:35 v #10645 > > fun () => 00:08:35 v #10646 > > inl exit_code, result = options |> execute_with_options 00:08:35 v #10647 > > if exit_code = 0 00:08:35 v #10648 > > then Ok (exit_code, result) 00:08:35 v #10649 > > else Error (exit_code, result) 00:08:35 v #10650 > > |> retry_fn' retries 00:08:35 v #10651 > > 00:08:35 v #10652 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:35 v #10653 > > │ ## main 00:08:35 v #10654 > > 00:08:35 v #10655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:35 v #10656 > > inl main () = 00:08:35 v #10657 > > init_trace_state None 00:08:35 v #10658 > > $'let current_process_kill () = !current_process_kill ()' : () 00:08:35 v #10659 > > $'let execute_async x = !execute_async x' : () 00:08:35 v #10660 > > $'let execute_with_options_async x = !execute_with_options_async x' : () 00:08:35 v #10661 > > inl execution_options fn = 00:08:35 v #10662 > > execution_options fun x => 00:08:35 v #10663 > > x 00:08:35 v #10664 > > |> heap 00:08:35 v #10665 > > |> fn 00:08:35 v #10666 > > |> fun x => !x 00:08:35 v #10667 > > $'let execution_options x = !execution_options x' : () 00:08:35 v #10668 > > inl split_args x = x |> split_args |> resultm.box 00:08:35 v #10669 > > $'let split_args x = !split_args x' : () 00:08:39 v #10670 > 00:01:56 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 95681 } 00:08:39 v #10671 > 00:01:56 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:40 v #10672 > 00:01:56 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.ipynb to html 00:08:40 v #10673 > 00:01:56 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:08:40 v #10674 > 00:01:56 v #7 ! validate(nb) 00:08:40 v #10675 > 00:01:57 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:08:40 v #10676 > 00:01:57 v #9 ! return _pygments_highlight( 00:08:42 v #10677 > 00:01:58 v #10 ! [NbConvertApp] Writing 592571 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html 00:08:42 v #10678 > 00:01:58 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:08:42 v #10679 > 00:01:58 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:08:42 v #10680 > 00:01:58 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/runtime.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:42 v #10681 > 00:01:58 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:08:42 v #10682 > 00:01:58 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:08:42 v #10683 > 00:01:58 d #16 spiral.run / dib / { exit_code = 0; result_length = 96638 } 00:08:42 d #10684 runtime.execute_with_options_async / { exit_code = 0; output_length = 103622 } 00:08:42 d #12 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path runtime.dib --retries 3 00:08:42 d #10685 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path trace.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:42 v #10686 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "trace.dib", "--retries", "3"])) } 00:08:42 v #10687 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:08:43 v #10688 > > 00:08:43 v #10689 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:43 v #10690 > > │ # trace 00:08:46 v #10691 > > 00:08:46 v #10692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:46 v #10693 > > //// test 00:08:46 v #10694 > > 00:08:46 v #10695 > > open testing 00:08:47 v #10696 > > 00:08:47 v #10697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10698 > > │ ## trace 00:08:47 v #10699 > > 00:08:47 v #10700 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10701 > > │ ### trace_level 00:08:47 v #10702 > > 00:08:47 v #10703 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10704 > > union trace_level = 00:08:47 v #10705 > > | Verbose 00:08:47 v #10706 > > | Debug 00:08:47 v #10707 > > | Info 00:08:47 v #10708 > > | Warning 00:08:47 v #10709 > > | Critical 00:08:47 v #10710 > > 00:08:47 v #10711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10712 > > │ ### read_state 00:08:47 v #10713 > > 00:08:47 v #10714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10715 > > inl read_state () = 00:08:47 v #10716 > > run_target function 00:08:47 v #10717 > > | Rust (Wasm) => fun () => 00:08:47 v #10718 > > { 00:08:47 v #10719 > > trace_level = None 00:08:47 v #10720 > > repl_start = None 00:08:47 v #10721 > > } 00:08:47 v #10722 > > | Rust (Contract) => fun () => 00:08:47 v #10723 > > { 00:08:47 v #10724 > > trace_level = None 00:08:47 v #10725 > > repl_start = 00:08:47 v #10726 > > open rust.rust_operators 00:08:47 v #10727 > > inl automation = env.get_environment_variable_comptime 00:08:47 v #10728 > > "AUTOMATION" 00:08:47 v #10729 > > if automation <>. "True" 00:08:47 v #10730 > > then None 00:08:47 v #10731 > > else 00:08:47 v #10732 > > inl timestamp : u64 = 00:08:47 v #10733 > > !\($'$"near_sdk::env::block_timestamp()"') 00:08:47 v #10734 > > timestamp |> i64 |> Some 00:08:47 v #10735 > > } 00:08:47 v #10736 > > | _ => fun () => 00:08:47 v #10737 > > join 00:08:47 v #10738 > > { 00:08:47 v #10739 > > trace_level = 00:08:47 v #10740 > > "TRACE_LEVEL" 00:08:47 v #10741 > > |> env.get_environment_variable 00:08:47 v #10742 > > |> reflection.union_try_pick 00:08:47 v #10743 > > repl_start = 00:08:47 v #10744 > > inl automation = env.get_environment_variable 00:08:47 v #10745 > > "AUTOMATION" 00:08:47 v #10746 > > if automation <>. "True" 00:08:47 v #10747 > > then None 00:08:47 v #10748 > > else 00:08:47 v #10749 > > date_time.now () 00:08:47 v #10750 > > |> date_time.ticks 00:08:47 v #10751 > > |> fun (date_time.timestamp x) => x |> convert 00:08:47 v #10752 > > |> Some 00:08:47 v #10753 > > } 00:08:47 v #10754 > > 00:08:47 v #10755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10756 > > │ ### trace_state 00:08:47 v #10757 > > 00:08:47 v #10758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10759 > > type trace_state = 00:08:47 v #10760 > > { 00:08:47 v #10761 > > count : mut i64 00:08:47 v #10762 > > trace_file : mut (string -> ()) 00:08:47 v #10763 > > enabled : mut bool 00:08:47 v #10764 > > acc : mut string 00:08:47 v #10765 > > level : mut trace_level 00:08:47 v #10766 > > repl_start : optionm'.option' i64 00:08:47 v #10767 > > } 00:08:47 v #10768 > > 00:08:47 v #10769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10770 > > │ ### new_trace_state 00:08:47 v #10771 > > 00:08:47 v #10772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10773 > > let new_trace_state trace_level' = 00:08:47 v #10774 > > inl { repl_start trace_level } = read_state () 00:08:47 v #10775 > > { 00:08:47 v #10776 > > count = mut 1i64 00:08:47 v #10777 > > trace_file = mut ignore 00:08:47 v #10778 > > enabled = mut true 00:08:47 v #10779 > > acc = mut "" 00:08:47 v #10780 > > level = trace_level |> optionm'.default_value trace_level' |> mut 00:08:47 v #10781 > > repl_start = repl_start |> optionm'.box 00:08:47 v #10782 > > } : trace_state 00:08:47 v #10783 > > 00:08:47 v #10784 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10785 > > │ ### init_trace_state 00:08:47 v #10786 > > 00:08:47 v #10787 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10788 > > inl init_trace_state trace_level : () = 00:08:47 v #10789 > > inl trace_level = trace_level |> optionm'.default_value Verbose 00:08:47 v #10790 > > backend_switch { 00:08:47 v #10791 > > Fsharp = fun () => 00:08:47 v #10792 > > backend_switch { 00:08:47 v #10793 > > Fsharp = fun () => 00:08:47 v #10794 > > global "module TraceState = let mutable trace_state = None" 00:08:47 v #10795 > > } 00:08:47 v #10796 > > fun () => 00:08:47 v #10797 > > if $'TraceState.trace_state.IsNone' then 00:08:47 v #10798 > > inl trace_state = new_trace_state trace_level |> 00:08:47 v #10799 > > optionm'.some' 00:08:47 v #10800 > > $'TraceState.trace_state <- !trace_state ' : () 00:08:47 v #10801 > > |> exec_unit 00:08:47 v #10802 > > Python = fun () => 00:08:47 v #10803 > > global "class TraceState: trace_state = None" 00:08:47 v #10804 > > $'if TraceState.trace_state is None: TraceState.trace_state = 00:08:47 v #10805 > > !new_trace_state(!trace_level)' : () 00:08:47 v #10806 > > } 00:08:47 v #10807 > > 00:08:47 v #10808 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:47 v #10809 > > │ ### get_trace_state_or_init 00:08:47 v #10810 > > 00:08:47 v #10811 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:47 v #10812 > > inl get_trace_state_or_init trace_level : trace_state = 00:08:47 v #10813 > > init_trace_state trace_level 00:08:47 v #10814 > > backend_switch { 00:08:47 v #10815 > > Fsharp = fun () => 00:08:47 v #10816 > > $'TraceState.trace_state.Value' : trace_state 00:08:47 v #10817 > > Python = fun () => 00:08:47 v #10818 > > $'TraceState.trace_state' : trace_state 00:08:47 v #10819 > > } 00:08:48 v #10820 > > 00:08:48 v #10821 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:48 v #10822 > > │ ### test_trace_level 00:08:48 v #10823 > > 00:08:48 v #10824 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:48 v #10825 > > let test_trace_level level : bool = 00:08:48 v #10826 > > inl state = get_trace_state_or_init None 00:08:48 v #10827 > > inl level' = *state.level 00:08:48 v #10828 > > if *state.enabled |> not 00:08:48 v #10829 > > then false 00:08:48 v #10830 > > else 00:08:48 v #10831 > > inl level : i32 = real real_core.union_tag level 00:08:48 v #10832 > > inl level' : i32 = real real_core.union_tag level' 00:08:48 v #10833 > > level >= level' 00:08:48 v #10834 > > 00:08:48 v #10835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:48 v #10836 > > //// test 00:08:48 v #10837 > > ///! fsharp 00:08:48 v #10838 > > ///! cuda 00:08:48 v #10839 > > ///! rust 00:08:48 v #10840 > > ///! typescript 00:08:48 v #10841 > > ///! python 00:08:48 v #10842 > > 00:08:48 v #10843 > > test_trace_level Critical |> _assert_eq true 00:08:48 v #10844 > > test_trace_level Verbose |> _assert_eq true 00:08:48 v #10845 > > 00:08:48 v #10846 > > inl level = get_trace_state_or_init None .level 00:08:48 v #10847 > > level <- Debug 00:08:48 v #10848 > > test_trace_level Verbose |> _assert_eq false 00:08:48 v #10849 > > level <- Verbose 00:08:48 v #10850 > > test_trace_level Verbose |> _assert_eq true 00:08:58 v #10851 > > 00:08:58 v #10852 > > ── [ 10.48s - return value ] ─────────────────────────────────────────────────── 00:08:58 v #10853 > > │ 00:08:58 v #10854 > > │ .py output (Cuda): 00:08:58 v #10855 > > │ __assert_eq / actual: True / expected: True 00:08:58 v #10856 > > │ __assert_eq / actual: True / expected: True 00:08:58 v #10857 > > │ __assert_eq / actual: False / expected: False 00:08:58 v #10858 > > │ __assert_eq / actual: True / expected: True 00:08:58 v #10859 > > │ 00:08:58 v #10860 > > │ 00:08:58 v #10861 > > │ .rs output: 00:08:58 v #10862 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10863 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10864 > > │ __assert_eq / actual: false / expected: false 00:08:58 v #10865 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10866 > > │ 00:08:58 v #10867 > > │ 00:08:58 v #10868 > > │ .ts output: 00:08:58 v #10869 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10870 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10871 > > │ __assert_eq / actual: false / expected: false 00:08:58 v #10872 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10873 > > │ 00:08:58 v #10874 > > │ 00:08:58 v #10875 > > │ .py output: 00:08:58 v #10876 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10877 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10878 > > │ __assert_eq / actual: false / expected: false 00:08:58 v #10879 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10880 > > │ 00:08:58 v #10881 > > │ 00:08:58 v #10882 > > │ 00:08:58 v #10883 > > 00:08:58 v #10884 > > ── [ 10.49s - stdout ] ───────────────────────────────────────────────────────── 00:08:58 v #10885 > > │ .fsx output: 00:08:58 v #10886 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10887 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10888 > > │ __assert_eq / actual: false / expected: false 00:08:58 v #10889 > > │ __assert_eq / actual: true / expected: true 00:08:58 v #10890 > > │ 00:08:58 v #10891 > > 00:08:58 v #10892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:58 v #10893 > > │ ### trace_raw 00:08:58 v #10894 > > 00:08:58 v #10895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:58 v #10896 > > inl trace_raw level fn = 00:08:58 v #10897 > > fun () => 00:08:58 v #10898 > > if level |> test_trace_level then 00:08:58 v #10899 > > inl text = fn () 00:08:58 v #10900 > > join 00:08:58 v #10901 > > inl ({ count acc } & trace_state) = get_trace_state_or_init None 00:08:58 v #10902 > > fun () => 00:08:58 v #10903 > > count <- *count + 1 00:08:58 v #10904 > > |> exec_unit 00:08:58 v #10905 > > open rust 00:08:58 v #10906 > > open rust.rust_operators 00:08:58 v #10907 > > run_target_args (fun () => text, console.write_line) function 00:08:58 v #10908 > > | Rust (Contract) => fun text, _ => 00:08:58 v #10909 > > inl new_acc = 00:08:58 v #10910 > > if *acc = "" 00:08:58 v #10911 > > then text 00:08:58 v #10912 > > elif text = "" 00:08:58 v #10913 > > then *acc 00:08:58 v #10914 > > else *acc +. "\n" +. text 00:08:58 v #10915 > > 00:08:58 v #10916 > > inl chunks = 00:08:58 v #10917 > > new_acc 00:08:58 v #10918 > > |> sm'.as_str 00:08:58 v #10919 > > |> sm'.chars 00:08:58 v #10920 > > |> rust.from_mut 00:08:58 v #10921 > > |> iter_collect 00:08:58 v #10922 > > |> am'.vec_chunks 15000 00:08:58 v #10923 > > |> am'.vec_map sm'.from_iter 00:08:58 v #10924 > > 00:08:58 v #10925 > > inl chunks_len = chunks |> am'.vec_len |> i32 00:08:58 v #10926 > > 00:08:58 v #10927 > > if text <>. "" && chunks_len <= 1 00:08:58 v #10928 > > then acc <- new_acc 00:08:58 v #10929 > > else 00:08:58 v #10930 > > acc <- "" 00:08:58 v #10931 > > chunks 00:08:58 v #10932 > > |> am'.vec_for_each''' near.log 00:08:58 v #10933 > > | Rust _ => fun text, _ => 00:08:58 v #10934 > > !\\(text, $'\@"println\!(""{}"", $0)"') 00:08:58 v #10935 > > | _ => fun text, write_line => 00:08:58 v #10936 > > text |> write_line 00:08:58 v #10937 > > text |> *trace_state.trace_file 00:08:58 v #10938 > > |> exec_unit 00:08:58 v #10939 > > 00:08:58 v #10940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:08:58 v #10941 > > │ ### trace 00:08:58 v #10942 > > 00:08:58 v #10943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:58 v #10944 > > inl trace (level : trace_level) (text_fn : () -> string) (locals : () -> _) = 00:08:58 v #10945 > > fun () => 00:08:58 v #10946 > > inl trace_state = get_trace_state_or_init None 00:08:58 v #10947 > > inl time = 00:08:58 v #10948 > > join 00:08:58 v #10949 > > run_target fun target => 00:08:58 v #10950 > > match target with 00:08:58 v #10951 > > | Rust (Contract) => fun () => 00:08:58 v #10952 > > open rust.rust_operators 00:08:58 v #10953 > > open rust 00:08:58 v #10954 > > inl timestamp = near.block_timestamp () 00:08:58 v #10955 > > inl timestamp = 00:08:58 v #10956 > > match trace_state.repl_start |> optionm'.unbox with 00:08:58 v #10957 > > | Some repl_start => timestamp - u64 repl_start 00:08:58 v #10958 > > | None => timestamp 00:08:58 v #10959 > > inl timestamp_s = timestamp / 1_000_000_000 00:08:58 v #10960 > > inl s = timestamp_s % 60 00:08:58 v #10961 > > inl m = (timestamp_s / 60) % 60 00:08:58 v #10962 > > inl h = (timestamp_s / 3600) % 24 00:08:58 v #10963 > > inl str : sm'.std_string = 00:08:58 v #10964 > > !\\((h, m, s), 00:08:58 v #10965 > > $'$"format\!(\\\"{{:02}}:{{:02}}:{{:02}}\\\", $0, $1, $2)"') 00:08:58 v #10966 > > str |> sm'.from_std_string 00:08:58 v #10967 > > | _ => fun () => 00:08:58 v #10968 > > match trace_state.repl_start |> optionm'.unbox with 00:08:58 v #10969 > > | Some repl_start => 00:08:58 v #10970 > > inl t = 00:08:58 v #10971 > > date_time.now () 00:08:58 v #10972 > > |> date_time.ticks 00:08:58 v #10973 > > |> fun (date_time.timestamp x) => x |> convert 00:08:58 v #10974 > > |> flip (-) repl_start 00:08:58 v #10975 > > |> date_time.time_span 00:08:58 v #10976 > > date_time.date_time_milliseconds 00:08:58 v #10977 > > 1i32 1i32 1i32 00:08:58 v #10978 > > (t |> date_time.hours) 00:08:58 v #10979 > > (t |> date_time.minutes) 00:08:58 v #10980 > > (t |> date_time.seconds) 00:08:58 v #10981 > > (t |> date_time.milliseconds) 00:08:58 v #10982 > > | None => date_time.now () 00:08:58 v #10983 > > |> date_time.format ( 00:08:58 v #10984 > > backend_switch { 00:08:58 v #10985 > > Fsharp = fun () => 00:08:58 v #10986 > > match target with 00:08:58 v #10987 > > | Rust _ => join "hh:mm:ss" 00:08:58 v #10988 > > | _ => join "HH:mm:ss" 00:08:58 v #10989 > > Python = fun () => "%H:%M:%S" 00:08:58 v #10990 > > } 00:08:58 v #10991 > > ) 00:08:58 v #10992 > > inl level_str = 00:08:58 v #10993 > > join 00:08:58 v #10994 > > inl level_str = 00:08:58 v #10995 > > level 00:08:58 v #10996 > > |> reflection.union_to_string 00:08:58 v #10997 > > |> sm'.to_lower 00:08:58 v #10998 > > |> sm'.index 0i32 00:08:58 v #10999 > > |> sm'.format 00:08:58 v #11000 > > run_target function 00:08:58 v #11001 > > | Rust _ => fun () => 00:08:58 v #11002 > > open rust 00:08:58 v #11003 > > open rust.rust_operators 00:08:58 v #11004 > > inl color : rust.ref sm'.str = 00:08:58 v #11005 > > match level with 00:08:58 v #11006 > > | Verbose => 00:08:58 v #11007 > > !\($'"inline_colorization::color_bright_black"') 00:08:58 v #11008 > > | Debug => 00:08:58 v #11009 > > !\($'"inline_colorization::color_bright_blue"') 00:08:58 v #11010 > > | Info => 00:08:58 v #11011 > > !\($'"inline_colorization::color_bright_green"') 00:08:58 v #11012 > > | Warning => !\($'"inline_colorization::color_yellow"') 00:08:58 v #11013 > > | Critical => 00:08:58 v #11014 > > !\($'"inline_colorization::color_bright_red"') 00:08:58 v #11015 > > inl level_str = level_str |> sm'.as_str 00:08:58 v #11016 > > inl color_reset : rust.ref sm'.str = 00:08:58 v #11017 > > !\($'"inline_colorization::color_reset"') 00:08:58 v #11018 > > !\\((color, level_str, color_reset), 00:08:58 v #11019 > > $'$"format\!(\\\"{{}}{{}}{{}}\\\", $0, $1, $2)"') 00:08:58 v #11020 > > |> sm'.from_std_string 00:08:58 v #11021 > > | _ => fun () => 00:08:58 v #11022 > > inl color = 00:08:58 v #11023 > > match level with 00:08:58 v #11024 > > | Verbose => $'"\\u001b[[90m"' 00:08:58 v #11025 > > | Debug => $'"\\u001b[[94m"' 00:08:58 v #11026 > > | Info => $'"\\u001b[[92m"' 00:08:58 v #11027 > > | Warning => $'"\\u001b[[93m"' 00:08:58 v #11028 > > | Critical => $'"\\u001b[[91m"' 00:08:58 v #11029 > > inl color_reset = join $'"\\u001b[[0m"' 00:08:58 v #11030 > > color +. level_str +. color_reset 00:08:58 v #11031 > > inl text = text_fn () 00:08:58 v #11032 > > if text = "" 00:08:58 v #11033 > > then "" 00:08:58 v #11034 > > else 00:08:58 v #11035 > > inl locals = locals () 00:08:58 v #11036 > > join 00:08:58 v #11037 > > inl locals = locals |> sm'.format 00:08:58 v #11038 > > inl count = *trace_state.count 00:08:58 v #11039 > > backend_switch { 00:08:58 v #11040 > > Fsharp = fun () => $'$"{!time} {!level_str} #{!count} 00:08:58 v #11041 > > %s{!text} / {!locals}"' : string 00:08:58 v #11042 > > Python = fun () => $'f"{!time} {!level_str} #{!count} 00:08:58 v #11043 > > {!text} / {!locals}"' : string 00:08:58 v #11044 > > } 00:08:58 v #11045 > > |> fun x => 00:08:58 v #11046 > > join 00:08:58 v #11047 > > x 00:08:58 v #11048 > > |> sm'.trim_start [[]] 00:08:58 v #11049 > > |> sm'.trim_end [[ ' '; '/' ]] 00:08:58 v #11050 > > |> trace_raw level 00:08:59 v #11051 > > 00:08:59 v #11052 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:08:59 v #11053 > > //// test 00:08:59 v #11054 > > ///! fsharp 00:08:59 v #11055 > > ///! cuda 00:08:59 v #11056 > > ///! rust 00:08:59 v #11057 > > ///! typescript 00:08:59 v #11058 > > ///! python 00:08:59 v #11059 > > 00:08:59 v #11060 > > trace Debug (fun () => "test1") id 00:08:59 v #11061 > > trace Debug (fun () => "test2") id 00:08:59 v #11062 > > get_trace_state_or_init None .count 00:08:59 v #11063 > > |> fun x => *x 00:08:59 v #11064 > > |> _assert_eq 3 00:09:09 v #11065 > > 00:09:09 v #11066 > > ── [ 10.17s - return value ] ─────────────────────────────────────────────────── 00:09:09 v #11067 > > │ 00:09:09 v #11068 > > │ .py output (Cuda): 00:09:09 v #11069 > > │ 00:00:00 d #1 test1 00:09:09 v #11070 > > │ 00:00:00 d #2 test2 00:09:09 v #11071 > > │ __assert_eq / actual: 3 / expected: 3 00:09:09 v #11072 > > │ 00:09:09 v #11073 > > │ 00:09:09 v #11074 > > │ .rs output: 00:09:09 v #11075 > > │ 00:00:00 d #1 test1 00:09:09 v #11076 > > │ 00:00:00 d #2 test2 00:09:09 v #11077 > > │ __assert_eq / actual: 3 / expected: 3 00:09:09 v #11078 > > │ 00:09:09 v #11079 > > │ 00:09:09 v #11080 > > │ .ts output: 00:09:09 v #11081 > > │ 00:00:00 d #1 test1 00:09:09 v #11082 > > │ 00:00:00 d #2 test2 00:09:09 v #11083 > > │ __assert_eq / actual: 3 / expected: 3 00:09:09 v #11084 > > │ 00:09:09 v #11085 > > │ 00:09:09 v #11086 > > │ .py output: 00:09:09 v #11087 > > │ 00:00:00 d #1 test1 00:09:09 v #11088 > > │ 00:00:00 d #2 test2 00:09:09 v #11089 > > │ __assert_eq / actual: 3 / expected: 3 00:09:09 v #11090 > > │ 00:09:09 v #11091 > > │ 00:09:09 v #11092 > > │ 00:09:09 v #11093 > > 00:09:09 v #11094 > > ── [ 10.17s - stdout ] ───────────────────────────────────────────────────────── 00:09:09 v #11095 > > │ .fsx output: 00:09:09 v #11096 > > │ 00:00:00 d #1 test1 00:09:09 v #11097 > > │ 00:00:00 d #2 test2 00:09:09 v #11098 > > │ __assert_eq / actual: 3L / expected: 3L 00:09:09 v #11099 > > │ 00:09:09 v #11100 > > 00:09:09 v #11101 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:09 v #11102 > > │ ## main 00:09:09 v #11103 > > 00:09:09 v #11104 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:09 v #11105 > > inl main () = 00:09:09 v #11106 > > init_trace_state None 00:09:09 v #11107 > > inl trace level text_fn (locals : () -> string) = trace level text_fn locals 00:09:09 v #11108 > > $'let trace x = !trace x' : () 00:09:09 v #11109 > 00:00:27 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17044 } 00:09:09 v #11110 > 00:00:27 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:10 v #11111 > 00:00:28 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.ipynb to html 00:09:10 v #11112 > 00:00:28 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:09:10 v #11113 > 00:00:28 v #7 ! validate(nb) 00:09:10 v #11114 > 00:00:28 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:09:10 v #11115 > 00:00:28 v #9 ! return _pygments_highlight( 00:09:11 v #11116 > 00:00:28 v #10 ! [NbConvertApp] Writing 324996 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html 00:09:11 v #11117 > 00:00:28 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 894 } 00:09:11 v #11118 > 00:00:28 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 894 } 00:09:11 v #11119 > 00:00:28 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/trace.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:11 v #11120 > 00:00:29 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:09:11 v #11121 > 00:00:29 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:09:11 v #11122 > 00:00:29 d #16 spiral.run / dib / { exit_code = 0; result_length = 17997 } 00:09:11 d #11123 runtime.execute_with_options_async / { exit_code = 0; output_length = 21485 } 00:09:11 d #13 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path trace.dib --retries 3 00:09:11 d #11124 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path am'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:09:11 v #11125 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "am'.dib", "--retries", "3"])) } 00:09:11 v #11126 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:09:12 v #11127 > > 00:09:12 v #11128 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:12 v #11129 > > │ # am' 00:09:15 v #11130 > > 00:09:15 v #11131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:15 v #11132 > > //// test 00:09:15 v #11133 > > 00:09:15 v #11134 > > open testing 00:09:16 v #11135 > > 00:09:16 v #11136 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11137 > > open rust 00:09:16 v #11138 > > open rust_operators 00:09:16 v #11139 > > 00:09:16 v #11140 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11141 > > │ ## am' 00:09:16 v #11142 > > 00:09:16 v #11143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11144 > > │ ### length 00:09:16 v #11145 > > 00:09:16 v #11146 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11147 > > inl length forall dim {int} el. (a : a dim el) : dim = 00:09:16 v #11148 > > a |> length 00:09:16 v #11149 > > 00:09:16 v #11150 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11151 > > │ ### index 00:09:16 v #11152 > > 00:09:16 v #11153 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11154 > > inl index forall dim {int} el. (i : dim) (a : a dim el) : el = 00:09:16 v #11155 > > backend_switch { 00:09:16 v #11156 > > Fsharp = fun () => index a i 00:09:16 v #11157 > > Python = fun () => $'!a[[!i]]' : el 00:09:16 v #11158 > > } 00:09:16 v #11159 > > 00:09:16 v #11160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11161 > > │ ### index_base 00:09:16 v #11162 > > 00:09:16 v #11163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11164 > > inl index_base forall el. (i : int) (ar : array_base el) : el = 00:09:16 v #11165 > > ar |> a |> index i 00:09:16 v #11166 > > 00:09:16 v #11167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11168 > > │ ### base 00:09:16 v #11169 > > 00:09:16 v #11170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11171 > > inl base forall dim {int} el. ((a a) : a dim el) : array_base el = 00:09:16 v #11172 > > a 00:09:16 v #11173 > > 00:09:16 v #11174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:16 v #11175 > > │ ### base' 00:09:16 v #11176 > > 00:09:16 v #11177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:16 v #11178 > > inl base' forall el. ((a a) : a int el) : array_base el = 00:09:16 v #11179 > > a 00:09:17 v #11180 > > 00:09:17 v #11181 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:17 v #11182 > > │ ### generic_equable 00:09:17 v #11183 > > 00:09:17 v #11184 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:17 v #11185 > > inl generic_equable x1 x2 = 00:09:17 v #11186 > > if length x1 <>.. length x2 00:09:17 v #11187 > > then false 00:09:17 v #11188 > > else 00:09:17 v #11189 > > let rec loop i = 00:09:17 v #11190 > > if i < length x1 00:09:17 v #11191 > > then index i x1 = index i x2 && loop (i + 1) 00:09:17 v #11192 > > else true 00:09:17 v #11193 > > loop 0 00:09:17 v #11194 > > 00:09:17 v #11195 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:17 v #11196 > > │ ### equable 00:09:17 v #11197 > > 00:09:17 v #11198 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:17 v #11199 > > instance equable a dim {number; int} t = generic_equable 00:09:17 v #11200 > > 00:09:17 v #11201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:17 v #11202 > > │ ### append 00:09:17 v #11203 > > 00:09:17 v #11204 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:17 v #11205 > > instance append a dim {int; number} t = am.append 00:09:17 v #11206 > > 00:09:17 v #11207 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:17 v #11208 > > //// test 00:09:17 v #11209 > > ///! fsharp 00:09:17 v #11210 > > ///! cuda 00:09:17 v #11211 > > ///! rust 00:09:17 v #11212 > > ///! typescript 00:09:17 v #11213 > > ///! python 00:09:17 v #11214 > > 00:09:17 v #11215 > > a' ;[[ -1i64; 0 ]] ++ a' ;[[ 1; 2 ]] 00:09:17 v #11216 > > |> _assert_eq (a' ;[[ -1; 0; 1; 2 ]]) 00:09:28 v #11217 > > 00:09:28 v #11218 > > ── [ 11.01s - return value ] ─────────────────────────────────────────────────── 00:09:28 v #11219 > > │ .py output (Cuda): 00:09:28 v #11220 > > │ __assert_eq / actual: [-1 0 1 2] / expected: [-1 0 1 2] 00:09:28 v #11221 > > │ 00:09:28 v #11222 > > │ .rs output: 00:09:28 v #11223 > > │ __assert_eq / actual: Array(MutCell([-1, 0, 1, 2])) 00:09:28 v #11224 > > expected: Array(MutCell([-1, 0, 1, 2])) 00:09:28 v #11225 > > │ 00:09:28 v #11226 > > │ .ts output: 00:09:28 v #11227 > > │ __assert_eq / actual: -1,0,1,2 / expected: -1,0,1,2 00:09:28 v #11228 > > │ 00:09:28 v #11229 > > │ .py output: 00:09:28 v #11230 > > │ __assert_eq / actual: [-1, 0, 1, 2] / expected: array('q', 00:09:28 v #11231 > > [-1, 0, 1, 2]) 00:09:28 v #11232 > > │ 00:09:28 v #11233 > > │ 00:09:28 v #11234 > > 00:09:28 v #11235 > > ── [ 11.02s - stdout ] ───────────────────────────────────────────────────────── 00:09:28 v #11236 > > │ .fsx output: 00:09:28 v #11237 > > │ __assert_eq / actual: [|-1L; 0L; 1L; 2L|] / expected: [|-1L; 00:09:28 v #11238 > > 0L; 1L; 2L|] 00:09:28 v #11239 > > │ 00:09:28 v #11240 > > 00:09:28 v #11241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:28 v #11242 > > │ ### map_base 00:09:28 v #11243 > > 00:09:28 v #11244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:28 v #11245 > > inl map_base forall t u. (fn : t -> u) (x : array_base t) : array_base u = 00:09:28 v #11246 > > a x 00:09:28 v #11247 > > |> am.map fn 00:09:28 v #11248 > > |> fun (a x : _ int _) => x 00:09:28 v #11249 > > 00:09:28 v #11250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:28 v #11251 > > │ ### collect 00:09:28 v #11252 > > 00:09:28 v #11253 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:28 v #11254 > > inl collect forall t r. (fn : t -> a int r) (items : a int t) : a int r = 00:09:28 v #11255 > > items 00:09:28 v #11256 > > |> am.map fn 00:09:28 v #11257 > > |> am.fold (++) (a ;[[]]) 00:09:28 v #11258 > > 00:09:28 v #11259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:28 v #11260 > > │ ### init 00:09:28 v #11261 > > 00:09:28 v #11262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:28 v #11263 > > inl init n : array_base _ = 00:09:28 v #11264 > > am.init n id 00:09:28 v #11265 > > |> fun (a x : _ int _) => x 00:09:29 v #11266 > > 00:09:29 v #11267 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:29 v #11268 > > │ ### choose 00:09:29 v #11269 > > 00:09:29 v #11270 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:29 v #11271 > > inl choose f l = 00:09:29 v #11272 > > (l, [[]]) 00:09:29 v #11273 > > ||> am.foldBack fun x acc => 00:09:29 v #11274 > > match f x with 00:09:29 v #11275 > > | Some y => y :: acc 00:09:29 v #11276 > > | None => acc 00:09:29 v #11277 > > |> listm.toArray 00:09:29 v #11278 > > 00:09:29 v #11279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:29 v #11280 > > //// test 00:09:29 v #11281 > > ///! fsharp 00:09:29 v #11282 > > ///! cuda 00:09:29 v #11283 > > ////! rust // v0.get_mut()[[v2.get().clone() as usize]] = match 00:09:29 v #11284 > > v1.get().clone().as_ref() { ^ expected `i32`, found `usize` 00:09:29 v #11285 > > ///! typescript 00:09:29 v #11286 > > ///! python 00:09:29 v #11287 > > 00:09:29 v #11288 > > 10 00:09:29 v #11289 > > |> init 00:09:29 v #11290 > > |> fun x => a x : _ int _ 00:09:29 v #11291 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:09:29 v #11292 > > |> _assert_eq (a' ;[[ 0; 2; 4; 6; 8 ]]) 00:09:36 v #11293 > > 00:09:36 v #11294 > > ── [ 7.08s - return value ] ──────────────────────────────────────────────────── 00:09:36 v #11295 > > │ .py output (Cuda): 00:09:36 v #11296 > > │ __assert_eq / actual: [0 2 4 6 8] / expected: [0 2 4 6 8] 00:09:36 v #11297 > > │ 00:09:36 v #11298 > > │ .ts output: 00:09:36 v #11299 > > │ __assert_eq / actual: 0,2,4,6,8 / expected: 0,2,4,6,8 00:09:36 v #11300 > > │ 00:09:36 v #11301 > > │ .py output: 00:09:36 v #11302 > > │ __assert_eq / actual: [0, 2, 4, 6, 8] / expected: array('l', 00:09:36 v #11303 > > [0, 2, 4, 6, 8]) 00:09:36 v #11304 > > │ 00:09:36 v #11305 > > │ 00:09:36 v #11306 > > 00:09:36 v #11307 > > ── [ 7.08s - stdout ] ────────────────────────────────────────────────────────── 00:09:36 v #11308 > > │ .fsx output: 00:09:36 v #11309 > > │ __assert_eq / actual: [|0; 2; 4; 6; 8|] / expected: [|0; 2; 00:09:36 v #11310 > > 4; 6; 8|] 00:09:36 v #11311 > > │ 00:09:36 v #11312 > > 00:09:36 v #11313 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:36 v #11314 > > │ ### sum 00:09:36 v #11315 > > 00:09:36 v #11316 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:36 v #11317 > > inl sum a = 00:09:36 v #11318 > > a |> am.fold (+) 0 00:09:36 v #11319 > > 00:09:36 v #11320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:36 v #11321 > > //// test 00:09:36 v #11322 > > ///! fsharp 00:09:36 v #11323 > > ///! cuda 00:09:36 v #11324 > > ///! rust 00:09:36 v #11325 > > ///! typescript 00:09:36 v #11326 > > ///! python 00:09:36 v #11327 > > 00:09:36 v #11328 > > 10 00:09:36 v #11329 > > |> init 00:09:36 v #11330 > > |> fun x => a x : _ int _ 00:09:36 v #11331 > > |> sum 00:09:36 v #11332 > > |> _assert_eq 45 00:09:45 v #11333 > > 00:09:45 v #11334 > > ── [ 8.91s - return value ] ──────────────────────────────────────────────────── 00:09:45 v #11335 > > │ .py output (Cuda): 00:09:45 v #11336 > > │ __assert_eq / actual: 45 / expected: 45 00:09:45 v #11337 > > │ 00:09:45 v #11338 > > │ .rs output: 00:09:45 v #11339 > > │ __assert_eq / actual: 45 / expected: 45 00:09:45 v #11340 > > │ 00:09:45 v #11341 > > │ .ts output: 00:09:45 v #11342 > > │ __assert_eq / actual: 45 / expected: 45 00:09:45 v #11343 > > │ 00:09:45 v #11344 > > │ .py output: 00:09:45 v #11345 > > │ __assert_eq / actual: 45 / expected: 45 00:09:45 v #11346 > > │ 00:09:45 v #11347 > > │ 00:09:45 v #11348 > > 00:09:45 v #11349 > > ── [ 8.91s - stdout ] ────────────────────────────────────────────────────────── 00:09:45 v #11350 > > │ .fsx output: 00:09:45 v #11351 > > │ __assert_eq / actual: 45 / expected: 45 00:09:45 v #11352 > > │ 00:09:45 v #11353 > > 00:09:45 v #11354 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:45 v #11355 > > │ ### init_series 00:09:45 v #11356 > > 00:09:45 v #11357 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:45 v #11358 > > inl init_series start end inc : array_base _ = 00:09:45 v #11359 > > inl total = conv ((end - start) / inc) + 1 00:09:45 v #11360 > > am.init total (conv >> (*) inc >> (+) start) 00:09:45 v #11361 > > |> fun (a x : _ int _) => x 00:09:45 v #11362 > > 00:09:45 v #11363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:45 v #11364 > > //// test 00:09:45 v #11365 > > ///! fsharp 00:09:45 v #11366 > > ///! cuda 00:09:45 v #11367 > > ///! rust 00:09:45 v #11368 > > ///! typescript 00:09:45 v #11369 > > ///! python 00:09:45 v #11370 > > 00:09:45 v #11371 > > init_series 0i32 6 2 00:09:45 v #11372 > > |> a 00:09:45 v #11373 > > |> fun x => x : _ int _ 00:09:45 v #11374 > > |> _assert_eq (a ;[[ 0i32; 2; 4; 6 ]]) 00:09:53 v #11375 > > 00:09:53 v #11376 > > ── [ 8.45s - return value ] ──────────────────────────────────────────────────── 00:09:53 v #11377 > > │ .py output (Cuda): 00:09:53 v #11378 > > │ __assert_eq / actual: [0 2 4 6] / expected: [0 2 4 6] 00:09:53 v #11379 > > │ 00:09:53 v #11380 > > │ .rs output: 00:09:53 v #11381 > > │ __assert_eq / actual: Array(MutCell([0, 2, 4, 6])) 00:09:53 v #11382 > > expected: Array(MutCell([0, 2, 4, 6])) 00:09:53 v #11383 > > │ 00:09:53 v #11384 > > │ .ts output: 00:09:53 v #11385 > > │ __assert_eq / actual: 0,2,4,6 / expected: 0,2,4,6 00:09:53 v #11386 > > │ 00:09:53 v #11387 > > │ .py output: 00:09:53 v #11388 > > │ __assert_eq / actual: [0, 2, 4, 6] / expected: array('l', [0, 00:09:53 v #11389 > > 2, 4, 6]) 00:09:53 v #11390 > > │ 00:09:53 v #11391 > > │ 00:09:53 v #11392 > > 00:09:53 v #11393 > > ── [ 8.45s - stdout ] ────────────────────────────────────────────────────────── 00:09:53 v #11394 > > │ .fsx output: 00:09:53 v #11395 > > │ __assert_eq / actual: [|0; 2; 4; 6|] / expected: [|0; 2; 4; 00:09:53 v #11396 > > 6|] 00:09:53 v #11397 > > │ 00:09:53 v #11398 > > 00:09:53 v #11399 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:53 v #11400 > > │ ### head 00:09:53 v #11401 > > 00:09:53 v #11402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:53 v #11403 > > inl head (ar : a _ _) = 00:09:53 v #11404 > > if var_is ar || length ar > 0 00:09:53 v #11405 > > then ar |> index 0 00:09:53 v #11406 > > else error_type "The length of the array should be greater than 0." 00:09:53 v #11407 > > 00:09:53 v #11408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:09:53 v #11409 > > │ ### last 00:09:53 v #11410 > > 00:09:53 v #11411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:53 v #11412 > > inl last (ar : a _ _) = 00:09:53 v #11413 > > inl len = length ar 00:09:53 v #11414 > > if var_is ar || len > 0 00:09:53 v #11415 > > then ar |> index (len - 1) 00:09:53 v #11416 > > else error_type "The length of the array should be greater than 0." 00:09:54 v #11417 > > 00:09:54 v #11418 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:09:54 v #11419 > > //// test 00:09:54 v #11420 > > ///! fsharp 00:09:54 v #11421 > > ///! cuda 00:09:54 v #11422 > > ///! rust 00:09:54 v #11423 > > ///! typescript 00:09:54 v #11424 > > ///! python 00:09:54 v #11425 > > 00:09:54 v #11426 > > 10 00:09:54 v #11427 > > |> init 00:09:54 v #11428 > > |> fun x => a x : _ int _ 00:09:54 v #11429 > > |> last 00:09:54 v #11430 > > |> _assert_eq 9 00:10:02 v #11431 > > 00:10:02 v #11432 > > ── [ 8.21s - return value ] ──────────────────────────────────────────────────── 00:10:02 v #11433 > > │ .py output (Cuda): 00:10:02 v #11434 > > │ __assert_eq / actual: 9 / expected: 9 00:10:02 v #11435 > > │ 00:10:02 v #11436 > > │ .rs output: 00:10:02 v #11437 > > │ __assert_eq / actual: 9 / expected: 9 00:10:02 v #11438 > > │ 00:10:02 v #11439 > > │ .ts output: 00:10:02 v #11440 > > │ __assert_eq / actual: 9 / expected: 9 00:10:02 v #11441 > > │ 00:10:02 v #11442 > > │ .py output: 00:10:02 v #11443 > > │ __assert_eq / actual: 9 / expected: 9 00:10:02 v #11444 > > │ 00:10:02 v #11445 > > │ 00:10:02 v #11446 > > 00:10:02 v #11447 > > ── [ 8.21s - stdout ] ────────────────────────────────────────────────────────── 00:10:02 v #11448 > > │ .fsx output: 00:10:02 v #11449 > > │ __assert_eq / actual: 9 / expected: 9 00:10:02 v #11450 > > │ 00:10:02 v #11451 > > 00:10:02 v #11452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:02 v #11453 > > │ ### try_pick 00:10:02 v #11454 > > 00:10:02 v #11455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:02 v #11456 > > inl try_pick forall t u. (fn : t -> option u) (array : a _ t) : option u = 00:10:02 v #11457 > > (array, None) 00:10:02 v #11458 > > ||> am.foldBack fun x acc => 00:10:02 v #11459 > > match acc with 00:10:02 v #11460 > > | Some _ => acc 00:10:02 v #11461 > > | None => x |> fn 00:10:02 v #11462 > > 00:10:02 v #11463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:02 v #11464 > > //// test 00:10:02 v #11465 > > ///! fsharp 00:10:02 v #11466 > > ///! cuda 00:10:02 v #11467 > > ////! rust // match &v23 { Spiral_builder::US0::US0_0(x) => x.clone(), _ => 00:10:02 v #11468 > > unreachable!(), } == 5_i32 00:10:02 v #11469 > > ///! typescript 00:10:02 v #11470 > > ///! python 00:10:02 v #11471 > > 00:10:02 v #11472 > > 10 00:10:02 v #11473 > > |> init 00:10:02 v #11474 > > |> fun x => a x : _ int _ 00:10:02 v #11475 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:10:02 v #11476 > > |> _assert_eq (Some 5i32) 00:10:08 v #11477 > > 00:10:08 v #11478 > > ── [ 6.30s - return value ] ──────────────────────────────────────────────────── 00:10:08 v #11479 > > │ .py output (Cuda): 00:10:08 v #11480 > > │ __assert_eq / actual: US0_0(v0=5) / expected: US0_0(v0=5) 00:10:08 v #11481 > > │ 00:10:08 v #11482 > > │ .ts output: 00:10:08 v #11483 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:10:08 v #11484 > > │ 00:10:08 v #11485 > > │ .py output: 00:10:08 v #11486 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:10:08 v #11487 > > │ 00:10:08 v #11488 > > │ 00:10:08 v #11489 > > 00:10:08 v #11490 > > ── [ 6.30s - stdout ] ────────────────────────────────────────────────────────── 00:10:08 v #11491 > > │ .fsx output: 00:10:08 v #11492 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:10:08 v #11493 > > │ 00:10:08 v #11494 > > 00:10:08 v #11495 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:08 v #11496 > > │ ### indexed 00:10:08 v #11497 > > 00:10:08 v #11498 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:08 v #11499 > > inl indexed forall t u {number}. (ar : array_base t) : array_base (u * t) = 00:10:08 v #11500 > > ((0, a ;[[]]), (a ar : _ int _)) 00:10:08 v #11501 > > ||> am.fold fun (i, acc) x => 00:10:08 v #11502 > > i + 1, acc ++ a ;[[i, x]] 00:10:08 v #11503 > > |> snd 00:10:08 v #11504 > > |> fun (a x : _ int _) => x 00:10:08 v #11505 > > 00:10:08 v #11506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:08 v #11507 > > //// test 00:10:08 v #11508 > > ///! fsharp 00:10:08 v #11509 > > ////! cuda // Only stack allocated primitive types (i8,i16,i32,i64 and 00:10:08 v #11510 > > u8,u16,u32,u64 and f32,f64 and bool) are allowed in CuPy arrays. 00:10:08 v #11511 > > ///! rust 00:10:08 v #11512 > > ///! typescript 00:10:08 v #11513 > > ///! python 00:10:08 v #11514 > > 00:10:08 v #11515 > > am.init 3i32 ((*) 2) 00:10:08 v #11516 > > |> fun (a x : _ int _) => x 00:10:08 v #11517 > > |> indexed 00:10:08 v #11518 > > |> _assert_eq' ;[[0i32, 0; 1, 2; 2, 4]] 00:10:16 v #11519 > > 00:10:16 v #11520 > > ── [ 7.61s - return value ] ──────────────────────────────────────────────────── 00:10:16 v #11521 > > │ .rs output: 00:10:16 v #11522 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 2), (2, 00:10:16 v #11523 > > 4)])) / expected: Array(MutCell([(0, 0), (1, 2), (2, 4)])) 00:10:16 v #11524 > > │ 00:10:16 v #11525 > > │ .ts output: 00:10:16 v #11526 > > │ __assert_eq' / actual: 0,0,1,2,2,4 / expected: 0,0,1,2,2,4 00:10:16 v #11527 > > │ 00:10:16 v #11528 > > │ .py output: 00:10:16 v #11529 > > │ __assert_eq' / actual: [(0, 0), (1, 2), (2, 4)] / expected: 00:10:16 v #11530 > > [(0, 0), (1, 2), (2, 4)] 00:10:16 v #11531 > > │ 00:10:16 v #11532 > > │ 00:10:16 v #11533 > > 00:10:16 v #11534 > > ── [ 7.61s - stdout ] ────────────────────────────────────────────────────────── 00:10:16 v #11535 > > │ .fsx output: 00:10:16 v #11536 > > │ __assert_eq' / actual: [|struct (0, 0); struct (1, 2); struct 00:10:16 v #11537 > > (2, 4)|] / expected: [|struct (0, 0); struct (1, 2); struct (2, 4)|] 00:10:16 v #11538 > > │ 00:10:16 v #11539 > > 00:10:16 v #11540 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:16 v #11541 > > │ ### slice 00:10:16 v #11542 > > 00:10:16 v #11543 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:16 v #11544 > > inl slice forall dim {int; number} el. from nearTo s : a dim el = 00:10:16 v #11545 > > am.slice { from nearTo } s 00:10:16 v #11546 > > 00:10:16 v #11547 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:16 v #11548 > > //// test 00:10:16 v #11549 > > ///! fsharp 00:10:16 v #11550 > > ///! cuda 00:10:16 v #11551 > > ///! rust 00:10:16 v #11552 > > ///! typescript 00:10:16 v #11553 > > ///! python 00:10:16 v #11554 > > 00:10:16 v #11555 > > inl x : _ i32 _ = a ;[[ 1i32; 2; 3 ]] 00:10:16 v #11556 > > x |> slice 0 0 |> _assert_eq (a ;[[]]) 00:10:16 v #11557 > > x |> slice 0 1 |> _assert_eq (a ;[[ 1 ]]) 00:10:16 v #11558 > > x |> slice 1 1 |> _assert_eq (a ;[[]]) 00:10:16 v #11559 > > x |> slice 1 2 |> _assert_eq (a ;[[ 2 ]]) 00:10:16 v #11560 > > x |> slice 2 2 |> _assert_eq (a ;[[]]) 00:10:16 v #11561 > > x |> slice 0 2 |> _assert_eq (a ;[[ 1; 2 ]]) 00:10:25 v #11562 > > 00:10:25 v #11563 > > ── [ 8.71s - return value ] ──────────────────────────────────────────────────── 00:10:25 v #11564 > > │ 00:10:25 v #11565 > > │ .py output (Cuda): 00:10:25 v #11566 > > │ __assert_eq / actual: [] / expected: [] 00:10:25 v #11567 > > │ __assert_eq / actual: [1] / expected: [1] 00:10:25 v #11568 > > │ __assert_eq / actual: [] / expected: [] 00:10:25 v #11569 > > │ __assert_eq / actual: [2] / expected: [2] 00:10:25 v #11570 > > │ __assert_eq / actual: [] / expected: [] 00:10:25 v #11571 > > │ __assert_eq / actual: [1 2] / expected: [1 2] 00:10:25 v #11572 > > │ 00:10:25 v #11573 > > │ 00:10:25 v #11574 > > │ .rs output: 00:10:25 v #11575 > > │ __assert_eq / actual: Array(MutCell([])) / expected: 00:10:25 v #11576 > > Array(MutCell([])) 00:10:25 v #11577 > > │ __assert_eq / actual: Array(MutCell([1])) / expected: 00:10:25 v #11578 > > Array(MutCell([1])) 00:10:25 v #11579 > > │ __assert_eq / actual: Array(MutCell([])) / expected: 00:10:25 v #11580 > > Array(MutCell([])) 00:10:25 v #11581 > > │ __assert_eq / actual: Array(MutCell([2])) / expected: 00:10:25 v #11582 > > Array(MutCell([2])) 00:10:25 v #11583 > > │ __assert_eq / actual: Array(MutCell([])) / expected: 00:10:25 v #11584 > > Array(MutCell([])) 00:10:25 v #11585 > > │ __assert_eq / actual: Array(MutCell([1, 2])) / expected: 00:10:25 v #11586 > > Array(MutCell([1, 2])) 00:10:25 v #11587 > > │ 00:10:25 v #11588 > > │ 00:10:25 v #11589 > > │ .ts output: 00:10:25 v #11590 > > │ __assert_eq / actual: / expected: 00:10:25 v #11591 > > │ __assert_eq / actual: 1 / expected: 1 00:10:25 v #11592 > > │ __assert_eq / actual: / expected: 00:10:25 v #11593 > > │ __assert_eq / actual: 2 / expected: 2 00:10:25 v #11594 > > │ __assert_eq / actual: / expected: 00:10:25 v #11595 > > │ __assert_eq / actual: 1,2 / expected: 1,2 00:10:25 v #11596 > > │ 00:10:25 v #11597 > > │ 00:10:25 v #11598 > > │ .py output: 00:10:25 v #11599 > > │ __assert_eq / actual: [] / expected: array('l') 00:10:25 v #11600 > > │ __assert_eq / actual: [1] / expected: array('l', [1]) 00:10:25 v #11601 > > │ __assert_eq / actual: [] / expected: array('l') 00:10:25 v #11602 > > │ __assert_eq / actual: [2] / expected: array('l', [2]) 00:10:25 v #11603 > > │ __assert_eq / actual: [] / expected: array('l') 00:10:25 v #11604 > > │ __assert_eq / actual: [1, 2] / expected: array('l', [1, 2]) 00:10:25 v #11605 > > │ 00:10:25 v #11606 > > │ 00:10:25 v #11607 > > │ 00:10:25 v #11608 > > 00:10:25 v #11609 > > ── [ 8.71s - stdout ] ────────────────────────────────────────────────────────── 00:10:25 v #11610 > > │ .fsx output: 00:10:25 v #11611 > > │ __assert_eq / actual: [||] / expected: [||] 00:10:25 v #11612 > > │ __assert_eq / actual: [|1|] / expected: [|1|] 00:10:25 v #11613 > > │ __assert_eq / actual: [||] / expected: [||] 00:10:25 v #11614 > > │ __assert_eq / actual: [|2|] / expected: [|2|] 00:10:25 v #11615 > > │ __assert_eq / actual: [||] / expected: [||] 00:10:25 v #11616 > > │ __assert_eq / actual: [|1; 2|] / expected: [|1; 2|] 00:10:25 v #11617 > > │ 00:10:25 v #11618 > > 00:10:25 v #11619 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #11620 > > │ ### range 00:10:25 v #11621 > > 00:10:25 v #11622 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #11623 > > union range dim = 00:10:25 v #11624 > > | Start : dim 00:10:25 v #11625 > > | End : (() -> dim) -> dim 00:10:25 v #11626 > > 00:10:25 v #11627 > > inl range start end s = 00:10:25 v #11628 > > inl start, end = 00:10:25 v #11629 > > inl len () = 00:10:25 v #11630 > > s |> length |> conv 00:10:25 v #11631 > > match start, end with 00:10:25 v #11632 > > | Start start, End fn => 00:10:25 v #11633 > > start, fn len 00:10:25 v #11634 > > | End start_fn, End end_fn => 00:10:25 v #11635 > > start_fn len, end_fn len 00:10:25 v #11636 > > s |> slice (start |> unbox) (end |> unbox) 00:10:25 v #11637 > > 00:10:25 v #11638 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #11639 > > │ ## rust 00:10:25 v #11640 > > 00:10:25 v #11641 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #11642 > > │ ### vec 00:10:25 v #11643 > > 00:10:25 v #11644 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #11645 > > nominal vec t = 00:10:25 v #11646 > > `( 00:10:25 v #11647 > > backend_switch `(()) `({}) { 00:10:25 v #11648 > > Fsharp = 00:10:25 v #11649 > > (fun () => 00:10:25 v #11650 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:25 v #11651 > > Fable.Core.Emit(\"Vec<$0>\")>]]\n#endif\ntype Vec<'T> = class end" 00:10:25 v #11652 > > ) : () -> () 00:10:25 v #11653 > > } 00:10:25 v #11654 > > $'' : $'Vec<`t>' 00:10:25 v #11655 > > ) 00:10:25 v #11656 > > 00:10:25 v #11657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #11658 > > │ ### from_vec 00:10:25 v #11659 > > 00:10:25 v #11660 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #11661 > > inl from_vec forall dim el. (vec : vec el) : a dim el = 00:10:25 v #11662 > > !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"') 00:10:25 v #11663 > > 00:10:25 v #11664 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:25 v #11665 > > │ ### from_vec_base 00:10:25 v #11666 > > 00:10:25 v #11667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:25 v #11668 > > inl from_vec_base forall el. (vec : vec el) : array_base el = 00:10:25 v #11669 > > !\\(vec, $'"fable_library_rust::NativeArray_::array_from($0.clone())"') 00:10:26 v #11670 > > 00:10:26 v #11671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11672 > > │ ### to_vec 00:10:26 v #11673 > > 00:10:26 v #11674 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11675 > > inl to_vec forall t. (ab : array_base t) : vec t = 00:10:26 v #11676 > > !\\(ab, $'"$0.to_vec()"') 00:10:26 v #11677 > > 00:10:26 v #11678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11679 > > │ ### to_vec' 00:10:26 v #11680 > > 00:10:26 v #11681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11682 > > inl to_vec' forall (t : * -> * -> *) u v. (x : t u v) : vec u = 00:10:26 v #11683 > > !\($'$"!x.to_vec()"') 00:10:26 v #11684 > > 00:10:26 v #11685 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11686 > > │ ### to_vec'' 00:10:26 v #11687 > > 00:10:26 v #11688 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11689 > > inl to_vec'' forall (t : * -> *) (u : * -> *) v. (x : t (u v)) : vec v = 00:10:26 v #11690 > > !\($'$"!x.to_vec()"') 00:10:26 v #11691 > > 00:10:26 v #11692 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11693 > > │ ### to_vec''' 00:10:26 v #11694 > > 00:10:26 v #11695 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11696 > > inl to_vec''' forall t. (ab : array_base t) : vec t = 00:10:26 v #11697 > > !\\(ab, $'"to_vec($0)"') 00:10:26 v #11698 > > 00:10:26 v #11699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11700 > > │ ### vec_push 00:10:26 v #11701 > > 00:10:26 v #11702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11703 > > inl vec_push forall el. (el : el) (vec : vec el) : vec el = 00:10:26 v #11704 > > inl el = join el 00:10:26 v #11705 > > inl vec = join vec 00:10:26 v #11706 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:26 v #11707 > > // inl vec = vec |> rust.to_mut 00:10:26 v #11708 > > (!\($'"true; !vec.push(!el)"') : bool) |> ignore 00:10:26 v #11709 > > !\($'"!vec"') 00:10:26 v #11710 > > 00:10:26 v #11711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11712 > > │ ### vec_reverse 00:10:26 v #11713 > > 00:10:26 v #11714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11715 > > inl vec_reverse forall el. (vec : vec el) : vec el = 00:10:26 v #11716 > > inl vec = join vec 00:10:26 v #11717 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:26 v #11718 > > (!\($'"true; !vec.reverse()"') : bool) |> ignore 00:10:26 v #11719 > > !\($'"!vec"') 00:10:26 v #11720 > > 00:10:26 v #11721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:26 v #11722 > > │ ### vec_retain 00:10:26 v #11723 > > 00:10:26 v #11724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:26 v #11725 > > inl vec_retain forall el. (fn : el -> bool) (vec : vec el) : vec el = 00:10:26 v #11726 > > inl vec = join vec 00:10:26 v #11727 > > inl fn = join fn 00:10:26 v #11728 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:26 v #11729 > > // inl vec = vec |> rust.to_mut 00:10:26 v #11730 > > (!\($'"true; !vec.retain(|x| !fn(x.clone()))"') : bool) |> ignore 00:10:26 v #11731 > > !\($'"!vec"') 00:10:27 v #11732 > > 00:10:27 v #11733 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11734 > > │ ### vec_sort_by_key 00:10:27 v #11735 > > 00:10:27 v #11736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11737 > > inl vec_sort_by_key forall el t. (fn : el -> t) (vec : vec el) : vec el = 00:10:27 v #11738 > > inl vec = join vec 00:10:27 v #11739 > > inl fn = join fn 00:10:27 v #11740 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:27 v #11741 > > // inl vec = vec |> rust.to_mut 00:10:27 v #11742 > > (!\($'"true; !vec.sort_by_key(|x| !fn(x.clone()))"') : bool) |> ignore 00:10:27 v #11743 > > !\($'"!vec"') 00:10:27 v #11744 > > 00:10:27 v #11745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11746 > > │ ### vec_extend 00:10:27 v #11747 > > 00:10:27 v #11748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11749 > > inl vec_extend forall el. (el : vec el) (vec : vec el) : vec el = 00:10:27 v #11750 > > inl el = join el 00:10:27 v #11751 > > inl vec = join vec 00:10:27 v #11752 > > (!\($'"true; let mut !vec = !vec"') : bool) |> ignore 00:10:27 v #11753 > > // inl vec = vec |> rust.to_mut 00:10:27 v #11754 > > (!\($'"true; !vec.extend(!el)"') : bool) |> ignore 00:10:27 v #11755 > > !\($'"!vec"') 00:10:27 v #11756 > > 00:10:27 v #11757 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11758 > > │ ### vec_mapi 00:10:27 v #11759 > > 00:10:27 v #11760 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11761 > > inl vec_mapi forall dim t u. (fn : dim -> t -> u) (ar : vec t) : vec u = 00:10:27 v #11762 > > inl fn = join fn 00:10:27 v #11763 > > inl ar = join ar 00:10:27 v #11764 > > !\($'"!ar.iter().enumerate().map(|(i, x)| 00:10:27 v #11765 > > !fn(i.try_into().unwrap())(x.clone())).collect::<Vec<_>>()"') 00:10:27 v #11766 > > 00:10:27 v #11767 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11768 > > │ ### vec_map 00:10:27 v #11769 > > 00:10:27 v #11770 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11771 > > inl vec_map forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:10:27 v #11772 > > (!\\(ar, $'"true; let _vec_map : Vec<_> = $0.into_iter().map(|x| { //"') : 00:10:27 v #11773 > > bool) |> ignore 00:10:27 v #11774 > > inl result = fn !\($'"x"') 00:10:27 v #11775 > > inl is_unit = 00:10:27 v #11776 > > real 00:10:27 v #11777 > > typecase u with 00:10:27 v #11778 > > | () => true 00:10:27 v #11779 > > | _ => false 00:10:27 v #11780 > > if is_unit 00:10:27 v #11781 > > then (!\($'"true; }}).collect::<Vec<_>>()"') : bool) |> ignore 00:10:27 v #11782 > > else (!\\(result, $'"true; $0 }).collect::<Vec<_>>()"') : bool) |> ignore 00:10:27 v #11783 > > !\($'"_vec_map"') 00:10:27 v #11784 > > 00:10:27 v #11785 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11786 > > │ ### vec_map' 00:10:27 v #11787 > > 00:10:27 v #11788 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11789 > > inl vec_map' forall t u. (fn : t -> u) (ar : vec t) : vec u = 00:10:27 v #11790 > > inl fn = fn |> rust.func1_from 00:10:27 v #11791 > > inl fn x = 00:10:27 v #11792 > > fn |> rust.func1_move x 00:10:27 v #11793 > > !\\((ar, fn), $'"$0.into_iter().map(|x| 00:10:27 v #11794 > > $1(x.clone())).collect::<Vec<_>>()"') 00:10:27 v #11795 > > 00:10:27 v #11796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:27 v #11797 > > │ ### vec_fold' 00:10:27 v #11798 > > 00:10:27 v #11799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:27 v #11800 > > inl vec_fold' forall t u. (fn : u -> t -> u) (init : u) (ar : vec t) : u = 00:10:27 v #11801 > > (!\\(ar, $'"true; let _vec_fold_ = $0.into_iter().fold(!init, |acc, x| { 00:10:27 v #11802 > > //"') : bool) |> ignore 00:10:27 v #11803 > > (!\\(fn !\($'"acc"') !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:10:27 v #11804 > > !\($'"_vec_fold_"') 00:10:28 v #11805 > > 00:10:28 v #11806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11807 > > │ ### vec_for_each 00:10:28 v #11808 > > 00:10:28 v #11809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11810 > > inl vec_for_each forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:28 v #11811 > > (!\\((ar, fn), $'"true; $0.iter().for_each(|x| { $1(x.clone()); }); //"') : 00:10:28 v #11812 > > bool) |> ignore 00:10:28 v #11813 > > 00:10:28 v #11814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11815 > > │ ### vec_for_each' 00:10:28 v #11816 > > 00:10:28 v #11817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11818 > > inl vec_for_each' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:28 v #11819 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:28 v #11820 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:28 v #11821 > > (!\($'"true; }}); { //"') : bool) |> ignore 00:10:28 v #11822 > > 00:10:28 v #11823 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11824 > > │ ### vec_for_each'' 00:10:28 v #11825 > > 00:10:28 v #11826 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11827 > > inl vec_for_each'' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:28 v #11828 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:28 v #11829 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:28 v #11830 > > (!\($'"true; }}); //"') : bool) |> ignore 00:10:28 v #11831 > > 00:10:28 v #11832 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11833 > > │ ### vec_for_each''' 00:10:28 v #11834 > > 00:10:28 v #11835 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11836 > > inl vec_for_each''' forall t. (fn : t -> ()) (ar : vec t) : () = 00:10:28 v #11837 > > (!\\(ar, $'"true; $0.into_iter().for_each(|x| { //"') : bool) |> ignore 00:10:28 v #11838 > > (!\\(fn !\($'"x"'), $'$"true"') : bool) |> ignore 00:10:28 v #11839 > > (!\($'"true; }); //"') : bool) |> ignore 00:10:28 v #11840 > > 00:10:28 v #11841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11842 > > │ ### vec_filter 00:10:28 v #11843 > > 00:10:28 v #11844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11845 > > inl vec_filter forall t. (fn : t -> bool) (ar : vec t) : vec t = 00:10:28 v #11846 > > inl fn = join fn 00:10:28 v #11847 > > inl ar = join ar 00:10:28 v #11848 > > !\($'"!ar.into_iter().filter(|x| 00:10:28 v #11849 > > !fn(x.clone().clone())).collect::<Vec<_>>()"') 00:10:28 v #11850 > > 00:10:28 v #11851 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11852 > > │ ### vec_len 00:10:28 v #11853 > > 00:10:28 v #11854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11855 > > inl vec_len forall t. (vec : vec t) : unativeint = 00:10:28 v #11856 > > !\\(vec, $'"$0.len()"') 00:10:28 v #11857 > > 00:10:28 v #11858 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:28 v #11859 > > │ ### vec_chunks 00:10:28 v #11860 > > 00:10:28 v #11861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:28 v #11862 > > inl vec_chunks forall t. (n : i32) (vec : vec t) : vec (vec t) = 00:10:28 v #11863 > > !\\(vec, $'"$0.chunks(!n).map(|x| x.into_iter().map(|x| 00:10:28 v #11864 > > x.clone()).collect::<Vec<_>>()).collect::<Vec<_>>()"') 00:10:29 v #11865 > > 00:10:29 v #11866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11867 > > │ ### slice 00:10:29 v #11868 > > 00:10:29 v #11869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11870 > > nominal slice t = 00:10:29 v #11871 > > `( 00:10:29 v #11872 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:29 v #11873 > > Fable.Core.Emit(\"[[$0]]\")>]]\n#endif\ntype Slice<'T> = class end" 00:10:29 v #11874 > > $'' : $'Slice<`t>' 00:10:29 v #11875 > > ) 00:10:29 v #11876 > > 00:10:29 v #11877 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11878 > > │ ### slice' 00:10:29 v #11879 > > 00:10:29 v #11880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11881 > > nominal slice' el dim = 00:10:29 v #11882 > > `( 00:10:29 v #11883 > > backend_switch `(()) `({}) { 00:10:29 v #11884 > > Fsharp = 00:10:29 v #11885 > > (fun () => 00:10:29 v #11886 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:29 v #11887 > > Fable.Core.Emit(\"_\")>]]\n#endif\ntype Slice'<'T> = class end" 00:10:29 v #11888 > > ) : () -> () 00:10:29 v #11889 > > } 00:10:29 v #11890 > > $'' : $'Slice\'<`el>' 00:10:29 v #11891 > > ) 00:10:29 v #11892 > > 00:10:29 v #11893 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11894 > > │ ### slice'' 00:10:29 v #11895 > > 00:10:29 v #11896 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11897 > > nominal slice'' el dim = 00:10:29 v #11898 > > `( 00:10:29 v #11899 > > backend_switch `(()) `({}) { 00:10:29 v #11900 > > Fsharp = 00:10:29 v #11901 > > (fun () => 00:10:29 v #11902 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:10:29 v #11903 > > Fable.Core.Emit(\"[[$0; 10]]\")>]]\n#endif\ntype Slice'_<'T> = class end" 00:10:29 v #11904 > > ) : () -> () 00:10:29 v #11905 > > } 00:10:29 v #11906 > > $'' : $'Slice\'_<`el>' 00:10:29 v #11907 > > ) 00:10:29 v #11908 > > 00:10:29 v #11909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11910 > > │ ### slice_singleton 00:10:29 v #11911 > > 00:10:29 v #11912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11913 > > inl slice_singleton forall dim el. (x : option el) : slice' el dim = 00:10:29 v #11914 > > match x with 00:10:29 v #11915 > > | Some x => !\($'"[[!x]]"') 00:10:29 v #11916 > > | None => 00:10:29 v #11917 > > !\($'"[[\\\"\\\".to_string()]]"') : slice' el dim 00:10:29 v #11918 > > // emit_expr `(()) `(slice' el dim) () ($'"[[@dim]]"' : string) : 00:10:29 v #11919 > > slice' el 10 00:10:29 v #11920 > > // !\( : string) : slice' el i32 // !\($'"[[]]"') 00:10:29 v #11921 > > 00:10:29 v #11922 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11923 > > │ ### slice_length 00:10:29 v #11924 > > 00:10:29 v #11925 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11926 > > inl slice_length forall t dim. (x : slice' t dim) : unativeint = 00:10:29 v #11927 > > !\($'"!x.len()"') 00:10:29 v #11928 > > 00:10:29 v #11929 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:29 v #11930 > > │ ### slice_range 00:10:29 v #11931 > > 00:10:29 v #11932 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:29 v #11933 > > inl slice_range forall t dim. (start : range t) (end : range t) (s : slice' t 00:10:29 v #11934 > > dim) : rust.ref (slice' t dim) = 00:10:29 v #11935 > > inl len () = 00:10:29 v #11936 > > s |> slice_length 00:10:29 v #11937 > > inl start, (end : unativeint) = 00:10:29 v #11938 > > match start, end with 00:10:29 v #11939 > > | Start start, End fn => start, (len >> convert) |> fn |> convert 00:10:29 v #11940 > > | End start_fn, End end_fn => (len >> convert) |> start_fn, (len >> 00:10:29 v #11941 > > convert) |> end_fn |> convert 00:10:29 v #11942 > > match start, end with 00:10:29 v #11943 > > | start, end when unbox end =. len () => !\($'"&!s[[!start..]]"') 00:10:29 v #11944 > > | start, end => !\\((start, end), $'"&!s[[$0..$1]]"') 00:10:30 v #11945 > > 00:10:30 v #11946 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11947 > > │ ### new_slice 00:10:30 v #11948 > > 00:10:30 v #11949 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11950 > > inl new_slice forall el dim. (el : el) : slice' el dim = 00:10:30 v #11951 > > !\\(el, $'"[[$0; @dim]]"') 00:10:30 v #11952 > > 00:10:30 v #11953 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11954 > > │ ### as_slice 00:10:30 v #11955 > > 00:10:30 v #11956 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11957 > > inl as_slice forall t. (x : array_base t) : rust.ref (slice t) = 00:10:30 v #11958 > > inl x = x |> to_vec 00:10:30 v #11959 > > !\($'"!x.as_slice()"') 00:10:30 v #11960 > > 00:10:30 v #11961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11962 > > │ ### slice_to_vec 00:10:30 v #11963 > > 00:10:30 v #11964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11965 > > inl slice_to_vec forall t. (slice : rust.ref (slice t)) : vec t = 00:10:30 v #11966 > > !\\(slice, $'"$0.iter().map(|x| *x).collect::<Vec<_>>()"') 00:10:30 v #11967 > > 00:10:30 v #11968 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11969 > > │ ### to_le_bytes 00:10:30 v #11970 > > 00:10:30 v #11971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11972 > > inl to_le_bytes forall t. (x : t) : slice' u8 8 = 00:10:30 v #11973 > > !\($'$"!x.to_le_bytes()"') 00:10:30 v #11974 > > 00:10:30 v #11975 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11976 > > │ ### as_bytes 00:10:30 v #11977 > > 00:10:30 v #11978 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11979 > > inl as_bytes forall t. (x : t) : rust.ref (slice u8) = 00:10:30 v #11980 > > !\($'$"!x.as_bytes()"') 00:10:30 v #11981 > > 00:10:30 v #11982 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11983 > > │ ### any 00:10:30 v #11984 > > 00:10:30 v #11985 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:30 v #11986 > > inl any forall t. (fn : t -> bool) (source : array_base t) : bool = 00:10:30 v #11987 > > !\($'"!source.any(|x| !fn(x))"') 00:10:30 v #11988 > > 00:10:30 v #11989 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:30 v #11990 > > │ ### iter_collect vec 00:10:31 v #11991 > > 00:10:31 v #11992 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 v #11993 > > instance iter_collect vec = fun (iter : into_iterator u) => 00:10:31 v #11994 > > !\\(iter, $'"$0.collect::<Vec<_>>()"') 00:10:31 v #11995 > > 00:10:31 v #11996 > > instance iter_collect'' vec = fun (iter : into_iterator (t (u v))) => 00:10:31 v #11997 > > !\\(iter, $'"$0.collect::<Vec<_>>()"') 00:10:31 v #11998 > > 00:10:31 v #11999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:31 v #12000 > > │ ### new_vec 00:10:31 v #12001 > > 00:10:31 v #12002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 v #12003 > > inl new_vec forall t. (items : list t) : vec t = 00:10:31 v #12004 > > inl items = 00:10:31 v #12005 > > (items, ("", 0i32)) 00:10:31 v #12006 > > ||> listm.foldBack fun (x : t) (acc, i) => 00:10:31 v #12007 > > $'"!x"' +. (if i = 0 then "" else ", ") +. acc, i + 1 00:10:31 v #12008 > > |> fst 00:10:31 v #12009 > > !\($'"vec\![[" + !items + "]]"') 00:10:31 v #12010 > > 00:10:31 v #12011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:31 v #12012 > > //// test 00:10:31 v #12013 > > ///! rust 00:10:31 v #12014 > > 00:10:31 v #12015 > > [[ 0i32; 1 ]] 00:10:31 v #12016 > > |> new_vec 00:10:31 v #12017 > > |> sm'.format_debug' 00:10:31 v #12018 > > |> sm'.from_std_string 00:10:31 v #12019 > > |> _assert_eq "[[0, 1]]" 00:10:36 v #12020 > > 00:10:36 v #12021 > > ── [ 5.61s - return value ] ──────────────────────────────────────────────────── 00:10:36 v #12022 > > │ __assert_eq / actual: "[0, 1]" / expected: "[0, 1]" 00:10:36 v #12023 > > │ 00:10:36 v #12024 > > 00:10:36 v #12025 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:36 v #12026 > > │ ## fsharp 00:10:36 v #12027 > > 00:10:36 v #12028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:36 v #12029 > > │ ### average 00:10:36 v #12030 > > 00:10:36 v #12031 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:36 v #12032 > > inl average forall el {number}. (a : a _ el) : el = 00:10:36 v #12033 > > $'!a |> Array.average' 00:10:37 v #12034 > > 00:10:37 v #12035 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:37 v #12036 > > │ ### distinct 00:10:37 v #12037 > > 00:10:37 v #12038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12039 > > inl distinct forall dim el. (a : a dim el) : a dim el = 00:10:37 v #12040 > > $'!a |> Array.distinct' 00:10:37 v #12041 > > 00:10:37 v #12042 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:37 v #12043 > > │ ### skip 00:10:37 v #12044 > > 00:10:37 v #12045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12046 > > inl skip forall dim el. (n : dim) (a : a dim el) : a dim el = 00:10:37 v #12047 > > $'!a |> Array.skip !n ' 00:10:37 v #12048 > > 00:10:37 v #12049 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:37 v #12050 > > │ ### skip_while 00:10:37 v #12051 > > 00:10:37 v #12052 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12053 > > inl skip_while forall dim el. (fn : el -> bool) (a : a dim el) : a dim el = 00:10:37 v #12054 > > $'!a |> Array.skipWhile !fn ' 00:10:37 v #12055 > > 00:10:37 v #12056 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:37 v #12057 > > │ ### to_list_base' 00:10:37 v #12058 > > 00:10:37 v #12059 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12060 > > inl to_list_base' forall t. (items : array_base t) : listm'.list' t = 00:10:37 v #12061 > > backend_switch { 00:10:37 v #12062 > > Fsharp = fun () => $'!items |> Array.toList' : listm'.list' t 00:10:37 v #12063 > > Python = fun () => items |> to : listm'.list' t 00:10:37 v #12064 > > } 00:10:37 v #12065 > > 00:10:37 v #12066 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:37 v #12067 > > │ ### to_list' 00:10:37 v #12068 > > 00:10:37 v #12069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12070 > > inl to_list' forall dim {int} t. (items : a dim t) : listm'.list' t = 00:10:37 v #12071 > > items |> base |> to_list_base' 00:10:37 v #12072 > > 00:10:37 v #12073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:37 v #12074 > > //// test 00:10:37 v #12075 > > ///! fsharp 00:10:37 v #12076 > > ///! cuda 00:10:37 v #12077 > > ///! rust 00:10:37 v #12078 > > ///! typescript 00:10:37 v #12079 > > ///! python 00:10:37 v #12080 > > 00:10:37 v #12081 > > a' ;[[ -3i32; 6 ]] 00:10:37 v #12082 > > |> to_list' 00:10:37 v #12083 > > |> listm'.unbox 00:10:37 v #12084 > > |> _assert_eq [[ -3; 6 ]] 00:10:46 v #12085 > > 00:10:46 v #12086 > > ── [ 8.36s - return value ] ──────────────────────────────────────────────────── 00:10:46 v #12087 > > │ .py output (Cuda): 00:10:46 v #12088 > > │ __assert_eq / actual: UH0_1(v0=np.int32(-3), 00:10:46 v #12089 > > v1=UH0_1(v0=np.int32(6), v1=UH0_0())) / expected: UH0_1(v0=-3, v1=UH0_1(v0=6, 00:10:46 v #12090 > > v1=UH0_0())) 00:10:46 v #12091 > > │ 00:10:46 v #12092 > > │ .rs output: 00:10:46 v #12093 > > │ __assert_eq / actual: UH0_1(-3, UH0_1(6, UH0_0)) / expected: 00:10:46 v #12094 > > UH0_1(-3, UH0_1(6, UH0_0)) 00:10:46 v #12095 > > │ 00:10:46 v #12096 > > │ .ts output: 00:10:46 v #12097 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12098 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12099 > > │ 00:10:46 v #12100 > > │ .py output: 00:10:46 v #12101 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12102 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12103 > > │ 00:10:46 v #12104 > > │ 00:10:46 v #12105 > > 00:10:46 v #12106 > > ── [ 8.36s - stdout ] ────────────────────────────────────────────────────────── 00:10:46 v #12107 > > │ .fsx output: 00:10:46 v #12108 > > │ __assert_eq / actual: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12109 > > expected: UH0_1 (-3, UH0_1 (6, UH0_0)) 00:10:46 v #12110 > > │ 00:10:46 v #12111 > > 00:10:46 v #12112 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 v #12113 > > │ ### vec_collect 00:10:46 v #12114 > > 00:10:46 v #12115 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 v #12116 > > inl vec_collect fn vec = 00:10:46 v #12117 > > ((;[[]] |> to_vec), ((vec |> from_vec : _ int _) |> to_list' |> 00:10:46 v #12118 > > listm'.unbox)) 00:10:46 v #12119 > > ||> listm.fold fun acc x => 00:10:46 v #12120 > > acc |> vec_extend (fn x) 00:10:46 v #12121 > > 00:10:46 v #12122 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 v #12123 > > │ ### vec_collect_option 00:10:46 v #12124 > > 00:10:46 v #12125 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 v #12126 > > inl vec_collect_option vec = 00:10:46 v #12127 > > ((;[[]] |> to_vec |> Ok), ((vec |> from_vec : _ int _) |> am.toList)) 00:10:46 v #12128 > > ||> listm.fold fun acc x => 00:10:46 v #12129 > > x 00:10:46 v #12130 > > |> resultm.unbox 00:10:46 v #12131 > > |> fun x => 00:10:46 v #12132 > > match acc, x |> resultm.map optionm'.unbox with 00:10:46 v #12133 > > | Ok acc, Ok (Some x) => acc |> vec_extend x |> Ok 00:10:46 v #12134 > > | _, Error error => error |> Error 00:10:46 v #12135 > > | _ => acc 00:10:46 v #12136 > > 00:10:46 v #12137 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 v #12138 > > │ ### vec_collect_into 00:10:46 v #12139 > > 00:10:46 v #12140 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 v #12141 > > inl vec_collect_into forall (c : * -> * -> *) t e. 00:10:46 v #12142 > > (x : vec (c t e)) 00:10:46 v #12143 > > : c (vec t) e 00:10:46 v #12144 > > = 00:10:46 v #12145 > > !\($'"!x.into_iter().collect()"') 00:10:46 v #12146 > > 00:10:46 v #12147 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 v #12148 > > │ ### parallel_map 00:10:46 v #12149 > > 00:10:46 v #12150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 v #12151 > > inl parallel_map forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' 00:10:46 v #12152 > > = 00:10:46 v #12153 > > $'!a |> Array.Parallel.map !fn ' 00:10:46 v #12154 > > 00:10:46 v #12155 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:46 v #12156 > > │ ### map' 00:10:46 v #12157 > > 00:10:46 v #12158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:46 v #12159 > > inl map' forall dim el el'. (fn : el -> el') (a : a dim el) : a dim el' = 00:10:46 v #12160 > > $'!a |> Array.map !fn ' 00:10:47 v #12161 > > 00:10:47 v #12162 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:47 v #12163 > > │ ### sort_by 00:10:47 v #12164 > > 00:10:47 v #12165 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:47 v #12166 > > inl sort_by forall dim el. (fn : el -> _) (a : a dim el) : a dim el = 00:10:47 v #12167 > > $'!a |> Array.sortBy !fn ' 00:10:47 v #12168 > > 00:10:47 v #12169 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:47 v #12170 > > │ ### sort 00:10:47 v #12171 > > 00:10:47 v #12172 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:47 v #12173 > > inl sort forall dim el. (a : a dim el) : a dim el = 00:10:47 v #12174 > > $'!a |> Array.sort' 00:10:47 v #12175 > > 00:10:47 v #12176 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:47 v #12177 > > │ ### sort_descending 00:10:47 v #12178 > > 00:10:47 v #12179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:47 v #12180 > > inl sort_descending forall dim el. (a : a dim el) : a dim el = 00:10:47 v #12181 > > $'!a |> Array.sortDescending' 00:10:47 v #12182 > > 00:10:47 v #12183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:47 v #12184 > > │ ### transpose 00:10:47 v #12185 > > 00:10:47 v #12186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:47 v #12187 > > inl transpose forall el. (a : array_base (array_base el)) : array_base 00:10:47 v #12188 > > (array_base el) = 00:10:47 v #12189 > > $'!a |> Array.transpose' 00:10:47 v #12190 > > 00:10:47 v #12191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:47 v #12192 > > │ ### try_item 00:10:47 v #12193 > > 00:10:47 v #12194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:47 v #12195 > > inl try_item forall dim el. (i : i32) (a : a dim el) : option el = 00:10:47 v #12196 > > $'!a |> Array.tryItem !i ' |> optionm'.unbox 00:10:47 v #12197 > 00:01:36 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 43697 } 00:10:47 v #12198 > 00:01:36 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:48 v #12199 > 00:01:37 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.ipynb to html 00:10:48 v #12200 > 00:01:37 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:10:48 v #12201 > 00:01:37 v #7 ! validate(nb) 00:10:49 v #12202 > 00:01:37 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:10:49 v #12203 > 00:01:37 v #9 ! return _pygments_highlight( 00:10:49 v #12204 > 00:01:38 v #10 ! [NbConvertApp] Writing 455159 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/am'.dib.html 00:10:49 v #12205 > 00:01:38 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:10:49 v #12206 > 00:01:38 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:10:49 v #12207 > 00:01:38 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/am''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:50 v #12208 > 00:01:38 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:10:50 v #12209 > 00:01:38 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:10:50 v #12210 > 00:01:38 d #16 spiral.run / dib / { exit_code = 0; result_length = 44646 } 00:10:50 d #12211 runtime.execute_with_options_async / { exit_code = 0; output_length = 49416 } 00:10:50 d #14 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path am'.dib --retries 3 00:10:50 d #12212 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path crypto.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:10:50 v #12213 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "crypto.dib", "--retries", "3"])) } 00:10:50 v #12214 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:10:51 v #12215 > > 00:10:51 v #12216 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:51 v #12217 > > │ # crypto 00:10:54 v #12218 > > 00:10:54 v #12219 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:54 v #12220 > > open rust 00:10:54 v #12221 > > open rust_operators 00:10:54 v #12222 > > 00:10:54 v #12223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:54 v #12224 > > //// test 00:10:54 v #12225 > > 00:10:54 v #12226 > > open testing 00:10:54 v #12227 > > open file_system_operators 00:10:55 v #12228 > > 00:10:55 v #12229 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:55 v #12230 > > │ ## fsharp 00:10:55 v #12231 > > 00:10:55 v #12232 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:55 v #12233 > > │ ### sha256 00:10:55 v #12234 > > 00:10:55 v #12235 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:55 v #12236 > > nominal sha256 = $'System.Security.Cryptography.SHA256' 00:10:55 v #12237 > > 00:10:55 v #12238 > > inl sha256 () : sha256 = 00:10:55 v #12239 > > $'`sha256.Create' () 00:10:55 v #12240 > > 00:10:55 v #12241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:55 v #12242 > > │ ### sha256_compute_hash 00:10:55 v #12243 > > 00:10:55 v #12244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:55 v #12245 > > inl sha256_compute_hash (x : sha256) (data : a i32 u8) : a i32 u8 = 00:10:55 v #12246 > > data |> $'!x.ComputeHash' 00:10:55 v #12247 > > 00:10:55 v #12248 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:55 v #12249 > > │ ## rust 00:10:55 v #12250 > > 00:10:55 v #12251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:10:55 v #12252 > > │ ### get_file_hash' 00:10:55 v #12253 > > 00:10:55 v #12254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:55 v #12255 > > inl get_file_hash' (path : string) : result string string = 00:10:55 v #12256 > > inl path = path |> file_system.normalize_path 00:10:55 v #12257 > > inl exit_code, result = 00:10:55 v #12258 > > runtime.execution_options fun x => { x with 00:10:55 v #12259 > > command = $'$"pwsh -c \\\"(Get-FileHash \'{!path}\' -Algorithm 00:10:55 v #12260 > > SHA256).Hash\\\""' 00:10:55 v #12261 > > } 00:10:55 v #12262 > > |> runtime.execute_with_options 00:10:55 v #12263 > > if exit_code = 0 00:10:55 v #12264 > > then result |> sm'.to_lower |> Ok 00:10:55 v #12265 > > else result |> Error 00:10:55 v #12266 > > 00:10:55 v #12267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:10:55 v #12268 > > //// test 00:10:55 v #12269 > > 00:10:55 v #12270 > > inl file_name = "test.txt" 00:10:55 v #12271 > > inl text = "\n" 00:10:55 v #12272 > > 00:10:55 v #12273 > > inl temp_dir, disposable = 00:10:55 v #12274 > > (file_name, text) 00:10:55 v #12275 > > |> sm'.format_debug 00:10:55 v #12276 > > |> crypto.hash_text 00:10:55 v #12277 > > |> file_system.create_temp_dir' 00:10:55 v #12278 > > disposable |> use |> ignore 00:10:55 v #12279 > > inl path = temp_dir </> file_name 00:10:55 v #12280 > > text |> file_system.write_all_text_async path |> async.run_synchronously 00:10:55 v #12281 > > path 00:10:55 v #12282 > > |> get_file_hash' 00:10:55 v #12283 > > |> resultm.get 00:10:55 v #12284 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:08 v #12285 > > 00:11:08 v #12286 > > ── [ 12.67s - stdout ] ───────────────────────────────────────────────────────── 00:11:08 v #12287 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { 00:11:08 v #12288 > > file_name = pwsh; arguments = US2_0 00:11:08 v #12289 > > │ "-c "(Get-FileHash 00:11:08 v #12290 > > '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/test.t 00:11:08 v #12291 > > xt' -Algorithm SHA256).Hash""; options = { command = pwsh -c "(Get-FileHash 00:11:08 v #12292 > > '/tmp/!create_temp_path_/dotnet-repl/9ca8b18d-ee77-4684-ad12-21e1354945fc/test.t 00:11:08 v #12293 > > xt' -Algorithm SHA256).Hash"; cancellation_token = None; environment_variables = 00:11:08 v #12294 > > [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:08 v #12295 > > │ 00:00:00 v #2 > 00:11:08 v #12296 > > 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B 00:11:08 v #12297 > > │ 00:00:00 d #3 runtime.execute_with_options_async / { 00:11:08 v #12298 > > exit_code = 0; output_length = 64 } 00:11:08 v #12299 > > │ __assert_eq / actual: 00:11:08 v #12300 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected: 00:11:08 v #12301 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:08 v #12302 > > │ 00:11:08 v #12303 > > 00:11:08 v #12304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:08 v #12305 > > //// test 00:11:08 v #12306 > > ///! rust -d chrono encoding_rs encoding_rs_io regex sha2 00:11:08 v #12307 > > 00:11:08 v #12308 > > inl file_name = "test.txt" 00:11:08 v #12309 > > inl text = "\n" 00:11:08 v #12310 > > 00:11:08 v #12311 > > inl temp_dir, disposable = 00:11:08 v #12312 > > (file_name, text) 00:11:08 v #12313 > > |> sm'.format_debug 00:11:08 v #12314 > > |> crypto.hash_text 00:11:08 v #12315 > > |> file_system.create_temp_dir' 00:11:08 v #12316 > > disposable |> use |> ignore 00:11:08 v #12317 > > inl path = temp_dir </> file_name 00:11:08 v #12318 > > text |> file_system.write_all_text path 00:11:08 v #12319 > > path 00:11:08 v #12320 > > |> get_file_hash' 00:11:08 v #12321 > > |> resultm.get 00:11:08 v #12322 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:29 v #12323 > > 00:11:29 v #12324 > > ── [ 21.57s - return value ] ─────────────────────────────────────────────────── 00:11:29 v #12325 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:11:29 v #12326 > > /tmp/!create_temp_path_/spiral_e447efb709f8d9662375102892163ca96c7d527b67611a831 00:11:29 v #12327 > > 84e414eaa903ba0/ba0aa16a-6c5a-be3f-b526-70110c680e36 } 00:11:29 v #12328 > > │ 00:00:00 d #2 runtime.execute_with_options / { 00:11:29 v #12329 > > file_name = pwsh; arguments = ["-c", "(Get-FileHash 00:11:29 v #12330 > > '/tmp/!create_temp_path_/spiral_e447efb709f8d9662375102892163ca96c7d527b67611a83 00:11:29 v #12331 > > 184e414eaa903ba0/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' -Algorithm 00:11:29 v #12332 > > SHA256).Hash"]; options = { command = pwsh -c "(Get-FileHash 00:11:29 v #12333 > > '/tmp/!create_temp_path_/spiral_e447efb709f8d9662375102892163ca96c7d527b67611a83 00:11:29 v #12334 > > 184e414eaa903ba0/ba0aa16a-6c5a-be3f-b526-70110c680e36/test.txt' -Algorithm 00:11:29 v #12335 > > SHA256).Hash"; cancellation_token = None; environment_variables = 00:11:29 v #12336 > > Array(MutCell([])); on_line = None; stdin = None; trace = true; 00:11:29 v #12337 > > working_directory = None } } 00:11:29 v #12338 > > │ 00:00:00 v #3 > 00:11:29 v #12339 > > 01BA4719C80B6FE911B091A7C05124B64EEECE964E09C058EF8F9805DACA546B 00:11:29 v #12340 > > │ 00:00:00 v #4 runtime.execute_with_options / result / { 00:11:29 v #12341 > > exit_code = 0; std_trace_length = 64 } 00:11:29 v #12342 > > │ __assert_eq / actual: 00:11:29 v #12343 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected: 00:11:29 v #12344 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:29 v #12345 > > │ 00:11:29 v #12346 > > 00:11:29 v #12347 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:29 v #12348 > > │ ### sha256' 00:11:29 v #12349 > > 00:11:29 v #12350 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:29 v #12351 > > nominal sha256' = 00:11:29 v #12352 > > `( 00:11:29 v #12353 > > backend_switch `(()) `({}) { 00:11:29 v #12354 > > Fsharp = 00:11:29 v #12355 > > (fun () => 00:11:29 v #12356 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:11:29 v #12357 > > Fable.Core.Emit(\"sha2::Sha256\")>]]\n#endif\ntype sha2_Sha256 = class end" 00:11:29 v #12358 > > ) : () -> () 00:11:29 v #12359 > > } 00:11:29 v #12360 > > $'' : $'sha2_Sha256' 00:11:29 v #12361 > > ) 00:11:29 v #12362 > > 00:11:29 v #12363 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:29 v #12364 > > │ ### new_sha256 00:11:29 v #12365 > > 00:11:29 v #12366 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:29 v #12367 > > inl new_sha256 () : sha256' = 00:11:29 v #12368 > > !\($'"let result : sha2::Sha256 = sha2::Digest::new()"') 00:11:29 v #12369 > > !\($'"result"') 00:11:30 v #12370 > > 00:11:30 v #12371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:30 v #12372 > > │ ### hasher_update 00:11:30 v #12373 > > 00:11:30 v #12374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #12375 > > inl hasher_update forall el dim. (slice : rust.ref (am'.slice' el dim)) (hasher 00:11:30 v #12376 > > : sha256') : () = 00:11:30 v #12377 > > !\($'"sha2::Digest::update(&mut !hasher, !slice)"') 00:11:30 v #12378 > > 00:11:30 v #12379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:30 v #12380 > > │ ### hasher_finalize 00:11:30 v #12381 > > 00:11:30 v #12382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #12383 > > inl hasher_finalize (hasher : sha256') : rust.ref (am'.slice u8) = 00:11:30 v #12384 > > !\($'"&sha2::Digest::finalize(!hasher)"') 00:11:30 v #12385 > > 00:11:30 v #12386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:30 v #12387 > > │ ### hash_read 00:11:30 v #12388 > > 00:11:30 v #12389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #12390 > > inl hash_read data : resultm.result' string stream.io_error = 00:11:30 v #12391 > > inl reader = data |> stream.new_buf_reader 00:11:30 v #12392 > > (!\($'"true; let mut !reader = !reader"') : bool) |> ignore 00:11:30 v #12393 > > inl hasher = new_sha256 () 00:11:30 v #12394 > > (!\($'"true; let mut !hasher = !hasher"') : bool) |> ignore 00:11:30 v #12395 > > 00:11:30 v #12396 > > real 00:11:30 v #12397 > > inl size = 1024 00:11:30 v #12398 > > inl zero = convert `i32 `unativeint 0 00:11:30 v #12399 > > inl buffer = am'.new_slice `u8 `@size 0u8 00:11:30 v #12400 > > 00:11:30 v #12401 > > rust.loop 2 fun () => 00:11:30 v #12402 > > inl count = stream.buf_reader_read `u8 `@size buffer reader 00:11:30 v #12403 > > inl count = resultm.unwrap' `unativeint `(stream.io_error) count 00:11:30 v #12404 > > 00:11:30 v #12405 > > if (=.) `unativeint count zero then rust.break () 00:11:30 v #12406 > > 00:11:30 v #12407 > > hasher_update `u8 `@size 00:11:30 v #12408 > > ( 00:11:30 v #12409 > > am'.slice_range `u8 `@size 00:11:30 v #12410 > > (am'.Start `unativeint zero) 00:11:30 v #12411 > > (am'.End `unativeint ((fun _ => count) : (() -> 00:11:30 v #12412 > > unativeint) -> unativeint)) 00:11:30 v #12413 > > buffer 00:11:30 v #12414 > > ) 00:11:30 v #12415 > > hasher 00:11:30 v #12416 > > 00:11:30 v #12417 > > hasher 00:11:30 v #12418 > > |> hasher_finalize 00:11:30 v #12419 > > |> am'.slice_to_vec 00:11:30 v #12420 > > |> am'.vec_map (sm'.format_hex' >> sm'.from_std_string) 00:11:30 v #12421 > > |> am'.from_vec 00:11:30 v #12422 > > |> fun x => x : _ i32 _ 00:11:30 v #12423 > > |> seq.of_array' 00:11:30 v #12424 > > |> sm'.concat (join "") 00:11:30 v #12425 > > |> Ok 00:11:30 v #12426 > > |> resultm.box 00:11:30 v #12427 > > 00:11:30 v #12428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:30 v #12429 > > │ ### get_file_hash 00:11:30 v #12430 > > 00:11:30 v #12431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #12432 > > inl get_file_hash (path : string) = 00:11:30 v #12433 > > inl path = path |> file_system.normalize_path 00:11:30 v #12434 > > inl file = path |> file_system.file_open |> resultm.unwrap' 00:11:30 v #12435 > > inl reader = file |> stream.new_buf_reader 00:11:30 v #12436 > > reader 00:11:30 v #12437 > > |> hash_read 00:11:30 v #12438 > > 00:11:30 v #12439 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:30 v #12440 > > //// test 00:11:30 v #12441 > > ///! rust -d chrono regex sha2 00:11:30 v #12442 > > 00:11:30 v #12443 > > inl file_name = join "test.txt" 00:11:30 v #12444 > > inl text = "\n" 00:11:30 v #12445 > > 00:11:30 v #12446 > > inl temp_dir, disposable = 00:11:30 v #12447 > > (file_name, text) 00:11:30 v #12448 > > |> sm'.format_debug 00:11:30 v #12449 > > |> crypto.hash_text 00:11:30 v #12450 > > |> file_system.create_temp_dir' 00:11:30 v #12451 > > disposable |> use |> ignore 00:11:30 v #12452 > > 00:11:30 v #12453 > > inl path = temp_dir </> file_name 00:11:30 v #12454 > > text |> file_system.write_all_text path 00:11:30 v #12455 > > 00:11:30 v #12456 > > path 00:11:30 v #12457 > > |> get_file_hash 00:11:30 v #12458 > > |> resultm.unwrap' 00:11:30 v #12459 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:40 v #12460 > > 00:11:40 v #12461 > > ── [ 9.81s - return value ] ──────────────────────────────────────────────────── 00:11:40 v #12462 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:11:40 v #12463 > > /tmp/!create_temp_path_/spiral_ee40d89388aa56efe41a38ca78e0391fd76ba8c4119cfde66 00:11:40 v #12464 > > 25f6706ad564987/ba0aa16a-6c5a-be3f-b526-70110c680e36 } 00:11:40 v #12465 > > │ __assert_eq / actual: 00:11:40 v #12466 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected: 00:11:40 v #12467 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:40 v #12468 > > │ 00:11:40 v #12469 > > 00:11:40 v #12470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:40 v #12471 > > //// test 00:11:40 v #12472 > > ///! rust -d chrono regex sha2 00:11:40 v #12473 > > 00:11:40 v #12474 > > inl file_name = join "test.txt" 00:11:40 v #12475 > > inl text = "" 00:11:40 v #12476 > > 00:11:40 v #12477 > > inl temp_dir, disposable = 00:11:40 v #12478 > > (file_name, text) 00:11:40 v #12479 > > |> sm'.format_debug 00:11:40 v #12480 > > |> crypto.hash_text 00:11:40 v #12481 > > |> file_system.create_temp_dir' 00:11:40 v #12482 > > disposable |> use |> ignore 00:11:40 v #12483 > > 00:11:40 v #12484 > > inl path = temp_dir </> file_name 00:11:40 v #12485 > > text |> file_system.write_all_text path 00:11:40 v #12486 > > path 00:11:40 v #12487 > > |> get_file_hash 00:11:40 v #12488 > > |> resultm.unwrap' 00:11:40 v #12489 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:11:50 v #12490 > > 00:11:50 v #12491 > > ── [ 9.96s - return value ] ──────────────────────────────────────────────────── 00:11:50 v #12492 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:11:50 v #12493 > > /tmp/!create_temp_path_/spiral_c60f4c8816f4de19461e097e29d02b2d3d197a3744cf4d006 00:11:50 v #12494 > > 42d7e485902a9d3/c0e26dac-4cb1-4b09-be07-ff616700f056 } 00:11:50 v #12495 > > │ __assert_eq / actual: 00:11:50 v #12496 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected: 00:11:50 v #12497 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:11:50 v #12498 > > │ 00:11:50 v #12499 > > 00:11:50 v #12500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:50 v #12501 > > │ ## typescript 00:11:50 v #12502 > > 00:11:50 v #12503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:50 v #12504 > > │ ### create_hash 00:11:50 v #12505 > > 00:11:50 v #12506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 v #12507 > > inl create_hash (x : string) : any = 00:11:50 v #12508 > > open typescript_operators 00:11:50 v #12509 > > global "type ICryptoCreateHash = abstract createHash: x: string -> obj" 00:11:50 v #12510 > > inl crypto : $'ICryptoCreateHash' = typescript.import_all "crypto" 00:11:50 v #12511 > > !\\(x, $'"!crypto.createHash($0)"') 00:11:50 v #12512 > > 00:11:50 v #12513 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:50 v #12514 > > │ ### hash_update 00:11:50 v #12515 > > 00:11:50 v #12516 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 v #12517 > > inl hash_update (s : string) (x : any) : any = 00:11:50 v #12518 > > open typescript_operators 00:11:50 v #12519 > > !\\((x, s), $'"$0.update($1, \'utf8\')"') 00:11:50 v #12520 > > 00:11:50 v #12521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:50 v #12522 > > │ ### hash_digest 00:11:50 v #12523 > > 00:11:50 v #12524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:50 v #12525 > > inl hash_digest (s : string) (x : any) : string = 00:11:50 v #12526 > > open typescript_operators 00:11:50 v #12527 > > !\\((x, s), $'"$0.digest($1)"') 00:11:51 v #12528 > > 00:11:51 v #12529 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12530 > > │ ## python 00:11:51 v #12531 > > 00:11:51 v #12532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12533 > > │ ### py_sha256 00:11:51 v #12534 > > 00:11:51 v #12535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12536 > > nominal py_sha256 = any 00:11:51 v #12537 > > 00:11:51 v #12538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12539 > > │ ### hashlib_sha256 00:11:51 v #12540 > > 00:11:51 v #12541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12542 > > inl hashlib_sha256 () : py_sha256 = 00:11:51 v #12543 > > backend_switch { 00:11:51 v #12544 > > Fsharp = fun () => 00:11:51 v #12545 > > open python_operators 00:11:51 v #12546 > > global "type IHashlibSha256 = abstract sha256: x: unit -> obj" 00:11:51 v #12547 > > inl hashlib : $'IHashlibSha256' = python.import_all "hashlib" 00:11:51 v #12548 > > !\($'"!hashlib.sha256()"') : py_sha256 00:11:51 v #12549 > > Python = fun () => 00:11:51 v #12550 > > global "import hashlib" 00:11:51 v #12551 > > $'hashlib.sha256()' : py_sha256 00:11:51 v #12552 > > } 00:11:51 v #12553 > > 00:11:51 v #12554 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12555 > > │ ### sha256_update 00:11:51 v #12556 > > 00:11:51 v #12557 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12558 > > inl sha256_update (x : string) (sha256 : py_sha256) : py_sha256 = 00:11:51 v #12559 > > backend_switch { 00:11:51 v #12560 > > Fsharp = fun () => 00:11:51 v #12561 > > open python_operators 00:11:51 v #12562 > > !\\(x, $'"!sha256.update($0)"') : () 00:11:51 v #12563 > > Python = fun () => 00:11:51 v #12564 > > $'!sha256.update(!x)' : () 00:11:51 v #12565 > > } 00:11:51 v #12566 > > sha256 00:11:51 v #12567 > > 00:11:51 v #12568 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12569 > > │ ### sha256_hexdigest 00:11:51 v #12570 > > 00:11:51 v #12571 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12572 > > inl sha256_hexdigest (sha256 : py_sha256) : string = 00:11:51 v #12573 > > backend_switch { 00:11:51 v #12574 > > Fsharp = fun () => 00:11:51 v #12575 > > open python_operators 00:11:51 v #12576 > > !\($'"!sha256.hexdigest()"') : string 00:11:51 v #12577 > > Python = fun () => 00:11:51 v #12578 > > $'!sha256.hexdigest()' : string 00:11:51 v #12579 > > } 00:11:51 v #12580 > > 00:11:51 v #12581 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12582 > > │ ## crypto 00:11:51 v #12583 > > 00:11:51 v #12584 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:11:51 v #12585 > > │ ### hash_text 00:11:51 v #12586 > > 00:11:51 v #12587 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12588 > > let hash_text (~input : string) = 00:11:51 v #12589 > > run_target function 00:11:51 v #12590 > > | Fsharp (Native) => fun () => 00:11:51 v #12591 > > inl sha256 = sha256 () |> use 00:11:51 v #12592 > > input 00:11:51 v #12593 > > |> sm'.utf8_get_bytes 00:11:51 v #12594 > > |> sha256_compute_hash sha256 00:11:51 v #12595 > > |> am.map (sm'.byte_to_string "x2") 00:11:51 v #12596 > > |> seq.of_array' 00:11:51 v #12597 > > |> sm'.concat (join "") 00:11:51 v #12598 > > | TypeScript (Native) => fun () => 00:11:51 v #12599 > > create_hash "sha256" 00:11:51 v #12600 > > |> hash_update input 00:11:51 v #12601 > > |> hash_digest "hex" 00:11:51 v #12602 > > | Rust (Native) => fun () => 00:11:51 v #12603 > > input 00:11:51 v #12604 > > |> sm'.utf8_get_bytes 00:11:51 v #12605 > > |> fun (a x) => x 00:11:51 v #12606 > > |> am'.to_vec 00:11:51 v #12607 > > |> stream.new_cursor 00:11:51 v #12608 > > |> hash_read 00:11:51 v #12609 > > |> resultm.unwrap' 00:11:51 v #12610 > > | Python (Native) | Cuda (Native) => fun () => 00:11:51 v #12611 > > hashlib_sha256 () 00:11:51 v #12612 > > |> sha256_update (input |> sm'.encode_utf8) 00:11:51 v #12613 > > |> sha256_hexdigest 00:11:51 v #12614 > > | _ => fun () => null () 00:11:51 v #12615 > > 00:11:51 v #12616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:11:51 v #12617 > > //// test 00:11:51 v #12618 > > ///! fsharp 00:11:51 v #12619 > > ///! cuda 00:11:51 v #12620 > > ///! rust -d sha2 00:11:51 v #12621 > > ///! typescript 00:11:51 v #12622 > > ///! python 00:11:51 v #12623 > > 00:11:51 v #12624 > > "\n" 00:11:51 v #12625 > > |> hash_text 00:11:51 v #12626 > > |> _assert_eq "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:11:51 v #12627 > > 00:11:51 v #12628 > > "" 00:11:51 v #12629 > > |> hash_text 00:11:51 v #12630 > > |> _assert_eq "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:12:00 v #12631 > > 00:12:00 v #12632 > > ── [ 8.98s - return value ] ──────────────────────────────────────────────────── 00:12:00 v #12633 > > │ 00:12:00 v #12634 > > │ .py output (Cuda): 00:12:00 v #12635 > > │ __assert_eq / actual: 00:12:00 v #12636 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: 00:12:00 v #12637 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 00:12:00 v #12638 > > │ __assert_eq / actual: 00:12:00 v #12639 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: 00:12:00 v #12640 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 00:12:00 v #12641 > > │ 00:12:00 v #12642 > > │ 00:12:00 v #12643 > > │ .rs output (rust -d sha2): 00:12:00 v #12644 > > │ __assert_eq / actual: 00:12:00 v #12645 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected: 00:12:00 v #12646 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:12:00 v #12647 > > │ __assert_eq / actual: 00:12:00 v #12648 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected: 00:12:00 v #12649 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:12:00 v #12650 > > │ 00:12:00 v #12651 > > │ 00:12:00 v #12652 > > │ .ts output: 00:12:00 v #12653 > > │ __assert_eq / actual: 00:12:00 v #12654 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: 00:12:00 v #12655 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 00:12:00 v #12656 > > │ __assert_eq / actual: 00:12:00 v #12657 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: 00:12:00 v #12658 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 00:12:00 v #12659 > > │ 00:12:00 v #12660 > > │ 00:12:00 v #12661 > > │ .py output: 00:12:00 v #12662 > > │ __assert_eq / actual: 00:12:00 v #12663 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b / expected: 00:12:00 v #12664 > > 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b 00:12:00 v #12665 > > │ __assert_eq / actual: 00:12:00 v #12666 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 / expected: 00:12:00 v #12667 > > e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 00:12:00 v #12668 > > │ 00:12:00 v #12669 > > │ 00:12:00 v #12670 > > │ 00:12:00 v #12671 > > 00:12:00 v #12672 > > ── [ 8.98s - stdout ] ────────────────────────────────────────────────────────── 00:12:00 v #12673 > > │ .fsx output: 00:12:00 v #12674 > > │ __assert_eq / actual: 00:12:00 v #12675 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" / expected: 00:12:00 v #12676 > > "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b" 00:12:00 v #12677 > > │ __assert_eq / actual: 00:12:00 v #12678 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" / expected: 00:12:00 v #12679 > > "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" 00:12:00 v #12680 > > │ 00:12:00 v #12681 > > 00:12:00 v #12682 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:00 v #12683 > > │ ### hash_to_port 00:12:00 v #12684 > > 00:12:00 v #12685 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:00 v #12686 > > inl hash_to_port (text : string) : u16 = 00:12:00 v #12687 > > inl first_letter_code = text |> sm'.index 0i32 |> sm'.convert_to_utf32 00:12:00 v #12688 > > inl hash_part = text |> sm'.slice 0i32 7 00:12:00 v #12689 > > inl combined_value = convert_i32_base 16 hash_part + first_letter_code |> 00:12:00 v #12690 > > u16 00:12:00 v #12691 > > trace Verbose 00:12:00 v #12692 > > fun () => "crypto.hash_to_port" 00:12:00 v #12693 > > fun () => { first_letter_code hash_part combined_value } 00:12:00 v #12694 > > combined_value % 48128 + 1024 00:12:00 v #12695 > > 00:12:00 v #12696 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:00 v #12697 > > //// test 00:12:00 v #12698 > > ///! fsharp 00:12:00 v #12699 > > ///! cuda 00:12:00 v #12700 > > ///! rust -d sha2 00:12:00 v #12701 > > ///! typescript 00:12:00 v #12702 > > ///! python 00:12:00 v #12703 > > 00:12:00 v #12704 > > "\n" 00:12:00 v #12705 > > |> hash_text 00:12:00 v #12706 > > |> hash_to_port 00:12:00 v #12707 > > |> _assert_eq 19273 00:12:10 v #12708 > > 00:12:10 v #12709 > > ── [ 9.58s - return value ] ──────────────────────────────────────────────────── 00:12:10 v #12710 > > │ 00:12:10 v #12711 > > │ .py output (Cuda): 00:12:10 v #12712 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code 00:12:10 v #12713 > > = 48; hash_part = 01ba4719; combined_value = 18249 } 00:12:10 v #12714 > > │ __assert_eq / actual: 19273 / expected: 19273 00:12:10 v #12715 > > │ 00:12:10 v #12716 > > │ 00:12:10 v #12717 > > │ .rs output (rust -d sha2): 00:12:10 v #12718 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code 00:12:10 v #12719 > > = 48; hash_part = 01ba4719; combined_value = 18249 } 00:12:10 v #12720 > > │ __assert_eq / actual: 19273 / expected: 19273 00:12:10 v #12721 > > │ 00:12:10 v #12722 > > │ 00:12:10 v #12723 > > │ .ts output: 00:12:10 v #12724 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code 00:12:10 v #12725 > > = 48; hash_part = 01ba4719; combined_value = 18249 } 00:12:10 v #12726 > > │ __assert_eq / actual: 19273 / expected: 19273 00:12:10 v #12727 > > │ 00:12:10 v #12728 > > │ 00:12:10 v #12729 > > │ .py output: 00:12:10 v #12730 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code 00:12:10 v #12731 > > = 48; hash_part = 01ba4719; combined_value = 18249 } 00:12:10 v #12732 > > │ __assert_eq / actual: 19273 / expected: 19273 00:12:10 v #12733 > > │ 00:12:10 v #12734 > > │ 00:12:10 v #12735 > > │ 00:12:10 v #12736 > > 00:12:10 v #12737 > > ── [ 9.58s - stdout ] ────────────────────────────────────────────────────────── 00:12:10 v #12738 > > │ .fsx output: 00:12:10 v #12739 > > │ 00:00:00 v #1 crypto.hash_to_port / { first_letter_code 00:12:10 v #12740 > > = 48; hash_part = 01ba4719; combined_value = 18249 } 00:12:10 v #12741 > > │ __assert_eq / actual: 19273us / expected: 19273us 00:12:10 v #12742 > > │ 00:12:10 v #12743 > > 00:12:10 v #12744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:10 v #12745 > > │ ## main 00:12:10 v #12746 > > 00:12:10 v #12747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:10 v #12748 > > inl main () = 00:12:10 v #12749 > > $'let hash_text x = !hash_text x' : () 00:12:10 v #12750 > > $'let hash_to_port x = !hash_to_port x' : () 00:12:11 v #12751 > 00:01:20 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 21917 } 00:12:11 v #12752 > 00:01:20 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:11 v #12753 > 00:01:21 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.ipynb to html 00:12:11 v #12754 > 00:01:21 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:12:11 v #12755 > 00:01:21 v #7 ! validate(nb) 00:12:12 v #12756 > 00:01:22 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:12:12 v #12757 > 00:01:22 v #9 ! return _pygments_highlight( 00:12:12 v #12758 > 00:01:22 v #10 ! [NbConvertApp] Writing 341380 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html 00:12:12 v #12759 > 00:01:22 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:12:12 v #12760 > 00:01:22 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:12:12 v #12761 > 00:01:22 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/crypto.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:12 v #12762 > 00:01:22 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:12:12 v #12763 > 00:01:22 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:12:12 v #12764 > 00:01:22 d #16 spiral.run / dib / { exit_code = 0; result_length = 22872 } 00:12:12 d #12765 runtime.execute_with_options_async / { exit_code = 0; output_length = 26599 } 00:12:12 d #15 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path crypto.dib --retries 3 00:12:12 d #12766 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:12 v #12767 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "common.dib", "--retries", "3"])) } 00:12:12 v #12768 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:12:14 v #12769 > > 00:12:14 v #12770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:14 v #12771 > > │ # common 00:12:16 v #12772 > > 00:12:16 v #12773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:16 v #12774 > > //// test 00:12:16 v #12775 > > 00:12:16 v #12776 > > open testing 00:12:17 v #12777 > > 00:12:17 v #12778 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #12779 > > │ ## common 00:12:17 v #12780 > > 00:12:17 v #12781 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #12782 > > │ ### retry_fn' 00:12:17 v #12783 > > 00:12:17 v #12784 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:17 v #12785 > > inl retry_fn' retries fn = 00:12:17 v #12786 > > let rec loop retry = 00:12:17 v #12787 > > inl is_error, result = 00:12:17 v #12788 > > match fn () with 00:12:17 v #12789 > > | Ok x => false, x 00:12:17 v #12790 > > | Error x => true, x 00:12:17 v #12791 > > if not is_error || retry >= retries 00:12:17 v #12792 > > then result 00:12:17 v #12793 > > else 00:12:17 v #12794 > > trace Debug 00:12:17 v #12795 > > fun () => "common.retry_fn\' / loop" 00:12:17 v #12796 > > fun () => { is_error retry = $'$"{!retry}/{!retries}"' : string; 00:12:17 v #12797 > > result } 00:12:17 v #12798 > > loop (retry + 1) 00:12:17 v #12799 > > loop 1 00:12:17 v #12800 > > 00:12:17 v #12801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #12802 > > │ ## fsharp 00:12:17 v #12803 > > 00:12:17 v #12804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #12805 > > │ ### upcast 00:12:17 v #12806 > > 00:12:17 v #12807 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:17 v #12808 > > inl upcast forall t u. (x : t) : u = 00:12:17 v #12809 > > $'!x :> `u ' 00:12:17 v #12810 > > 00:12:17 v #12811 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:17 v #12812 > > │ ### downcast 00:12:17 v #12813 > > 00:12:17 v #12814 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:17 v #12815 > > inl downcast forall t u. (x : t) : u = 00:12:17 v #12816 > > $'!x :?> `u ' 00:12:18 v #12817 > > 00:12:18 v #12818 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12819 > > │ ### random 00:12:18 v #12820 > > 00:12:18 v #12821 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12822 > > nominal random = $'System.Random' 00:12:18 v #12823 > > 00:12:18 v #12824 > > inl random () : random = 00:12:18 v #12825 > > $'`random ' () 00:12:18 v #12826 > > 00:12:18 v #12827 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12828 > > │ ### random_next 00:12:18 v #12829 > > 00:12:18 v #12830 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12831 > > inl random_next (min : i32) (max : i32) (random : random) : i32 = 00:12:18 v #12832 > > $'!random.Next (!min, !max)' 00:12:18 v #12833 > > 00:12:18 v #12834 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12835 > > │ ### disposable 00:12:18 v #12836 > > 00:12:18 v #12837 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12838 > > nominal disposable t = $"backend_switch `({ Fsharp : $'System.IDisposable'; 00:12:18 v #12839 > > Python : $'object' })" 00:12:18 v #12840 > > 00:12:18 v #12841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12842 > > │ ### dispose 00:12:18 v #12843 > > 00:12:18 v #12844 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12845 > > inl dispose (disposable : disposable _) : () = 00:12:18 v #12846 > > backend_switch { 00:12:18 v #12847 > > Fsharp = fun () => disposable |> $'_.Dispose()' : () 00:12:18 v #12848 > > Python = fun () => $'!disposable.__exit__(None, None, None)' : () 00:12:18 v #12849 > > } 00:12:18 v #12850 > > 00:12:18 v #12851 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12852 > > │ ### yield 00:12:18 v #12853 > > 00:12:18 v #12854 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12855 > > inl yield forall t. (x : t) : () = 00:12:18 v #12856 > > $'yield !x ' 00:12:18 v #12857 > > 00:12:18 v #12858 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12859 > > │ ### return 00:12:18 v #12860 > > 00:12:18 v #12861 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12862 > > inl return forall t. (x : t) : () = 00:12:18 v #12863 > > $'return !x ' 00:12:18 v #12864 > > 00:12:18 v #12865 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:18 v #12866 > > │ ### return' 00:12:18 v #12867 > > 00:12:18 v #12868 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:18 v #12869 > > inl return' forall t. (x : t) : t = 00:12:18 v #12870 > > $'return !x ' 00:12:19 v #12871 > > 00:12:19 v #12872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:19 v #12873 > > │ ### retry_fn 00:12:19 v #12874 > > 00:12:19 v #12875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:19 v #12876 > > inl retry_fn forall t. retries (fn : () -> t) : option t = 00:12:19 v #12877 > > let rec loop retry = 00:12:19 v #12878 > > try 00:12:19 v #12879 > > fun () => 00:12:19 v #12880 > > if retry < retries 00:12:19 v #12881 > > then fn () |> Some 00:12:19 v #12882 > > else None 00:12:19 v #12883 > > fun ex => 00:12:19 v #12884 > > trace Warning 00:12:19 v #12885 > > fun () => "common.retry_fn" 00:12:19 v #12886 > > fun () => { retry ex } 00:12:19 v #12887 > > None 00:12:19 v #12888 > > |> function 00:12:19 v #12889 > > | Some x => x 00:12:19 v #12890 > > | None => loop (retry + 1) 00:12:19 v #12891 > > loop 0 00:12:19 v #12892 > > 00:12:19 v #12893 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:19 v #12894 > > //// test 00:12:19 v #12895 > > ///! fsharp 00:12:19 v #12896 > > ///! cuda 00:12:19 v #12897 > > ///! rust 00:12:19 v #12898 > > ///! typescript 00:12:19 v #12899 > > ///! python 00:12:19 v #12900 > > 00:12:19 v #12901 > > inl retry_fn_test = mut 0i32 00:12:19 v #12902 > > fun () => 00:12:19 v #12903 > > retry_fn_test <- *retry_fn_test + 1 00:12:19 v #12904 > > *retry_fn_test 00:12:19 v #12905 > > |> retry_fn 3i32 00:12:19 v #12906 > > |> _assert_eq' (Some 1i32) 00:12:30 v #12907 > > 00:12:30 v #12908 > > ── [ 11.55s - return value ] ─────────────────────────────────────────────────── 00:12:30 v #12909 > > │ .py output (Cuda): 00:12:30 v #12910 > > │ __assert_eq' / actual: US0_0(v0=1) / expected: US0_0(v0=1) 00:12:30 v #12911 > > │ 00:12:30 v #12912 > > │ .rs output: 00:12:30 v #12913 > > │ __assert_eq' / actual: US0_0(1) / expected: US0_0(1) 00:12:30 v #12914 > > │ 00:12:30 v #12915 > > │ .ts output: 00:12:30 v #12916 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 00:12:30 v #12917 > > │ 00:12:30 v #12918 > > │ .py output: 00:12:30 v #12919 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 00:12:30 v #12920 > > │ 00:12:30 v #12921 > > │ 00:12:30 v #12922 > > 00:12:30 v #12923 > > ── [ 11.56s - stdout ] ───────────────────────────────────────────────────────── 00:12:30 v #12924 > > │ .fsx output: 00:12:30 v #12925 > > │ __assert_eq' / actual: US0_0 1 / expected: US0_0 1 00:12:30 v #12926 > > │ 00:12:30 v #12927 > > 00:12:30 v #12928 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:30 v #12929 > > //// test 00:12:30 v #12930 > > ///! fsharp 00:12:30 v #12931 > > ////! cuda // v3 = $"retry: {v0} / ex: %A{v1} / {v2 ()}" 00:12:30 v #12932 > > ///! rust 00:12:30 v #12933 > > ///! typescript 00:12:30 v #12934 > > ///! python 00:12:30 v #12935 > > 00:12:30 v #12936 > > inl retry_fn_test = mut 0i32 00:12:30 v #12937 > > fun () => 00:12:30 v #12938 > > if *retry_fn_test >= 2 00:12:30 v #12939 > > then *retry_fn_test 00:12:30 v #12940 > > else 00:12:30 v #12941 > > retry_fn_test <- *retry_fn_test + 1 00:12:30 v #12942 > > failwith "test" 00:12:30 v #12943 > > |> retry_fn 3i32 00:12:30 v #12944 > > |> _assert_eq' (Some 2i32) 00:12:40 v #12945 > > 00:12:40 v #12946 > > ── [ 9.68s - return value ] ──────────────────────────────────────────────────── 00:12:40 v #12947 > > │ 00:12:40 v #12948 > > │ .rs output: 00:12:40 v #12949 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = 00:12:40 v #12950 > > Exception { 00:12:40 v #12951 > > │ message: "test", 00:12:40 v #12952 > > │ } } 00:12:40 v #12953 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = 00:12:40 v #12954 > > Exception { 00:12:40 v #12955 > > │ message: "test", 00:12:40 v #12956 > > │ } } 00:12:40 v #12957 > > │ __assert_eq' / actual: US0_0(2) / expected: US0_0(2) 00:12:40 v #12958 > > │ 00:12:40 v #12959 > > │ 00:12:40 v #12960 > > │ .ts output: 00:12:40 v #12961 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = Error: 00:12:40 v #12962 > > test } 00:12:40 v #12963 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = Error: 00:12:40 v #12964 > > test } 00:12:40 v #12965 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 00:12:40 v #12966 > > │ 00:12:40 v #12967 > > │ 00:12:40 v #12968 > > │ .py output: 00:12:40 v #12969 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = test } 00:12:40 v #12970 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = test } 00:12:40 v #12971 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 00:12:40 v #12972 > > │ 00:12:40 v #12973 > > │ 00:12:40 v #12974 > > │ 00:12:40 v #12975 > > 00:12:40 v #12976 > > ── [ 9.68s - stdout ] ────────────────────────────────────────────────────────── 00:12:40 v #12977 > > │ .fsx output: 00:12:40 v #12978 > > │ 00:00:00 w #1 common.retry_fn / { retry = 0; ex = 00:12:40 v #12979 > > System.Exception: test 00:12:40 v #12980 > > │ at FSI_0017.closure1(Mut0 v0, Int32 v1, Unit unitVar2) 00:12:40 v #12981 > > │ at FSI_0017.method1(Mut0 v0, Int32 v1) } 00:12:40 v #12982 > > │ 00:00:00 w #2 common.retry_fn / { retry = 1; ex = 00:12:40 v #12983 > > System.Exception: test 00:12:40 v #12984 > > │ at FSI_0017.closure1(Mut0 v0, Int32 v1, Unit unitVar2) 00:12:40 v #12985 > > │ at FSI_0017.method1(Mut0 v0, Int32 v1) } 00:12:40 v #12986 > > │ __assert_eq' / actual: US0_0 2 / expected: US0_0 2 00:12:40 v #12987 > > │ 00:12:40 v #12988 > > 00:12:40 v #12989 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:40 v #12990 > > │ ## common 00:12:40 v #12991 > > 00:12:40 v #12992 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:40 v #12993 > > │ ### random' 00:12:40 v #12994 > > 00:12:40 v #12995 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:40 v #12996 > > inl random' forall t. (min : t) (max : t) : t = 00:12:40 v #12997 > > run_target function 00:12:40 v #12998 > > | Rust (Contract) => fun () => 00:12:40 v #12999 > > failwith "common.random' / target=Rust(Contract)" 00:12:40 v #13000 > > | Rust _ => fun () => 00:12:40 v #13001 > > open rust.rust_operators 00:12:40 v #13002 > > !\\((min, max), $'"rand::Rng::gen_range(&mut rand::thread_rng(), 00:12:40 v #13003 > > $0..$1)"') 00:12:40 v #13004 > > | _ => fun () => 00:12:40 v #13005 > > random () |> random_next (i32 min) (i32 max) |> convert 00:12:40 v #13006 > > 00:12:40 v #13007 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:40 v #13008 > > │ ### new_disposable 00:12:40 v #13009 > > 00:12:40 v #13010 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:40 v #13011 > > inl new_disposable (fn : () -> ()) : disposable _ = 00:12:40 v #13012 > > run_target function 00:12:40 v #13013 > > | Rust _ => fun () => 00:12:40 v #13014 > > global "type Disposable (f : unit -> unit) = interface 00:12:40 v #13015 > > System.IDisposable with member _.Dispose () = f ()" 00:12:40 v #13016 > > inl fn = join fn 00:12:40 v #13017 > > $'new Disposable (fun () -> Fable.Core.RustInterop.emitRustExpr !fn 00:12:40 v #13018 > > "$0()" )' 00:12:40 v #13019 > > | Fsharp _ | TypeScript _ | Python _ => fun () => 00:12:40 v #13020 > > inl fn = join fn 00:12:40 v #13021 > > $'{ new System.IDisposable with member _.Dispose () = !fn () }' 00:12:40 v #13022 > > | Cuda _ => fun () => 00:12:40 v #13023 > > $'class Disposable:' 00:12:40 v #13024 > > $' def __init__(self, fn):' 00:12:40 v #13025 > > $' self.fn = fn' 00:12:40 v #13026 > > $' def __exit__(self, exc_type, exc_value, traceback):' 00:12:40 v #13027 > > $' self.fn()' 00:12:40 v #13028 > > $' return False' 00:12:40 v #13029 > > $'Disposable(!fn)' 00:12:40 v #13030 > > | _ => fun () => null () 00:12:40 v #13031 > > 00:12:40 v #13032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:40 v #13033 > > //// test 00:12:40 v #13034 > > ///! fsharp 00:12:40 v #13035 > > ///! cuda 00:12:40 v #13036 > > ///! rust 00:12:40 v #13037 > > ///! typescript 00:12:40 v #13038 > > ///! python 00:12:40 v #13039 > > 00:12:40 v #13040 > > inl new_disposable_test = mut 0i32 00:12:40 v #13041 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:40 v #13042 > > |> fun x => x : disposable () 00:12:40 v #13043 > > |> dispose 00:12:40 v #13044 > > *new_disposable_test |> _assert_eq 1 00:12:49 v #13045 > > 00:12:49 v #13046 > > ── [ 9.17s - return value ] ──────────────────────────────────────────────────── 00:12:49 v #13047 > > │ .py output (Cuda): 00:12:49 v #13048 > > │ __assert_eq / actual: 1 / expected: 1 00:12:49 v #13049 > > │ 00:12:49 v #13050 > > │ .rs output: 00:12:49 v #13051 > > │ __assert_eq / actual: 1 / expected: 1 00:12:49 v #13052 > > │ 00:12:49 v #13053 > > │ .ts output: 00:12:49 v #13054 > > │ __assert_eq / actual: 1 / expected: 1 00:12:49 v #13055 > > │ 00:12:49 v #13056 > > │ .py output: 00:12:49 v #13057 > > │ __assert_eq / actual: 1 / expected: 1 00:12:49 v #13058 > > │ 00:12:49 v #13059 > > │ 00:12:49 v #13060 > > 00:12:49 v #13061 > > ── [ 9.17s - stdout ] ────────────────────────────────────────────────────────── 00:12:49 v #13062 > > │ .fsx output: 00:12:49 v #13063 > > │ __assert_eq / actual: 1 / expected: 1 00:12:49 v #13064 > > │ 00:12:49 v #13065 > > 00:12:49 v #13066 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:49 v #13067 > > //// test 00:12:49 v #13068 > > 00:12:49 v #13069 > > inl new_disposable_test = mut 0i32 00:12:49 v #13070 > > fun () => 00:12:49 v #13071 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:49 v #13072 > > |> fun x => x : disposable () 00:12:49 v #13073 > > |> use 00:12:49 v #13074 > > |> ignore 00:12:49 v #13075 > > |> return 00:12:49 v #13076 > > |> async.new_task 00:12:49 v #13077 > > |> async.await_task 00:12:49 v #13078 > > |> async.run_synchronously 00:12:49 v #13079 > > *new_disposable_test |> _assert_eq 1 00:12:50 v #13080 > > 00:12:50 v #13081 > > ── [ 246.40ms - stdout ] ─────────────────────────────────────────────────────── 00:12:50 v #13082 > > │ __assert_eq / actual: 1 / expected: 1 00:12:50 v #13083 > > │ 00:12:50 v #13084 > > 00:12:50 v #13085 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:50 v #13086 > > //// test 00:12:50 v #13087 > > 00:12:50 v #13088 > > inl new_disposable_test = mut 0i32 00:12:50 v #13089 > > fun () => 00:12:50 v #13090 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:50 v #13091 > > |> fun x => x : disposable () 00:12:50 v #13092 > > |> use 00:12:50 v #13093 > > |> ignore 00:12:50 v #13094 > > |> return 00:12:50 v #13095 > > |> async.new_async 00:12:50 v #13096 > > |> async.run_synchronously 00:12:50 v #13097 > > *new_disposable_test |> _assert_eq 1 00:12:50 v #13098 > > 00:12:50 v #13099 > > ── [ 268.57ms - stdout ] ─────────────────────────────────────────────────────── 00:12:50 v #13100 > > │ __assert_eq / actual: 1 / expected: 1 00:12:50 v #13101 > > │ 00:12:50 v #13102 > > 00:12:50 v #13103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:50 v #13104 > > //// test 00:12:50 v #13105 > > 00:12:50 v #13106 > > inl new_disposable_test = mut 0i32 00:12:50 v #13107 > > fun () => 00:12:50 v #13108 > > new_disposable fun () => new_disposable_test <- *new_disposable_test + 1 00:12:50 v #13109 > > |> fun x => x : disposable () 00:12:50 v #13110 > > |> ignore 00:12:50 v #13111 > > |> return 00:12:50 v #13112 > > |> async.new_async 00:12:50 v #13113 > > |> async.run_synchronously 00:12:50 v #13114 > > *new_disposable_test |> _assert_eq 0 00:12:50 v #13115 > > 00:12:50 v #13116 > > ── [ 310.29ms - stdout ] ─────────────────────────────────────────────────────── 00:12:50 v #13117 > > │ __assert_eq / actual: 0 / expected: 0 00:12:50 v #13118 > > │ 00:12:50 v #13119 > > 00:12:50 v #13120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:50 v #13121 > > │ ## main 00:12:50 v #13122 > > 00:12:50 v #13123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:50 v #13124 > > inl main () = 00:12:50 v #13125 > > init_trace_state None 00:12:50 v #13126 > > inl new_disposable x : _ () = new_disposable x 00:12:50 v #13127 > > $'let new_disposable x = !new_disposable x' : () 00:12:50 v #13128 > > inl retry_fn (r : i32) (x : () -> _) : optionm'.option' () = retry_fn r x |> 00:12:50 v #13129 > > optionm'.box 00:12:50 v #13130 > > $'let retry_fn x = !retry_fn x' : () 00:12:50 v #13131 > > inl memoize (fn : () -> ()) : () -> () = memoize fn 00:12:50 v #13132 > > $'let memoize x = !memoize x' : () 00:12:51 v #13133 > 00:00:38 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13805 } 00:12:51 v #13134 > 00:00:38 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:51 v #13135 > 00:00:39 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.ipynb to html 00:12:51 v #13136 > 00:00:39 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:12:51 v #13137 > 00:00:39 v #7 ! validate(nb) 00:12:52 v #13138 > 00:00:39 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:12:52 v #13139 > 00:00:39 v #9 ! return _pygments_highlight( 00:12:52 v #13140 > 00:00:39 v #10 ! [NbConvertApp] Writing 318890 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html 00:12:52 v #13141 > 00:00:39 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:12:52 v #13142 > 00:00:39 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:12:52 v #13143 > 00:00:39 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/common.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:52 v #13144 > 00:00:40 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:12:52 v #13145 > 00:00:40 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:12:52 v #13146 > 00:00:40 d #16 spiral.run / dib / { exit_code = 0; result_length = 14760 } 00:12:52 d #13147 runtime.execute_with_options_async / { exit_code = 0; output_length = 18143 } 00:12:52 d #16 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path common.dib --retries 3 00:12:52 d #13148 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path resultm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:52 v #13149 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "resultm.dib", "--retries", "3"])) } 00:12:53 v #13150 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:12:54 v #13151 > > 00:12:54 v #13152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:54 v #13153 > > │ # resultm 00:12:56 v #13154 > > 00:12:56 v #13155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:56 v #13156 > > open rust 00:12:56 v #13157 > > open rust_operators 00:12:57 v #13158 > > 00:12:57 v #13159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 v #13160 > > //// test 00:12:57 v #13161 > > 00:12:57 v #13162 > > open testing 00:12:57 v #13163 > > 00:12:57 v #13164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 v #13165 > > │ ## resultm 00:12:57 v #13166 > > 00:12:57 v #13167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 v #13168 > > │ ### from_option_error 00:12:57 v #13169 > > 00:12:57 v #13170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 v #13171 > > inl from_option_error error opt = 00:12:57 v #13172 > > match opt with 00:12:57 v #13173 > > | Some x => Ok x 00:12:57 v #13174 > > | None => Error error 00:12:57 v #13175 > > 00:12:57 v #13176 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:57 v #13177 > > │ ### from_option 00:12:57 v #13178 > > 00:12:57 v #13179 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:57 v #13180 > > inl from_option opt = 00:12:57 v #13181 > > opt |> from_option_error "resultm.from_option / Option does not have a 00:12:57 v #13182 > > value." 00:12:58 v #13183 > > 00:12:58 v #13184 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13185 > > │ ### flatten_option 00:12:58 v #13186 > > 00:12:58 v #13187 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13188 > > inl flatten_option forall t u. (x : option (result (option t) u)) : result 00:12:58 v #13189 > > (option t) u = 00:12:58 v #13190 > > match x with 00:12:58 v #13191 > > | Some (Error x) => Error x 00:12:58 v #13192 > > | Some (Ok (Some x)) => Ok (Some x) 00:12:58 v #13193 > > | _ => Ok None 00:12:58 v #13194 > > 00:12:58 v #13195 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13196 > > │ ### flatten 00:12:58 v #13197 > > 00:12:58 v #13198 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13199 > > inl flatten forall t u. (x : result (result t u) u) : result t u = 00:12:58 v #13200 > > match x with 00:12:58 v #13201 > > | Ok x => x 00:12:58 v #13202 > > | Error x => Error x 00:12:58 v #13203 > > 00:12:58 v #13204 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13205 > > │ ### get 00:12:58 v #13206 > > 00:12:58 v #13207 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13208 > > inl get forall t e. (source : result t e) : t = 00:12:58 v #13209 > > match source with 00:12:58 v #13210 > > | Ok x => x 00:12:58 v #13211 > > | Error x => 00:12:58 v #13212 > > backend_switch { 00:12:58 v #13213 > > Fsharp = fun () => $'$"resultm.get / Result value was Error: {!x}"' 00:12:58 v #13214 > > : string 00:12:58 v #13215 > > Python = fun () => $'f"resultm.get / Result value was Error: {!x}"' 00:12:58 v #13216 > > : string 00:12:58 v #13217 > > } 00:12:58 v #13218 > > |> failwith 00:12:58 v #13219 > > 00:12:58 v #13220 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13221 > > │ ### map 00:12:58 v #13222 > > 00:12:58 v #13223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13224 > > inl map forall t e u. (fn : t -> u) (source : result t e) : result u e = 00:12:58 v #13225 > > match source with 00:12:58 v #13226 > > | Ok x => x |> fn |> Ok 00:12:58 v #13227 > > | Error x => Error x 00:12:58 v #13228 > > 00:12:58 v #13229 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13230 > > │ ### map_error 00:12:58 v #13231 > > 00:12:58 v #13232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13233 > > inl map_error forall t e u. (fn : e -> u) (source : result t e) : result t u = 00:12:58 v #13234 > > match source with 00:12:58 v #13235 > > | Ok x => Ok x 00:12:58 v #13236 > > | Error x => x |> fn |> Error 00:12:58 v #13237 > > 00:12:58 v #13238 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:58 v #13239 > > │ ### unwrap_err 00:12:58 v #13240 > > 00:12:58 v #13241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:58 v #13242 > > inl unwrap_err forall t u. (x : result t u) : u = 00:12:58 v #13243 > > match x with 00:12:58 v #13244 > > | Ok x => 00:12:58 v #13245 > > backend_switch { 00:12:58 v #13246 > > Fsharp = fun () => $'$"resultm.unwrap_err / x: {!x}"' : string 00:12:58 v #13247 > > Python = fun () => $'f"resultm.unwrap_err / x: {!x}"' : string 00:12:58 v #13248 > > } 00:12:58 v #13249 > > |> failwith 00:12:58 v #13250 > > | Error x => x 00:12:59 v #13251 > > 00:12:59 v #13252 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13253 > > │ ### ok 00:12:59 v #13254 > > 00:12:59 v #13255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13256 > > inl ok forall t. (x : result t _) : option t = 00:12:59 v #13257 > > match x with 00:12:59 v #13258 > > | Ok x => Some x 00:12:59 v #13259 > > | Error _ => None 00:12:59 v #13260 > > 00:12:59 v #13261 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13262 > > │ ## fsharp 00:12:59 v #13263 > > 00:12:59 v #13264 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13265 > > │ ### result' 00:12:59 v #13266 > > 00:12:59 v #13267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13268 > > nominal result' t u = $'Result<`t, `u>' 00:12:59 v #13269 > > 00:12:59 v #13270 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13271 > > │ ### unbox 00:12:59 v #13272 > > 00:12:59 v #13273 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13274 > > inl unbox forall t u. (x : result' t u) : result t u = 00:12:59 v #13275 > > inl ok x : result t u = Ok x 00:12:59 v #13276 > > inl error x : result t u = Error x 00:12:59 v #13277 > > inl ok = join ok 00:12:59 v #13278 > > inl error = join error 00:12:59 v #13279 > > real 00:12:59 v #13280 > > typecase t with 00:12:59 v #13281 > > | () => $'match !x with Ok () -> !ok () | Error x -> !error x' : result 00:12:59 v #13282 > > t u 00:12:59 v #13283 > > | _ => $'match !x with Ok x -> !ok x | Error x -> !error x' : result t u 00:12:59 v #13284 > > 00:12:59 v #13285 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13286 > > │ ### box 00:12:59 v #13287 > > 00:12:59 v #13288 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13289 > > inl box forall t u. (x : result t u) : result' t u = 00:12:59 v #13290 > > match x with 00:12:59 v #13291 > > | Ok x => $'Ok !x ' 00:12:59 v #13292 > > | Error err => $'Error !err ' 00:12:59 v #13293 > > 00:12:59 v #13294 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13295 > > │ ## rust 00:12:59 v #13296 > > 00:12:59 v #13297 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13298 > > │ ### anyhow_result 00:12:59 v #13299 > > 00:12:59 v #13300 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13301 > > nominal anyhow_result t = 00:12:59 v #13302 > > `( 00:12:59 v #13303 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:12:59 v #13304 > > Fable.Core.Emit(\"anyhow::Result<$0>\")>]]\n#endif\ntype anyhow_Result<'T> = 00:12:59 v #13305 > > class end" 00:12:59 v #13306 > > $'' : $'anyhow_Result<`t>' 00:12:59 v #13307 > > ) 00:12:59 v #13308 > > 00:12:59 v #13309 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13310 > > │ ### anyhow_error 00:12:59 v #13311 > > 00:12:59 v #13312 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13313 > > nominal anyhow_error = 00:12:59 v #13314 > > `( 00:12:59 v #13315 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:12:59 v #13316 > > Fable.Core.Emit(\"anyhow::Error\")>]]\n#endif\ntype anyhow_Error = class end" 00:12:59 v #13317 > > $'' : $'anyhow_Error' 00:12:59 v #13318 > > ) 00:12:59 v #13319 > > 00:12:59 v #13320 > > inl anyhow_error error = 00:12:59 v #13321 > > !\\(error, $'"anyhow::anyhow\!($0)"') 00:12:59 v #13322 > > 00:12:59 v #13323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:12:59 v #13324 > > │ ### try' 00:12:59 v #13325 > > 00:12:59 v #13326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:12:59 v #13327 > > inl try' forall t u. (x : result' t u) : t = 00:12:59 v #13328 > > inl is_unit = 00:12:59 v #13329 > > real 00:12:59 v #13330 > > typecase t with 00:12:59 v #13331 > > | () => true 00:12:59 v #13332 > > | _ => false 00:12:59 v #13333 > > if is_unit 00:12:59 v #13334 > > then (!\\(x, $'"true; $0?"') : bool) |> fun _ => $'' 00:12:59 v #13335 > > else !\\(x, $'"$0?"') 00:13:00 v #13336 > > 00:13:00 v #13337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13338 > > │ ### to_try 00:13:00 v #13339 > > 00:13:00 v #13340 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13341 > > inl to_try forall t u. (x : result' t u) : rust.try t = 00:13:00 v #13342 > > !\\(x, $'"$0"') 00:13:00 v #13343 > > 00:13:00 v #13344 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13345 > > │ ### unwrap' 00:13:00 v #13346 > > 00:13:00 v #13347 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13348 > > inl unwrap' forall t u. (x : result' t u) : t = 00:13:00 v #13349 > > run_target function 00:13:00 v #13350 > > | Rust _ => fun () => !\\(x, $'"$0.unwrap()"') 00:13:00 v #13351 > > | _ => fun () => $'match !x with Ok x -> x | Error e -> failwith 00:13:00 v #13352 > > $"resultm.unwrap\' / e: {e}"' 00:13:00 v #13353 > > 00:13:00 v #13354 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13355 > > │ ### unwrap_err' 00:13:00 v #13356 > > 00:13:00 v #13357 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13358 > > inl unwrap_err' forall t u. (x : result' t u) : u = 00:13:00 v #13359 > > $'match !x with Ok x -> failwith $"resultm.unwrap_err\' / x: %A{x}" | Error 00:13:00 v #13360 > > x -> x' 00:13:00 v #13361 > > 00:13:00 v #13362 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13363 > > │ ### unbox' 00:13:00 v #13364 > > 00:13:00 v #13365 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13366 > > inl unbox' forall t u. (x : result' t u) : result t u = 00:13:00 v #13367 > > inl ok x : result t u = Ok x 00:13:00 v #13368 > > inl ok = join ok 00:13:00 v #13369 > > inl error x : result t u = Error x 00:13:00 v #13370 > > inl error = join error 00:13:00 v #13371 > > real 00:13:00 v #13372 > > typecase t with 00:13:00 v #13373 > > | () => 00:13:00 v #13374 > > (~!\\) 00:13:00 v #13375 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:13:00 v #13376 > > `(result t u) 00:13:00 v #13377 > > ((ok, error, x), ($'"match $2 { Ok(()) => $0(()), Err(e) => 00:13:00 v #13378 > > $1(e) }"' : string)) 00:13:00 v #13379 > > | _ => 00:13:00 v #13380 > > (~!\\) 00:13:00 v #13381 > > `((result' t u -> result t u) * (result' t u -> result t u)) 00:13:00 v #13382 > > `(result t u) 00:13:00 v #13383 > > ((ok, error, x), ($'"match $2 { Ok(x) => $0(x), Err(e) => $1(e) 00:13:00 v #13384 > > }"' : string)) 00:13:00 v #13385 > > 00:13:00 v #13386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13387 > > │ ### map' 00:13:00 v #13388 > > 00:13:00 v #13389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13390 > > inl map' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:13:00 v #13391 > > (!\\(source, $'"true; let _result_map_ = $0.map(|x| { //"') : bool) |> 00:13:00 v #13392 > > ignore 00:13:00 v #13393 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:13:00 v #13394 > > !\($'"_result_map_"') 00:13:00 v #13395 > > 00:13:00 v #13396 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:00 v #13397 > > │ ### map'' 00:13:00 v #13398 > > 00:13:00 v #13399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:00 v #13400 > > inl map'' forall t e u. (fn : t -> u) (source : result' t e) : result' u e = 00:13:00 v #13401 > > inl fn = join fn 00:13:00 v #13402 > > inl source = join source 00:13:00 v #13403 > > !\($'"!source.map(|x| !fn(x))"') 00:13:01 v #13404 > > 00:13:01 v #13405 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13406 > > │ ### map_error' 00:13:01 v #13407 > > 00:13:01 v #13408 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13409 > > inl map_error' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:13:01 v #13410 > > = 00:13:01 v #13411 > > inl fn = join fn 00:13:01 v #13412 > > run_target_args (fun () => fn) function 00:13:01 v #13413 > > | Rust _ => fun fn => 00:13:01 v #13414 > > !\\((source, fn), $'"$0.map_err(|x| $1(x))"') 00:13:01 v #13415 > > | _ => fun fn => 00:13:01 v #13416 > > $'match !source with Ok x -> Ok x | Error x -> Error (!fn x)' : 00:13:01 v #13417 > > result' t u 00:13:01 v #13418 > > 00:13:01 v #13419 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13420 > > │ ### map_error'' 00:13:01 v #13421 > > 00:13:01 v #13422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13423 > > inl map_error'' forall t e u. (fn : e -> u) (source : result' t e) : result' t u 00:13:01 v #13424 > > = 00:13:01 v #13425 > > (!\\(source, $'"true; let _result_map_error__ = $0.map_err(|x| { //"') : 00:13:01 v #13426 > > bool) |> ignore 00:13:01 v #13427 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:13:01 v #13428 > > !\($'"_result_map_error__"') 00:13:01 v #13429 > > 00:13:01 v #13430 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13431 > > │ ### option_ok_or 00:13:01 v #13432 > > 00:13:01 v #13433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13434 > > inl option_ok_or forall t e. (e : e) (source : optionm'.option' t) : result' t e 00:13:01 v #13435 > > = 00:13:01 v #13436 > > !\\(source, $'"$0.ok_or(!e)"') 00:13:01 v #13437 > > 00:13:01 v #13438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13439 > > │ ### unwrap_or_else 00:13:01 v #13440 > > 00:13:01 v #13441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13442 > > inl unwrap_or_else forall t e u. (fn : e -> u) (source : result' t e) : u = 00:13:01 v #13443 > > (!\\(source, $'"true; let _result_unwrap_or_else = $0.unwrap_or_else(|x| { 00:13:01 v #13444 > > //"') : bool) |> ignore 00:13:01 v #13445 > > (!\\(fn !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:13:01 v #13446 > > !\($'"_result_unwrap_or_else"') 00:13:01 v #13447 > > 00:13:01 v #13448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13449 > > │ ### map_or_else 00:13:01 v #13450 > > 00:13:01 v #13451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13452 > > inl map_or_else forall t e u v. (fn : e -> v) (fn2 : u -> v) (source : result' t 00:13:01 v #13453 > > e) : v = 00:13:01 v #13454 > > (!\\(source, $'"true; let _result_map_or_else = $0.map_or_else(|x| { //"') : 00:13:01 v #13455 > > bool) |> ignore 00:13:01 v #13456 > > (!\\(fn !\($'"x"'), $'"true; $0 }, |x| { //"') : bool) |> ignore 00:13:01 v #13457 > > (!\\(fn2 !\($'"x"'), $'"true; $0 })"') : bool) |> ignore 00:13:01 v #13458 > > !\($'"_result_map_or_else"') 00:13:01 v #13459 > > 00:13:01 v #13460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13461 > > │ ### as_ref 00:13:01 v #13462 > > 00:13:01 v #13463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13464 > > inl as_ref forall t e. (source : result' t e) : result' (rust.ref t) (rust.ref 00:13:01 v #13465 > > e) = 00:13:01 v #13466 > > !\($'"!source.as_ref()"') 00:13:01 v #13467 > > 00:13:01 v #13468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:01 v #13469 > > │ ### as_ref' 00:13:01 v #13470 > > 00:13:01 v #13471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:01 v #13472 > > inl as_ref' forall t e. (source : rust.ref (result' t e)) : result' (rust.ref t) 00:13:01 v #13473 > > (rust.ref e) = 00:13:01 v #13474 > > !\($'"!source.as_ref()"') 00:13:02 v #13475 > > 00:13:02 v #13476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13477 > > │ ### unwrap_or' 00:13:02 v #13478 > > 00:13:02 v #13479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13480 > > inl unwrap_or' forall t u. (default : t) (x : result' t u) : t = 00:13:02 v #13481 > > !\\((x, default), $'"$0.unwrap_or($1)"') 00:13:02 v #13482 > > 00:13:02 v #13483 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13484 > > │ ### expect 00:13:02 v #13485 > > 00:13:02 v #13486 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13487 > > inl expect forall t u. (error : rust.ref string) (x : result' t u) : t = 00:13:02 v #13488 > > !\($'"!x.expect(&!error)"') 00:13:02 v #13489 > > 00:13:02 v #13490 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13491 > > │ ### is_err 00:13:02 v #13492 > > 00:13:02 v #13493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13494 > > inl is_err forall t u. (x : result' t u) : bool = 00:13:02 v #13495 > > run_target function 00:13:02 v #13496 > > | Rust _ => fun () => !\\(x, $'"$0.is_err()"') 00:13:02 v #13497 > > | _ => fun () => true 00:13:02 v #13498 > > 00:13:02 v #13499 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13500 > > │ ### ok' 00:13:02 v #13501 > > 00:13:02 v #13502 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13503 > > inl ok' forall t. (x : result' t _) : optionm'.option' t = 00:13:02 v #13504 > > run_target function 00:13:02 v #13505 > > | Rust _ => fun () => !\\(x, $'"$0.ok()"') 00:13:02 v #13506 > > | _ => fun () => $'match !x with Ok x -> Some x | Error _ -> None' 00:13:02 v #13507 > > 00:13:02 v #13508 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13509 > > │ ### err 00:13:02 v #13510 > > 00:13:02 v #13511 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13512 > > inl err forall t u. (x : u) : result' t u = 00:13:02 v #13513 > > run_target function 00:13:02 v #13514 > > | Rust _ => fun () => !\\(x, $'"Err($0)"') 00:13:02 v #13515 > > | _ => fun () => $'!x |> Error' 00:13:02 v #13516 > > 00:13:02 v #13517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:02 v #13518 > > │ ### ok'' 00:13:02 v #13519 > > 00:13:02 v #13520 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:02 v #13521 > > inl ok'' forall t u. (x : t) : result' t u = 00:13:02 v #13522 > > run_target function 00:13:02 v #13523 > > | Rust _ => fun () => !\\(x, $'"Ok($0)"') 00:13:02 v #13524 > > | _ => fun () => $'!x |> Ok' 00:13:03 v #13525 > > 00:13:03 v #13526 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:03 v #13527 > > │ ### transpose 00:13:03 v #13528 > > 00:13:03 v #13529 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:03 v #13530 > > inl transpose forall t u. (x : optionm'.option' (result' t u)) : result' 00:13:03 v #13531 > > (optionm'.option' t) u = 00:13:03 v #13532 > > !\\(x, $'"$0.transpose()"') 00:13:03 v #13533 > > 00:13:03 v #13534 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:03 v #13535 > > │ ### rc_try_unwrap 00:13:03 v #13536 > > 00:13:03 v #13537 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:03 v #13538 > > inl rc_try_unwrap forall t. (x : rust.rc t) : result' t (rust.rc t) = 00:13:03 v #13539 > > !\\(x, $'"std::rc::Rc::try_unwrap($0)"') 00:13:03 v #13540 > > 00:13:03 v #13541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:03 v #13542 > > //// test 00:13:03 v #13543 > > ///! rust 00:13:03 v #13544 > > 00:13:03 v #13545 > > rust.new_rc true 00:13:03 v #13546 > > |> rc_try_unwrap 00:13:03 v #13547 > > |> unbox 00:13:03 v #13548 > > |> _assert_eq (Ok true) 00:13:09 v #13549 > > 00:13:09 v #13550 > > ── [ 5.98s - return value ] ──────────────────────────────────────────────────── 00:13:09 v #13551 > > │ __assert_eq / actual: US0_0(true) / expected: US0_0(true) 00:13:09 v #13552 > > │ 00:13:09 v #13553 > 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 16666 } 00:13:09 v #13554 > 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:10 v #13555 > 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.ipynb to html 00:13:10 v #13556 > 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:13:10 v #13557 > 00:00:17 v #7 ! validate(nb) 00:13:10 v #13558 > 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:13:10 v #13559 > 00:00:17 v #9 ! return _pygments_highlight( 00:13:10 v #13560 > 00:00:17 v #10 ! [NbConvertApp] Writing 352058 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html 00:13:11 v #13561 > 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:13:11 v #13562 > 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:13:11 v #13563 > 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/resultm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:11 v #13564 > 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:13:11 v #13565 > 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:13:11 v #13566 > 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 17623 } 00:13:11 d #13567 runtime.execute_with_options_async / { exit_code = 0; output_length = 21091 } 00:13:11 d #17 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path resultm.dib --retries 3 00:13:11 d #13568 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path console.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:11 v #13569 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "console.dib", "--retries", "3"])) } 00:13:11 v #13570 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:13:12 v #13571 > > 00:13:12 v #13572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:12 v #13573 > > │ # console 00:13:15 v #13574 > > 00:13:15 v #13575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:15 v #13576 > > //// test 00:13:15 v #13577 > > 00:13:15 v #13578 > > open testing 00:13:16 v #13579 > > 00:13:16 v #13580 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13581 > > │ ## fsharp 00:13:16 v #13582 > > 00:13:16 v #13583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13584 > > │ ### console_color 00:13:16 v #13585 > > 00:13:16 v #13586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13587 > > nominal console_color = $'System.ConsoleColor' 00:13:16 v #13588 > > 00:13:16 v #13589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13590 > > │ ### reset_color 00:13:16 v #13591 > > 00:13:16 v #13592 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13593 > > inl reset_color () : () = 00:13:16 v #13594 > > run_target function 00:13:16 v #13595 > > | Fsharp => fun () => $'System.Console.ResetColor ()' 00:13:16 v #13596 > > | _ => fun () => () 00:13:16 v #13597 > > 00:13:16 v #13598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13599 > > │ ### set_foreground_color 00:13:16 v #13600 > > 00:13:16 v #13601 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13602 > > inl set_foreground_color (color : console_color) : () = 00:13:16 v #13603 > > run_target function 00:13:16 v #13604 > > | Fsharp => fun () => $'System.Console.ForegroundColor <- !color ' 00:13:16 v #13605 > > | _ => fun () => () 00:13:16 v #13606 > > 00:13:16 v #13607 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13608 > > │ ## console 00:13:16 v #13609 > > 00:13:16 v #13610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13611 > > │ ### write_line 00:13:16 v #13612 > > 00:13:16 v #13613 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13614 > > inl write_line obj : () = 00:13:16 v #13615 > > backend_switch { 00:13:16 v #13616 > > Fsharp = fun () => 00:13:16 v #13617 > > fun () => obj |> $'System.Console.WriteLine' 00:13:16 v #13618 > > |> exec_unit 00:13:16 v #13619 > > Python = fun () => $'print(!obj)' : () 00:13:16 v #13620 > > } 00:13:16 v #13621 > > 00:13:16 v #13622 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13623 > > │ ### write 00:13:16 v #13624 > > 00:13:16 v #13625 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13626 > > inl write forall t. (x : t) : () = 00:13:16 v #13627 > > inl s = x |> sm'.format 00:13:16 v #13628 > > backend_switch { 00:13:16 v #13629 > > Python = fun () => $'print(!s, end="")' : () 00:13:16 v #13630 > > Fsharp = fun () => $'!s |> System.Console.Write' : () 00:13:16 v #13631 > > } 00:13:16 v #13632 > > 00:13:16 v #13633 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:16 v #13634 > > │ ### write_ln 00:13:16 v #13635 > > 00:13:16 v #13636 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:16 v #13637 > > inl write_ln l : () = 00:13:16 v #13638 > > write l 00:13:16 v #13639 > > backend_switch { 00:13:16 v #13640 > > Cuda = fun () => $'printf("\\n")' : () 00:13:16 v #13641 > > Python = fun () => $"print()" : () 00:13:16 v #13642 > > Fsharp = fun () => write_line () : () 00:13:16 v #13643 > > } 00:13:17 v #13644 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2909 } 00:13:17 v #13645 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:17 v #13646 > 00:00:06 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.ipynb to html 00:13:17 v #13647 > 00:00:06 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:13:17 v #13648 > 00:00:06 v #7 ! validate(nb) 00:13:18 v #13649 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:13:18 v #13650 > 00:00:06 v #9 ! return _pygments_highlight( 00:13:18 v #13651 > 00:00:06 v #10 ! [NbConvertApp] Writing 283429 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html 00:13:18 v #13652 > 00:00:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 898 } 00:13:18 v #13653 > 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 898 } 00:13:18 v #13654 > 00:00:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/console.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:18 v #13655 > 00:00:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:13:18 v #13656 > 00:00:07 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:13:18 v #13657 > 00:00:07 d #16 spiral.run / dib / { exit_code = 0; result_length = 3866 } 00:13:18 d #13658 runtime.execute_with_options_async / { exit_code = 0; output_length = 6674 } 00:13:18 d #18 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path console.dib --retries 3 00:13:18 d #13659 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path base.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:13:18 v #13660 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "base.dib", "--retries", "3"])) } 00:13:18 v #13661 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:13:20 v #13662 > > 00:13:20 v #13663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:20 v #13664 > > │ # base 00:13:22 v #13665 > > 00:13:22 v #13666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:22 v #13667 > > //// test 00:13:22 v #13668 > > 00:13:22 v #13669 > > open testing 00:13:23 v #13670 > > 00:13:23 v #13671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13672 > > │ ## execution 00:13:23 v #13673 > > 00:13:23 v #13674 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13675 > > │ ### emit 00:13:23 v #13676 > > 00:13:23 v #13677 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:23 v #13678 > > inl emit forall t. (x : t) : t = 00:13:23 v #13679 > > $'!x ' 00:13:23 v #13680 > > 00:13:23 v #13681 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13682 > > │ ### emit_unit 00:13:23 v #13683 > > 00:13:23 v #13684 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:23 v #13685 > > inl emit_unit forall t. (x : t) : () = 00:13:23 v #13686 > > $'!x ' 00:13:23 v #13687 > > 00:13:23 v #13688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13689 > > │ ### use 00:13:23 v #13690 > > 00:13:23 v #13691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:23 v #13692 > > inl use forall t. (x : t) : t = 00:13:23 v #13693 > > $'use !x = !x ' : () 00:13:23 v #13694 > > $'!x ' 00:13:23 v #13695 > > 00:13:23 v #13696 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13697 > > │ ## type 00:13:23 v #13698 > > 00:13:23 v #13699 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13700 > > │ ### unit 00:13:23 v #13701 > > 00:13:23 v #13702 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:23 v #13703 > > nominal unit = $'unit' 00:13:23 v #13704 > > 00:13:23 v #13705 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13706 > > │ ## target 00:13:23 v #13707 > > 00:13:23 v #13708 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:23 v #13709 > > │ ### backend_switch 00:13:23 v #13710 > > 00:13:23 v #13711 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:23 v #13712 > > inl backend_switch forall t. x : t = 00:13:23 v #13713 > > real 00:13:23 v #13714 > > inl backend key : t = 00:13:23 v #13715 > > inl s = real_core.string_lit_to_symbol key 00:13:23 v #13716 > > real_core.record_type_try_find `(`x) s 00:13:23 v #13717 > > (forall v'. => (x s) ()) 00:13:23 v #13718 > > (fun () => $'' : t) 00:13:23 v #13719 > > !!!!BackendSwitch ( 00:13:23 v #13720 > > ("Fsharp", backend "Fsharp"), 00:13:23 v #13721 > > ("Python", backend "Python"), 00:13:23 v #13722 > > ("Cuda", backend "Cuda") 00:13:23 v #13723 > > ) 00:13:24 v #13724 > > 00:13:24 v #13725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:24 v #13726 > > │ ### target_runtime 00:13:24 v #13727 > > 00:13:24 v #13728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13729 > > union target_runtime = 00:13:24 v #13730 > > | Native 00:13:24 v #13731 > > | Wasm 00:13:24 v #13732 > > | Contract 00:13:24 v #13733 > > 00:13:24 v #13734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:24 v #13735 > > │ ### target 00:13:24 v #13736 > > 00:13:24 v #13737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13738 > > union target = 00:13:24 v #13739 > > | Fsharp : target_runtime 00:13:24 v #13740 > > | Cuda : target_runtime 00:13:24 v #13741 > > | Rust : target_runtime 00:13:24 v #13742 > > | TypeScript : target_runtime 00:13:24 v #13743 > > | Python : target_runtime 00:13:24 v #13744 > > 00:13:24 v #13745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:24 v #13746 > > │ ### run_target_args' 00:13:24 v #13747 > > 00:13:24 v #13748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13749 > > inl run_target_args' forall t u. (args : u) (fn : target -> (u -> t)) : t = 00:13:24 v #13750 > > backend_switch { 00:13:24 v #13751 > > Fsharp = fun () => 00:13:24 v #13752 > > inl is_unit : bool = 00:13:24 v #13753 > > real 00:13:24 v #13754 > > typecase t with 00:13:24 v #13755 > > | () => true 00:13:24 v #13756 > > | _ => false 00:13:24 v #13757 > > inl result = $'()' : unit 00:13:24 v #13758 > > inl emit_result x : () = 00:13:24 v #13759 > > if is_unit |> not 00:13:24 v #13760 > > then $'let _run_target_args\'_!result = !x ' 00:13:24 v #13761 > > $'\n#if FABLE_COMPILER || WASM || CONTRACT' 00:13:24 v #13762 > > $'\n#if FABLE_COMPILER_RUST && \!WASM && \!CONTRACT' 00:13:24 v #13763 > > inl target = Rust Native 00:13:24 v #13764 > > fn target args |> emit_result 00:13:24 v #13765 > > $'#endif\n#if FABLE_COMPILER_RUST && WASM' 00:13:24 v #13766 > > inl target = Rust Wasm 00:13:24 v #13767 > > fn target args |> emit_result 00:13:24 v #13768 > > $'#endif\n#if FABLE_COMPILER_RUST && CONTRACT' 00:13:24 v #13769 > > inl target = Rust Contract 00:13:24 v #13770 > > fn target args |> emit_result 00:13:24 v #13771 > > $'#endif\n#if FABLE_COMPILER_TYPESCRIPT' 00:13:24 v #13772 > > inl target = TypeScript Native 00:13:24 v #13773 > > fn target args |> emit_result 00:13:24 v #13774 > > $'#endif\n#if FABLE_COMPILER_PYTHON' 00:13:24 v #13775 > > inl target = Python Native 00:13:24 v #13776 > > fn target args |> emit_result 00:13:24 v #13777 > > $'#endif\n#if \!FABLE_COMPILER_RUST && \!FABLE_COMPILER_TYPESCRIPT 00:13:24 v #13778 > > && \!FABLE_COMPILER_PYTHON' 00:13:24 v #13779 > > inl target = Fsharp Wasm 00:13:24 v #13780 > > fn target args |> emit_result 00:13:24 v #13781 > > $'#endif\n#else' 00:13:24 v #13782 > > inl target = Fsharp Native 00:13:24 v #13783 > > fn target args |> emit_result 00:13:24 v #13784 > > $'#endif' 00:13:24 v #13785 > > if is_unit 00:13:24 v #13786 > > then $'// run_target_args\' is_unit' 00:13:24 v #13787 > > else $'_run_target_args\'_!result ' : t 00:13:24 v #13788 > > Python = fun () => 00:13:24 v #13789 > > inl target = Cuda Native 00:13:24 v #13790 > > fn target args 00:13:24 v #13791 > > } 00:13:24 v #13792 > > 00:13:24 v #13793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:24 v #13794 > > │ ### run_target_args 00:13:24 v #13795 > > 00:13:24 v #13796 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13797 > > inl run_target_args forall t u. (args : () -> u) (fn : target -> (u -> t)) : t = 00:13:24 v #13798 > > inl args = args () |> dyn 00:13:24 v #13799 > > fn |> run_target_args' args 00:13:24 v #13800 > > 00:13:24 v #13801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:24 v #13802 > > │ ### run_target 00:13:24 v #13803 > > 00:13:24 v #13804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13805 > > inl run_target forall t. (fn : target -> (() -> t)) : t = 00:13:24 v #13806 > > run_target_args id fn 00:13:24 v #13807 > > 00:13:24 v #13808 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:24 v #13809 > > //// test 00:13:24 v #13810 > > ///! fsharp 00:13:24 v #13811 > > ///! cuda 00:13:24 v #13812 > > ///! rust 00:13:24 v #13813 > > ///! typescript 00:13:24 v #13814 > > ///! python 00:13:24 v #13815 > > 00:13:24 v #13816 > > run_target function 00:13:24 v #13817 > > | Fsharp (Native) => fun () => $'1uy' 00:13:24 v #13818 > > | Cuda (Native) => fun () => $'1' 00:13:24 v #13819 > > | Rust (Native) => fun () => $'1uy' 00:13:24 v #13820 > > | TypeScript (Native) => fun () => $'1uy' 00:13:24 v #13821 > > | Python (Native) => fun () => $'1uy' 00:13:24 v #13822 > > | _ => fun () => $'2uy' 00:13:24 v #13823 > > |> _assert_eq 1u8 00:13:33 v #13824 > > 00:13:33 v #13825 > > ── [ 8.82s - return value ] ──────────────────────────────────────────────────── 00:13:33 v #13826 > > │ .py output (Cuda): 00:13:33 v #13827 > > │ __assert_eq / actual: 1 / expected: 1 00:13:33 v #13828 > > │ 00:13:33 v #13829 > > │ .rs output: 00:13:33 v #13830 > > │ __assert_eq / actual: 1 / expected: 1 00:13:33 v #13831 > > │ 00:13:33 v #13832 > > │ .ts output: 00:13:33 v #13833 > > │ __assert_eq / actual: 1 / expected: 1 00:13:33 v #13834 > > │ 00:13:33 v #13835 > > │ .py output: 00:13:33 v #13836 > > │ __assert_eq / actual: 1 / expected: 1 00:13:33 v #13837 > > │ 00:13:33 v #13838 > > │ 00:13:33 v #13839 > > 00:13:33 v #13840 > > ── [ 8.83s - stdout ] ────────────────────────────────────────────────────────── 00:13:33 v #13841 > > │ .fsx output: 00:13:33 v #13842 > > │ __assert_eq / actual: 1uy / expected: 1uy 00:13:33 v #13843 > > │ 00:13:33 v #13844 > > 00:13:33 v #13845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:33 v #13846 > > │ ## function 00:13:33 v #13847 > > 00:13:33 v #13848 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:33 v #13849 > > │ ### eval 00:13:33 v #13850 > > 00:13:33 v #13851 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:33 v #13852 > > inl eval fn = 00:13:33 v #13853 > > fn () 00:13:33 v #13854 > > 00:13:33 v #13855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:33 v #13856 > > │ ### flip 00:13:33 v #13857 > > 00:13:33 v #13858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:33 v #13859 > > inl flip fn a b = 00:13:33 v #13860 > > fn b a 00:13:34 v #13861 > > 00:13:34 v #13862 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13863 > > │ ### do 00:13:34 v #13864 > > 00:13:34 v #13865 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13866 > > inl do (body : () -> ()) : () = 00:13:34 v #13867 > > !!!!Do (body()) 00:13:34 v #13868 > > 00:13:34 v #13869 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13870 > > │ ### indent 00:13:34 v #13871 > > 00:13:34 v #13872 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13873 > > inl indent (body : () -> ()) : () = 00:13:34 v #13874 > > backend_switch { 00:13:34 v #13875 > > Fsharp = fun () => 00:13:34 v #13876 > > inl body () = 00:13:34 v #13877 > > body () 00:13:34 v #13878 > > $'(* indent' : () 00:13:34 v #13879 > > !!!!Indent (body()) 00:13:34 v #13880 > > $'indent *)' : () 00:13:34 v #13881 > > Python = fun () => 00:13:34 v #13882 > > !!!!Indent (body()) 00:13:34 v #13883 > > () 00:13:34 v #13884 > > } 00:13:34 v #13885 > > 00:13:34 v #13886 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13887 > > │ ### let' 00:13:34 v #13888 > > 00:13:34 v #13889 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13890 > > inl let' fn = 00:13:34 v #13891 > > inl result : unit = 00:13:34 v #13892 > > backend_switch { 00:13:34 v #13893 > > Fsharp = fun () => 00:13:34 v #13894 > > $'()' : unit 00:13:34 v #13895 > > Python = fun () => 00:13:34 v #13896 > > $'None' : unit 00:13:34 v #13897 > > } 00:13:34 v #13898 > > backend_switch { 00:13:34 v #13899 > > Fsharp = fun () => 00:13:34 v #13900 > > $'let _let\'_!result =' : () 00:13:34 v #13901 > > fn |> indent 00:13:34 v #13902 > > Python = fun () => 00:13:34 v #13903 > > $'def _let\'_!result():' : () 00:13:34 v #13904 > > fn |> indent 00:13:34 v #13905 > > } 00:13:34 v #13906 > > $'_let\'_!result ' 00:13:34 v #13907 > > 00:13:34 v #13908 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13909 > > │ ### exec_unit 00:13:34 v #13910 > > 00:13:34 v #13911 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13912 > > inl exec_unit (fn : () -> ()) : () = 00:13:34 v #13913 > > backend_switch { 00:13:34 v #13914 > > Fsharp = fun () => 00:13:34 v #13915 > > inl unit = $'()' : $'unit' 00:13:34 v #13916 > > ($'(fun () -> !fn (); !unit) ()' : $'unit') |> ignore 00:13:34 v #13917 > > Python = fun () => fn () 00:13:34 v #13918 > > } 00:13:34 v #13919 > > 00:13:34 v #13920 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13921 > > │ ### lazy 00:13:34 v #13922 > > 00:13:34 v #13923 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13924 > > nominal lazy t = $'Lazy<`t>' 00:13:34 v #13925 > > 00:13:34 v #13926 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:34 v #13927 > > │ ### memoize 00:13:34 v #13928 > > 00:13:34 v #13929 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13930 > > nominal lazy t = $'Lazy<`t>' 00:13:34 v #13931 > > 00:13:34 v #13932 > > inl memoize forall t. (fn : () -> t) : () -> t = 00:13:34 v #13933 > > inl fn = join fn 00:13:34 v #13934 > > backend_switch { 00:13:34 v #13935 > > Fsharp = fun () => 00:13:34 v #13936 > > inl result : lazy t = $'lazy !fn ()' 00:13:34 v #13937 > > fun () => $'!result.Value' : t 00:13:34 v #13938 > > Python = fun () => 00:13:34 v #13939 > > inl result = mut None 00:13:34 v #13940 > > inl computed = mut false 00:13:34 v #13941 > > fun () => 00:13:34 v #13942 > > if *computed 00:13:34 v #13943 > > then *result 00:13:34 v #13944 > > else 00:13:34 v #13945 > > result <- fn () |> Some 00:13:34 v #13946 > > computed <- true 00:13:34 v #13947 > > *result 00:13:34 v #13948 > > |> optionm.value 00:13:34 v #13949 > > } 00:13:34 v #13950 > > 00:13:34 v #13951 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:34 v #13952 > > //// test 00:13:34 v #13953 > > ///! fsharp 00:13:34 v #13954 > > ///! cuda 00:13:34 v #13955 > > ///! rust 00:13:34 v #13956 > > ///! typescript 00:13:34 v #13957 > > ///! python 00:13:34 v #13958 > > 00:13:34 v #13959 > > inl count = mut 0i32 00:13:34 v #13960 > > inl add = 00:13:34 v #13961 > > fun () => 00:13:34 v #13962 > > count <- *count + 1 00:13:34 v #13963 > > count 00:13:34 v #13964 > > |> memoize 00:13:34 v #13965 > > 00:13:34 v #13966 > > add () |> ignore 00:13:34 v #13967 > > add () |> ignore 00:13:34 v #13968 > > add () |> ignore 00:13:34 v #13969 > > 00:13:34 v #13970 > > *count 00:13:34 v #13971 > > |> _assert_eq 1 00:13:44 v #13972 > > 00:13:44 v #13973 > > ── [ 9.14s - return value ] ──────────────────────────────────────────────────── 00:13:44 v #13974 > > │ .py output (Cuda): 00:13:44 v #13975 > > │ __assert_eq / actual: 1 / expected: 1 00:13:44 v #13976 > > │ 00:13:44 v #13977 > > │ .rs output: 00:13:44 v #13978 > > │ __assert_eq / actual: 1 / expected: 1 00:13:44 v #13979 > > │ 00:13:44 v #13980 > > │ .ts output: 00:13:44 v #13981 > > │ __assert_eq / actual: 1 / expected: 1 00:13:44 v #13982 > > │ 00:13:44 v #13983 > > │ .py output: 00:13:44 v #13984 > > │ __assert_eq / actual: 1 / expected: 1 00:13:44 v #13985 > > │ 00:13:44 v #13986 > > │ 00:13:44 v #13987 > > 00:13:44 v #13988 > > ── [ 9.14s - stdout ] ────────────────────────────────────────────────────────── 00:13:44 v #13989 > > │ .fsx output: 00:13:44 v #13990 > > │ __assert_eq / actual: 1 / expected: 1 00:13:44 v #13991 > > │ 00:13:44 v #13992 > > 00:13:44 v #13993 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:44 v #13994 > > │ ### capture 00:13:44 v #13995 > > 00:13:44 v #13996 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:44 v #13997 > > inl capture forall t. (fn : () -> t) : t = 00:13:44 v #13998 > > backend_switch { 00:13:44 v #13999 > > Fsharp = fun () => 00:13:44 v #14000 > > inl result = dyn true 00:13:44 v #14001 > > $'let mutable _capture_!result : `t option = None ' 00:13:44 v #14002 > > $'(' 00:13:44 v #14003 > > $'(fun () ->' 00:13:44 v #14004 > > $'(fun () ->' 00:13:44 v #14005 > > fn () |> emit_unit 00:13:44 v #14006 > > $')' 00:13:44 v #14007 > > $'|> fun x -> x ()' 00:13:44 v #14008 > > $') () )' 00:13:44 v #14009 > > $'|> fun x -> _capture_!result <- Some x' 00:13:44 v #14010 > > $'match _capture_!result with Some x -> x | None -> failwith 00:13:44 v #14011 > > "base.capture / _capture_!result=None"' : t 00:13:44 v #14012 > > Python = fun () => 00:13:44 v #14013 > > fn () 00:13:44 v #14014 > > } 00:13:44 v #14015 > > 00:13:44 v #14016 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:44 v #14017 > > │ ### yield_from 00:13:44 v #14018 > > 00:13:44 v #14019 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:44 v #14020 > > inl yield_from forall (t : * -> *) u. (a : t u) : () = 00:13:44 v #14021 > > backend_switch { 00:13:44 v #14022 > > Fsharp = fun () => $'yield\! !a ' : () 00:13:44 v #14023 > > Python = fun () => $'asyncio.run(!a())' : () 00:13:44 v #14024 > > } 00:13:44 v #14025 > > 00:13:44 v #14026 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:13:44 v #14027 > > │ ### join_body 00:13:44 v #14028 > > 00:13:44 v #14029 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:44 v #14030 > > inl join_body body acc x = 00:13:44 v #14031 > > if var_is x |> not 00:13:44 v #14032 > > then body acc x 00:13:44 v #14033 > > else 00:13:44 v #14034 > > inl acc = dyn acc 00:13:44 v #14035 > > join body acc x 00:13:44 v #14036 > > 00:13:44 v #14037 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:44 v #14038 > > //// test 00:13:44 v #14039 > > 00:13:44 v #14040 > > inl rec fold_list f s = function 00:13:44 v #14041 > > | Cons (x, x') => fold_list f (f s x) x' 00:13:44 v #14042 > > | Nil => s 00:13:44 v #14043 > > 00:13:44 v #14044 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:44 v #14045 > > //// test 00:13:44 v #14046 > > ///! fsharp 00:13:44 v #14047 > > ///! cuda 00:13:44 v #14048 > > ///! rust 00:13:44 v #14049 > > ///! typescript 00:13:44 v #14050 > > ///! python 00:13:44 v #14051 > > //// print_code 00:13:44 v #14052 > > 00:13:44 v #14053 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:13:44 v #14054 > > |> fold_list (+) 0 00:13:44 v #14055 > > |> _assert_eq 15 00:13:52 v #14056 > > 00:13:52 v #14057 > > ── [ 7.83s - return value ] ──────────────────────────────────────────────────── 00:13:52 v #14058 > > │ .py output (Cuda): 00:13:52 v #14059 > > │ __assert_eq / actual: 15 / expected: 15 00:13:52 v #14060 > > │ 00:13:52 v #14061 > > │ .rs output: 00:13:52 v #14062 > > │ __assert_eq / actual: 15 / expected: 15 00:13:52 v #14063 > > │ 00:13:52 v #14064 > > │ .ts output: 00:13:52 v #14065 > > │ __assert_eq / actual: 15 / expected: 15 00:13:52 v #14066 > > │ 00:13:52 v #14067 > > │ .py output: 00:13:52 v #14068 > > │ __assert_eq / actual: 15 / expected: 15 00:13:52 v #14069 > > │ 00:13:52 v #14070 > > │ 00:13:52 v #14071 > > │ 00:13:52 v #14072 > > │ 00:13:52 v #14073 > > 00:13:52 v #14074 > > ── [ 7.83s - stdout ] ────────────────────────────────────────────────────────── 00:13:52 v #14075 > > │ .fsx: 00:13:52 v #14076 > > │ let rec method1 () : int32 = 00:13:52 v #14077 > > │ 3 00:13:52 v #14078 > > │ and method2 (v0 : bool) : bool = 00:13:52 v #14079 > > │ v0 00:13:52 v #14080 > > │ and closure0 (v0 : string) () : unit = 00:13:52 v #14081 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:13:52 v #14082 > > │ v1 v0 00:13:52 v #14083 > > │ and method0 () : unit = 00:13:52 v #14084 > > │ let v0 : int32 = method1() 00:13:52 v #14085 > > │ let v1 : int32 = 9 + v0 00:13:52 v #14086 > > │ let v2 : int32 = v1 + 2 00:13:52 v #14087 > > │ let v3 : int32 = v2 + 1 00:13:52 v #14088 > > │ let v4 : bool = v3 = 15 00:13:52 v #14089 > > │ let v6 : bool = 00:13:52 v #14090 > > │ if v4 then 00:13:52 v #14091 > > │ true 00:13:52 v #14092 > > │ else 00:13:52 v #14093 > > │ method2(v4) 00:13:52 v #14094 > > │ let v7 : string = "__assert_eq" 00:13:52 v #14095 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: 00:13:52 v #14096 > > %A{15}" 00:13:52 v #14097 > > │ let v11 : unit = () 00:13:52 v #14098 > > │ let v12 : (unit -> unit) = closure0(v8) 00:13:52 v #14099 > > │ let v13 : unit = (fun () -> v12 (); v11) () 00:13:52 v #14100 > > │ let v15 : bool = v6 = false 00:13:52 v #14101 > > │ if v15 then 00:13:52 v #14102 > > │ failwith<unit> v8 00:13:52 v #14103 > > │ method0() 00:13:52 v #14104 > > │ 00:13:52 v #14105 > > │ 00:13:52 v #14106 > > │ .rs: 00:13:52 v #14107 > > │ #![allow(dead_code)] 00:13:52 v #14108 > > │ #![allow(non_camel_case_types)] 00:13:52 v #14109 > > │ #![allow(non_snake_case)] 00:13:52 v #14110 > > │ #![allow(non_upper_case_globals)] 00:13:52 v #14111 > > │ #![allow(unreachable_code)] 00:13:52 v #14112 > > │ #![allow(unused_attributes)] 00:13:52 v #14113 > > │ #![allow(unused_imports)] 00:13:52 v #14114 > > │ #![allow(unused_macros)] 00:13:52 v #14115 > > │ #![allow(unused_parens)] 00:13:52 v #14116 > > │ #![allow(unused_variables)] 00:13:52 v #14117 > > │ #![allow(unused_assignments)] 00:13:52 v #14118 > > │ mod module_6ff740fe { 00:13:52 v #14119 > > │ pub mod Spiral { 00:13:52 v #14120 > > │ use super::*; 00:13:52 v #14121 > > │ use fable_library_rust::Native_::on_startup; 00:13:52 v #14122 > > │ use fable_library_rust::String_::printfn; 00:13:52 v #14123 > > │ use fable_library_rust::String_::sprintf; 00:13:52 v #14124 > > │ use fable_library_rust::String_::string; 00:13:52 v #14125 > > │ pub fn method1() -> i32 { 00:13:52 v #14126 > > │ 3_i32 00:13:52 v #14127 > > │ } 00:13:52 v #14128 > > │ pub fn method2(v0: bool) -> bool { 00:13:52 v #14129 > > │ v0 00:13:52 v #14130 > > │ } 00:13:52 v #14131 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:13:52 v #14132 > > │ printfn!("{0}", v0); 00:13:52 v #14133 > > │ } 00:13:52 v #14134 > > │ pub fn method0() { 00:13:52 v #14135 > > │ let v3: i32 = ((9_i32 + (Spiral::method1())) + 00:13:52 v #14136 > > 2_i32) + 1_i32; 00:13:52 v #14137 > > │ let v4: bool = (v3) == 15_i32; 00:13:52 v #14138 > > │ let v6: bool = if v4 { true } else { 00:13:52 v #14139 > > Spiral::method2(v4) }; 00:13:52 v #14140 > > │ let v8: string = sprintf!( 00:13:52 v #14141 > > │ "{} / actual: {:?} / expected: {:?}", 00:13:52 v #14142 > > │ string("__assert_eq"), 00:13:52 v #14143 > > │ v3, 00:13:52 v #14144 > > │ 15_i32 00:13:52 v #14145 > > │ ); 00:13:52 v #14146 > > │ let v13: () = { 00:13:52 v #14147 > > │ Spiral::closure0(v8.clone(), ()); 00:13:52 v #14148 > > │ () 00:13:52 v #14149 > > │ }; 00:13:52 v #14150 > > │ if (v6) == false { 00:13:52 v #14151 > > │ panic!("{}", v8,); 00:13:52 v #14152 > > │ } 00:13:52 v #14153 > > │ } 00:13:52 v #14154 > > │ // on_startup!(Spiral::method0()); 00:13:52 v #14155 > > │ } 00:13:52 v #14156 > > │ } 00:13:52 v #14157 > > │ pub use module_6ff740fe::*; 00:13:52 v #14158 > > │ 00:13:52 v #14159 > > │ 00:13:52 v #14160 > > │ 00:13:52 v #14161 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:13:52 v #14162 > > │ 00:13:52 v #14163 > > │ .ts: 00:13:52 v #14164 > > │ import { int32 } from 00:13:52 v #14165 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; 00:13:52 v #14166 > > │ import { interpolate, toText } from 00:13:52 v #14167 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:13:52 v #14168 > > │ 00:13:52 v #14169 > > │ export function method1(): int32 { 00:13:52 v #14170 > > │ return 3; 00:13:52 v #14171 > > │ } 00:13:52 v #14172 > > │ 00:13:52 v #14173 > > │ export function method2(v0: boolean): boolean { 00:13:52 v #14174 > > │ return v0; 00:13:52 v #14175 > > │ } 00:13:52 v #14176 > > │ 00:13:52 v #14177 > > │ export function closure0(v0: string, unitVar: void): void { 00:13:52 v #14178 > > │ console.log(v0); 00:13:52 v #14179 > > │ } 00:13:52 v #14180 > > │ 00:13:52 v #14181 > > │ export function method0(): void { 00:13:52 v #14182 > > │ const v3: int32 = (((9 + method1()) + 2) + 1) | 0; 00:13:52 v #14183 > > │ const v4: boolean = v3 === 15; 00:13:52 v #14184 > > │ const v6: boolean = v4 ? true : method2(v4); 00:13:52 v #14185 > > │ const v8: string = toText(interpolate("%P() / actual: 00:13:52 v #14186 > > %A%P() / expected: %A%P()", ["__assert_eq", v3, 15])); 00:13:52 v #14187 > > │ let v13: any; 00:13:52 v #14188 > > │ closure0(v8, undefined); 00:13:52 v #14189 > > │ v13 = undefined; 00:13:52 v #14190 > > │ if (v6 === false) { 00:13:52 v #14191 > > │ throw new Error(v8); 00:13:52 v #14192 > > │ } 00:13:52 v #14193 > > │ } 00:13:52 v #14194 > > │ 00:13:52 v #14195 > > │ method0(); 00:13:52 v #14196 > > │ 00:13:52 v #14197 > > │ 00:13:52 v #14198 > > │ .py: 00:13:52 v #14199 > > │ from fable_modules.fable_library.string_ import (to_text, 00:13:52 v #14200 > > interpolate) 00:13:52 v #14201 > > │ 00:13:52 v #14202 > > │ def method1(__unit: None=None) -> int: 00:13:52 v #14203 > > │ return 3 00:13:52 v #14204 > > │ 00:13:52 v #14205 > > │ 00:13:52 v #14206 > > │ def method2(v0: bool) -> bool: 00:13:52 v #14207 > > │ return v0 00:13:52 v #14208 > > │ 00:13:52 v #14209 > > │ 00:13:52 v #14210 > > │ def closure0(v0: str, unit_var: None) -> None: 00:13:52 v #14211 > > │ print(v0) 00:13:52 v #14212 > > │ 00:13:52 v #14213 > > │ 00:13:52 v #14214 > > │ def method0(__unit: None=None) -> None: 00:13:52 v #14215 > > │ v3: int = (((9 + method1()) + 2) + 1) or 0 00:13:52 v #14216 > > │ v4: bool = v3 == 15 00:13:52 v #14217 > > │ v6: bool = True if v4 else method2(v4) 00:13:52 v #14218 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() 00:13:52 v #14219 > > expected: %A%P()", ["__assert_eq", v3, 15])) 00:13:52 v #14220 > > │ v13: None 00:13:52 v #14221 > > │ closure0(v8, None) 00:13:52 v #14222 > > │ v13 = None 00:13:52 v #14223 > > │ if v6 == False: 00:13:52 v #14224 > > │ raise Exception(v8) 00:13:52 v #14225 > > │ 00:13:52 v #14226 > > │ 00:13:52 v #14227 > > │ 00:13:52 v #14228 > > │ method0() 00:13:52 v #14229 > > │ 00:13:52 v #14230 > > │ 00:13:52 v #14231 > > │ .py (Cuda): 00:13:52 v #14232 > > │ kernel = r""" 00:13:52 v #14233 > > │ """ 00:13:52 v #14234 > > │ class static_array(): 00:13:52 v #14235 > > │ def __init__(self, length): 00:13:52 v #14236 > > │ self.ptr = [] 00:13:52 v #14237 > > │ for _ in range(length): 00:13:52 v #14238 > > │ self.ptr.append(None) 00:13:52 v #14239 > > │ 00:13:52 v #14240 > > │ def __getitem__(self, index): 00:13:52 v #14241 > > │ assert 0 <= index < len(self.ptr), "The get index 00:13:52 v #14242 > > needs to be in range." 00:13:52 v #14243 > > │ return self.ptr[index] 00:13:52 v #14244 > > │ 00:13:52 v #14245 > > │ def __setitem__(self, index, value): 00:13:52 v #14246 > > │ assert 0 <= index < len(self.ptr), "The set index 00:13:52 v #14247 > > needs to be in range." 00:13:52 v #14248 > > │ self.ptr[index] = value 00:13:52 v #14249 > > │ 00:13:52 v #14250 > > │ class static_array_list(static_array): 00:13:52 v #14251 > > │ def __init__(self, length): 00:13:52 v #14252 > > │ super().__init__(length) 00:13:52 v #14253 > > │ self.length = 0 00:13:52 v #14254 > > │ 00:13:52 v #14255 > > │ def __getitem__(self, index): 00:13:52 v #14256 > > │ assert 0 <= index < self.length, "The get index needs 00:13:52 v #14257 > > to be in range." 00:13:52 v #14258 > > │ return self.ptr[index] 00:13:52 v #14259 > > │ 00:13:52 v #14260 > > │ def __setitem__(self, index, value): 00:13:52 v #14261 > > │ assert 0 <= index < self.length, "The set index needs 00:13:52 v #14262 > > to be in range." 00:13:52 v #14263 > > │ self.ptr[index] = value 00:13:52 v #14264 > > │ 00:13:52 v #14265 > > │ def push(self,value): 00:13:52 v #14266 > > │ assert (self.length < len(self.ptr)), "The length 00:13:52 v #14267 > > before pushing has to be less than the maximum length of the array." 00:13:52 v #14268 > > │ self.ptr[self.length] = value 00:13:52 v #14269 > > │ self.length += 1 00:13:52 v #14270 > > │ 00:13:52 v #14271 > > │ def pop(self): 00:13:52 v #14272 > > │ assert (0 < self.length), "The length before popping 00:13:52 v #14273 > > has to be greater than 0." 00:13:52 v #14274 > > │ self.length -= 1 00:13:52 v #14275 > > │ return self.ptr[self.length] 00:13:52 v #14276 > > │ 00:13:52 v #14277 > > │ def unsafe_set_length(self,i): 00:13:52 v #14278 > > │ assert 0 <= i <= len(self.ptr), "The new length has 00:13:52 v #14279 > > to be in range." 00:13:52 v #14280 > > │ self.length = i 00:13:52 v #14281 > > │ 00:13:52 v #14282 > > │ class dynamic_array(static_array): 00:13:52 v #14283 > > │ pass 00:13:52 v #14284 > > │ 00:13:52 v #14285 > > │ class dynamic_array_list(static_array_list): 00:13:52 v #14286 > > │ def length_(self): return self.length 00:13:52 v #14287 > > │ 00:13:52 v #14288 > > │ import cupy as cp 00:13:52 v #14289 > > │ import numpy as np 00:13:52 v #14290 > > │ from dataclasses import dataclass 00:13:52 v #14291 > > │ from typing import NamedTuple, Union, Callable, Tuple 00:13:52 v #14292 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 00:13:52 v #14293 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str 00:13:52 v #14294 > > │ cuda = False 00:13:52 v #14295 > > │ 00:13:52 v #14296 > > │ def method1() -> i32: 00:13:52 v #14297 > > │ return 3 00:13:52 v #14298 > > │ def method2(v0 : bool) -> bool: 00:13:52 v #14299 > > │ return v0 00:13:52 v #14300 > > │ def method0() -> None: 00:13:52 v #14301 > > │ v0 = method1() 00:13:52 v #14302 > > │ v1 = 9 + v0 00:13:52 v #14303 > > │ del v0 00:13:52 v #14304 > > │ v2 = v1 + 2 00:13:52 v #14305 > > │ del v1 00:13:52 v #14306 > > │ v3 = v2 + 1 00:13:52 v #14307 > > │ del v2 00:13:52 v #14308 > > │ v4 = v3 == 15 00:13:52 v #14309 > > │ if v4: 00:13:52 v #14310 > > │ v6 = True 00:13:52 v #14311 > > │ else: 00:13:52 v #14312 > > │ v6 = method2(v4) 00:13:52 v #14313 > > │ del v4 00:13:52 v #14314 > > │ v9 = "__assert_eq" 00:13:52 v #14315 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" 00:13:52 v #14316 > > │ del v3, v9 00:13:52 v #14317 > > │ print(v10) 00:13:52 v #14318 > > │ v16 = v6 == False 00:13:52 v #14319 > > │ del v6 00:13:52 v #14320 > > │ if v16: 00:13:52 v #14321 > > │ del v16 00:13:52 v #14322 > > │ raise Exception(v10) 00:13:52 v #14323 > > │ else: 00:13:52 v #14324 > > │ del v10, v16 00:13:52 v #14325 > > │ return 00:13:52 v #14326 > > │ def main_body(): 00:13:52 v #14327 > > │ return method0() 00:13:52 v #14328 > > │ 00:13:52 v #14329 > > │ def main(): 00:13:52 v #14330 > > │ r = main_body() 00:13:52 v #14331 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # 00:13:52 v #14332 > > This line is here so the `__trap()` calls on the kernel aren't missed. 00:13:52 v #14333 > > │ return r 00:13:52 v #14334 > > │ 00:13:52 v #14335 > > │ if __name__ == '__main__': result = main(); None if result is 00:13:52 v #14336 > > None else print(result) 00:13:52 v #14337 > > │ 00:13:52 v #14338 > > │ .fsx output: 00:13:52 v #14339 > > │ __assert_eq / actual: 15 / expected: 15 00:13:52 v #14340 > > │ 00:13:52 v #14341 > > 00:13:52 v #14342 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:13:52 v #14343 > > //// test 00:13:52 v #14344 > > ///! fsharp 00:13:52 v #14345 > > ///! cuda 00:13:52 v #14346 > > ///! rust 00:13:52 v #14347 > > ///! typescript 00:13:52 v #14348 > > ///! python 00:13:52 v #14349 > > //// print_code 00:13:52 v #14350 > > 00:13:52 v #14351 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:13:52 v #14352 > > |> fold_list (join_body (+)) 0 00:13:52 v #14353 > > |> _assert_eq 15 00:14:00 v #14354 > > 00:14:00 v #14355 > > ── [ 7.97s - return value ] ──────────────────────────────────────────────────── 00:14:00 v #14356 > > │ .py output (Cuda): 00:14:00 v #14357 > > │ __assert_eq / actual: 15 / expected: 15 00:14:00 v #14358 > > │ 00:14:00 v #14359 > > │ .rs output: 00:14:00 v #14360 > > │ __assert_eq / actual: 15 / expected: 15 00:14:00 v #14361 > > │ 00:14:00 v #14362 > > │ .ts output: 00:14:00 v #14363 > > │ __assert_eq / actual: 15 / expected: 15 00:14:00 v #14364 > > │ 00:14:00 v #14365 > > │ .py output: 00:14:00 v #14366 > > │ __assert_eq / actual: 15 / expected: 15 00:14:00 v #14367 > > │ 00:14:00 v #14368 > > │ 00:14:00 v #14369 > > │ 00:14:00 v #14370 > > │ 00:14:00 v #14371 > > 00:14:00 v #14372 > > ── [ 7.97s - stdout ] ────────────────────────────────────────────────────────── 00:14:00 v #14373 > > │ .fsx: 00:14:00 v #14374 > > │ let rec method1 () : int32 = 00:14:00 v #14375 > > │ 3 00:14:00 v #14376 > > │ and method2 (v0 : int32, v1 : int32) : int32 = 00:14:00 v #14377 > > │ let v2 : int32 = v1 + v0 00:14:00 v #14378 > > │ v2 00:14:00 v #14379 > > │ and method3 (v0 : bool) : bool = 00:14:00 v #14380 > > │ v0 00:14:00 v #14381 > > │ and closure0 (v0 : string) () : unit = 00:14:00 v #14382 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:14:00 v #14383 > > │ v1 v0 00:14:00 v #14384 > > │ and method0 () : unit = 00:14:00 v #14385 > > │ let v0 : int32 = method1() 00:14:00 v #14386 > > │ let v1 : int32 = 9 00:14:00 v #14387 > > │ let v2 : int32 = method2(v0, v1) 00:14:00 v #14388 > > │ let v3 : int32 = v2 + 2 00:14:00 v #14389 > > │ let v4 : int32 = v3 + 1 00:14:00 v #14390 > > │ let v5 : bool = v4 = 15 00:14:00 v #14391 > > │ let v7 : bool = 00:14:00 v #14392 > > │ if v5 then 00:14:00 v #14393 > > │ true 00:14:00 v #14394 > > │ else 00:14:00 v #14395 > > │ method3(v5) 00:14:00 v #14396 > > │ let v8 : string = "__assert_eq" 00:14:00 v #14397 > > │ let v9 : string = $"{v8} / actual: %A{v4} / expected: 00:14:00 v #14398 > > %A{15}" 00:14:00 v #14399 > > │ let v12 : unit = () 00:14:00 v #14400 > > │ let v13 : (unit -> unit) = closure0(v9) 00:14:00 v #14401 > > │ let v14 : unit = (fun () -> v13 (); v12) () 00:14:00 v #14402 > > │ let v16 : bool = v7 = false 00:14:00 v #14403 > > │ if v16 then 00:14:00 v #14404 > > │ failwith<unit> v9 00:14:00 v #14405 > > │ method0() 00:14:00 v #14406 > > │ 00:14:00 v #14407 > > │ 00:14:00 v #14408 > > │ .rs: 00:14:00 v #14409 > > │ #![allow(dead_code)] 00:14:00 v #14410 > > │ #![allow(non_camel_case_types)] 00:14:00 v #14411 > > │ #![allow(non_snake_case)] 00:14:00 v #14412 > > │ #![allow(non_upper_case_globals)] 00:14:00 v #14413 > > │ #![allow(unreachable_code)] 00:14:00 v #14414 > > │ #![allow(unused_attributes)] 00:14:00 v #14415 > > │ #![allow(unused_imports)] 00:14:00 v #14416 > > │ #![allow(unused_macros)] 00:14:00 v #14417 > > │ #![allow(unused_parens)] 00:14:00 v #14418 > > │ #![allow(unused_variables)] 00:14:00 v #14419 > > │ #![allow(unused_assignments)] 00:14:00 v #14420 > > │ mod module_6ff740fe { 00:14:00 v #14421 > > │ pub mod Spiral { 00:14:00 v #14422 > > │ use super::*; 00:14:00 v #14423 > > │ use fable_library_rust::Native_::on_startup; 00:14:00 v #14424 > > │ use fable_library_rust::String_::printfn; 00:14:00 v #14425 > > │ use fable_library_rust::String_::sprintf; 00:14:00 v #14426 > > │ use fable_library_rust::String_::string; 00:14:00 v #14427 > > │ pub fn method1() -> i32 { 00:14:00 v #14428 > > │ 3_i32 00:14:00 v #14429 > > │ } 00:14:00 v #14430 > > │ pub fn method2(v0: i32, v1: i32) -> i32 { 00:14:00 v #14431 > > │ (v1) + (v0) 00:14:00 v #14432 > > │ } 00:14:00 v #14433 > > │ pub fn method3(v0: bool) -> bool { 00:14:00 v #14434 > > │ v0 00:14:00 v #14435 > > │ } 00:14:00 v #14436 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:14:00 v #14437 > > │ printfn!("{0}", v0); 00:14:00 v #14438 > > │ } 00:14:00 v #14439 > > │ pub fn method0() { 00:14:00 v #14440 > > │ let v4: i32 = 00:14:00 v #14441 > > ((Spiral::method2(Spiral::method1(), 9_i32)) + 2_i32) + 1_i32; 00:14:00 v #14442 > > │ let v5: bool = (v4) == 15_i32; 00:14:00 v #14443 > > │ let v7: bool = if v5 { true } else { 00:14:00 v #14444 > > Spiral::method3(v5) }; 00:14:00 v #14445 > > │ let v9: string = sprintf!( 00:14:00 v #14446 > > │ "{} / actual: {:?} / expected: {:?}", 00:14:00 v #14447 > > │ string("__assert_eq"), 00:14:00 v #14448 > > │ v4, 00:14:00 v #14449 > > │ 15_i32 00:14:00 v #14450 > > │ ); 00:14:00 v #14451 > > │ let v14: () = { 00:14:00 v #14452 > > │ Spiral::closure0(v9.clone(), ()); 00:14:00 v #14453 > > │ () 00:14:00 v #14454 > > │ }; 00:14:00 v #14455 > > │ if (v7) == false { 00:14:00 v #14456 > > │ panic!("{}", v9,); 00:14:00 v #14457 > > │ } 00:14:00 v #14458 > > │ } 00:14:00 v #14459 > > │ // on_startup!(Spiral::method0()); 00:14:00 v #14460 > > │ } 00:14:00 v #14461 > > │ } 00:14:00 v #14462 > > │ pub use module_6ff740fe::*; 00:14:00 v #14463 > > │ 00:14:00 v #14464 > > │ 00:14:00 v #14465 > > │ 00:14:00 v #14466 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:14:00 v #14467 > > │ 00:14:00 v #14468 > > │ .ts: 00:14:00 v #14469 > > │ import { int32 } from 00:14:00 v #14470 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; 00:14:00 v #14471 > > │ import { interpolate, toText } from 00:14:00 v #14472 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:14:00 v #14473 > > │ 00:14:00 v #14474 > > │ export function method1(): int32 { 00:14:00 v #14475 > > │ return 3; 00:14:00 v #14476 > > │ } 00:14:00 v #14477 > > │ 00:14:00 v #14478 > > │ export function method2(v0: int32, v1: int32): int32 { 00:14:00 v #14479 > > │ return v1 + v0; 00:14:00 v #14480 > > │ } 00:14:00 v #14481 > > │ 00:14:00 v #14482 > > │ export function method3(v0: boolean): boolean { 00:14:00 v #14483 > > │ return v0; 00:14:00 v #14484 > > │ } 00:14:00 v #14485 > > │ 00:14:00 v #14486 > > │ export function closure0(v0: string, unitVar: void): void { 00:14:00 v #14487 > > │ console.log(v0); 00:14:00 v #14488 > > │ } 00:14:00 v #14489 > > │ 00:14:00 v #14490 > > │ export function method0(): void { 00:14:00 v #14491 > > │ const v4: int32 = ((method2(method1(), 9) + 2) + 1) | 0; 00:14:00 v #14492 > > │ const v5: boolean = v4 === 15; 00:14:00 v #14493 > > │ const v7: boolean = v5 ? true : method3(v5); 00:14:00 v #14494 > > │ const v9: string = toText(interpolate("%P() / actual: 00:14:00 v #14495 > > %A%P() / expected: %A%P()", ["__assert_eq", v4, 15])); 00:14:00 v #14496 > > │ let v14: any; 00:14:00 v #14497 > > │ closure0(v9, undefined); 00:14:00 v #14498 > > │ v14 = undefined; 00:14:00 v #14499 > > │ if (v7 === false) { 00:14:00 v #14500 > > │ throw new Error(v9); 00:14:00 v #14501 > > │ } 00:14:00 v #14502 > > │ } 00:14:00 v #14503 > > │ 00:14:00 v #14504 > > │ method0(); 00:14:00 v #14505 > > │ 00:14:00 v #14506 > > │ 00:14:00 v #14507 > > │ .py: 00:14:00 v #14508 > > │ from fable_modules.fable_library.string_ import (to_text, 00:14:00 v #14509 > > interpolate) 00:14:00 v #14510 > > │ 00:14:00 v #14511 > > │ def method1(__unit: None=None) -> int: 00:14:00 v #14512 > > │ return 3 00:14:00 v #14513 > > │ 00:14:00 v #14514 > > │ 00:14:00 v #14515 > > │ def method2(v0: int, v1: int) -> int: 00:14:00 v #14516 > > │ return v1 + v0 00:14:00 v #14517 > > │ 00:14:00 v #14518 > > │ 00:14:00 v #14519 > > │ def method3(v0: bool) -> bool: 00:14:00 v #14520 > > │ return v0 00:14:00 v #14521 > > │ 00:14:00 v #14522 > > │ 00:14:00 v #14523 > > │ def closure0(v0: str, unit_var: None) -> None: 00:14:00 v #14524 > > │ print(v0) 00:14:00 v #14525 > > │ 00:14:00 v #14526 > > │ 00:14:00 v #14527 > > │ def method0(__unit: None=None) -> None: 00:14:00 v #14528 > > │ v4: int = ((method2(method1(), 9) + 2) + 1) or 0 00:14:00 v #14529 > > │ v5: bool = v4 == 15 00:14:00 v #14530 > > │ v7: bool = True if v5 else method3(v5) 00:14:00 v #14531 > > │ v9: str = to_text(interpolate("%P() / actual: %A%P() 00:14:00 v #14532 > > expected: %A%P()", ["__assert_eq", v4, 15])) 00:14:00 v #14533 > > │ v14: None 00:14:00 v #14534 > > │ closure0(v9, None) 00:14:00 v #14535 > > │ v14 = None 00:14:00 v #14536 > > │ if v7 == False: 00:14:00 v #14537 > > │ raise Exception(v9) 00:14:00 v #14538 > > │ 00:14:00 v #14539 > > │ 00:14:00 v #14540 > > │ 00:14:00 v #14541 > > │ method0() 00:14:00 v #14542 > > │ 00:14:00 v #14543 > > │ 00:14:00 v #14544 > > │ .py (Cuda): 00:14:00 v #14545 > > │ kernel = r""" 00:14:00 v #14546 > > │ """ 00:14:00 v #14547 > > │ class static_array(): 00:14:00 v #14548 > > │ def __init__(self, length): 00:14:00 v #14549 > > │ self.ptr = [] 00:14:00 v #14550 > > │ for _ in range(length): 00:14:00 v #14551 > > │ self.ptr.append(None) 00:14:00 v #14552 > > │ 00:14:00 v #14553 > > │ def __getitem__(self, index): 00:14:00 v #14554 > > │ assert 0 <= index < len(self.ptr), "The get index 00:14:00 v #14555 > > needs to be in range." 00:14:00 v #14556 > > │ return self.ptr[index] 00:14:00 v #14557 > > │ 00:14:00 v #14558 > > │ def __setitem__(self, index, value): 00:14:00 v #14559 > > │ assert 0 <= index < len(self.ptr), "The set index 00:14:00 v #14560 > > needs to be in range." 00:14:00 v #14561 > > │ self.ptr[index] = value 00:14:00 v #14562 > > │ 00:14:00 v #14563 > > │ class static_array_list(static_array): 00:14:00 v #14564 > > │ def __init__(self, length): 00:14:00 v #14565 > > │ super().__init__(length) 00:14:00 v #14566 > > │ self.length = 0 00:14:00 v #14567 > > │ 00:14:00 v #14568 > > │ def __getitem__(self, index): 00:14:00 v #14569 > > │ assert 0 <= index < self.length, "The get index needs 00:14:00 v #14570 > > to be in range." 00:14:00 v #14571 > > │ return self.ptr[index] 00:14:00 v #14572 > > │ 00:14:00 v #14573 > > │ def __setitem__(self, index, value): 00:14:00 v #14574 > > │ assert 0 <= index < self.length, "The set index needs 00:14:00 v #14575 > > to be in range." 00:14:00 v #14576 > > │ self.ptr[index] = value 00:14:00 v #14577 > > │ 00:14:00 v #14578 > > │ def push(self,value): 00:14:00 v #14579 > > │ assert (self.length < len(self.ptr)), "The length 00:14:00 v #14580 > > before pushing has to be less than the maximum length of the array." 00:14:00 v #14581 > > │ self.ptr[self.length] = value 00:14:00 v #14582 > > │ self.length += 1 00:14:00 v #14583 > > │ 00:14:00 v #14584 > > │ def pop(self): 00:14:00 v #14585 > > │ assert (0 < self.length), "The length before popping 00:14:00 v #14586 > > has to be greater than 0." 00:14:00 v #14587 > > │ self.length -= 1 00:14:00 v #14588 > > │ return self.ptr[self.length] 00:14:00 v #14589 > > │ 00:14:00 v #14590 > > │ def unsafe_set_length(self,i): 00:14:00 v #14591 > > │ assert 0 <= i <= len(self.ptr), "The new length has 00:14:00 v #14592 > > to be in range." 00:14:00 v #14593 > > │ self.length = i 00:14:00 v #14594 > > │ 00:14:00 v #14595 > > │ class dynamic_array(static_array): 00:14:00 v #14596 > > │ pass 00:14:00 v #14597 > > │ 00:14:00 v #14598 > > │ class dynamic_array_list(static_array_list): 00:14:00 v #14599 > > │ def length_(self): return self.length 00:14:00 v #14600 > > │ 00:14:00 v #14601 > > │ import cupy as cp 00:14:00 v #14602 > > │ import numpy as np 00:14:00 v #14603 > > │ from dataclasses import dataclass 00:14:00 v #14604 > > │ from typing import NamedTuple, Union, Callable, Tuple 00:14:00 v #14605 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 00:14:00 v #14606 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str 00:14:00 v #14607 > > │ cuda = False 00:14:00 v #14608 > > │ 00:14:00 v #14609 > > │ def method1() -> i32: 00:14:00 v #14610 > > │ return 3 00:14:00 v #14611 > > │ def method2(v0 : i32, v1 : i32) -> i32: 00:14:00 v #14612 > > │ v2 = v1 + v0 00:14:00 v #14613 > > │ del v0, v1 00:14:00 v #14614 > > │ return v2 00:14:00 v #14615 > > │ def method3(v0 : bool) -> bool: 00:14:00 v #14616 > > │ return v0 00:14:00 v #14617 > > │ def method0() -> None: 00:14:00 v #14618 > > │ v0 = method1() 00:14:00 v #14619 > > │ v1 = 9 00:14:00 v #14620 > > │ v2 = method2(v0, v1) 00:14:00 v #14621 > > │ del v0, v1 00:14:00 v #14622 > > │ v3 = v2 + 2 00:14:00 v #14623 > > │ del v2 00:14:00 v #14624 > > │ v4 = v3 + 1 00:14:00 v #14625 > > │ del v3 00:14:00 v #14626 > > │ v5 = v4 == 15 00:14:00 v #14627 > > │ if v5: 00:14:00 v #14628 > > │ v7 = True 00:14:00 v #14629 > > │ else: 00:14:00 v #14630 > > │ v7 = method3(v5) 00:14:00 v #14631 > > │ del v5 00:14:00 v #14632 > > │ v10 = "__assert_eq" 00:14:00 v #14633 > > │ v11 = f"{v10} / actual: {v4} / expected: {15}" 00:14:00 v #14634 > > │ del v4, v10 00:14:00 v #14635 > > │ print(v11) 00:14:00 v #14636 > > │ v17 = v7 == False 00:14:00 v #14637 > > │ del v7 00:14:00 v #14638 > > │ if v17: 00:14:00 v #14639 > > │ del v17 00:14:00 v #14640 > > │ raise Exception(v11) 00:14:00 v #14641 > > │ else: 00:14:00 v #14642 > > │ del v11, v17 00:14:00 v #14643 > > │ return 00:14:00 v #14644 > > │ def main_body(): 00:14:00 v #14645 > > │ return method0() 00:14:00 v #14646 > > │ 00:14:00 v #14647 > > │ def main(): 00:14:00 v #14648 > > │ r = main_body() 00:14:00 v #14649 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # 00:14:00 v #14650 > > This line is here so the `__trap()` calls on the kernel aren't missed. 00:14:00 v #14651 > > │ return r 00:14:00 v #14652 > > │ 00:14:00 v #14653 > > │ if __name__ == '__main__': result = main(); None if result is 00:14:00 v #14654 > > None else print(result) 00:14:00 v #14655 > > │ 00:14:00 v #14656 > > │ .fsx output: 00:14:00 v #14657 > > │ __assert_eq / actual: 15 / expected: 15 00:14:00 v #14658 > > │ 00:14:00 v #14659 > > 00:14:00 v #14660 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:00 v #14661 > > │ ### join_body_unit 00:14:00 v #14662 > > 00:14:00 v #14663 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:00 v #14664 > > inl join_body_unit body d x = 00:14:00 v #14665 > > if var_is d |> not 00:14:00 v #14666 > > then body x 00:14:00 v #14667 > > else 00:14:00 v #14668 > > inl x = dyn x 00:14:00 v #14669 > > join body x 00:14:00 v #14670 > > 00:14:00 v #14671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:00 v #14672 > > //// test 00:14:00 v #14673 > > ///! fsharp 00:14:00 v #14674 > > ///! cuda 00:14:00 v #14675 > > ///! rust 00:14:00 v #14676 > > ///! typescript 00:14:00 v #14677 > > ///! python 00:14:00 v #14678 > > //// print_code 00:14:00 v #14679 > > 00:14:00 v #14680 > > [[ 5i32; 4; join 3; 2; 1 ]] 00:14:00 v #14681 > > |> fold_list (fun acc n => join_body_unit ((+) acc) n n) 0 00:14:00 v #14682 > > |> _assert_eq 15 00:14:08 v #14683 > > 00:14:08 v #14684 > > ── [ 7.88s - return value ] ──────────────────────────────────────────────────── 00:14:08 v #14685 > > │ .py output (Cuda): 00:14:08 v #14686 > > │ __assert_eq / actual: 15 / expected: 15 00:14:08 v #14687 > > │ 00:14:08 v #14688 > > │ .rs output: 00:14:08 v #14689 > > │ __assert_eq / actual: 15 / expected: 15 00:14:08 v #14690 > > │ 00:14:08 v #14691 > > │ .ts output: 00:14:08 v #14692 > > │ __assert_eq / actual: 15 / expected: 15 00:14:08 v #14693 > > │ 00:14:08 v #14694 > > │ .py output: 00:14:08 v #14695 > > │ __assert_eq / actual: 15 / expected: 15 00:14:08 v #14696 > > │ 00:14:08 v #14697 > > │ 00:14:08 v #14698 > > │ 00:14:08 v #14699 > > │ 00:14:08 v #14700 > > 00:14:08 v #14701 > > ── [ 7.88s - stdout ] ────────────────────────────────────────────────────────── 00:14:08 v #14702 > > │ .fsx: 00:14:08 v #14703 > > │ let rec method1 () : int32 = 00:14:08 v #14704 > > │ 3 00:14:08 v #14705 > > │ and method2 (v0 : int32) : int32 = 00:14:08 v #14706 > > │ let v1 : int32 = 9 + v0 00:14:08 v #14707 > > │ v1 00:14:08 v #14708 > > │ and method3 (v0 : bool) : bool = 00:14:08 v #14709 > > │ v0 00:14:08 v #14710 > > │ and closure0 (v0 : string) () : unit = 00:14:08 v #14711 > > │ let v1 : (string -> unit) = System.Console.WriteLine 00:14:08 v #14712 > > │ v1 v0 00:14:08 v #14713 > > │ and method0 () : unit = 00:14:08 v #14714 > > │ let v0 : int32 = method1() 00:14:08 v #14715 > > │ let v1 : int32 = method2(v0) 00:14:08 v #14716 > > │ let v2 : int32 = v1 + 2 00:14:08 v #14717 > > │ let v3 : int32 = v2 + 1 00:14:08 v #14718 > > │ let v4 : bool = v3 = 15 00:14:08 v #14719 > > │ let v6 : bool = 00:14:08 v #14720 > > │ if v4 then 00:14:08 v #14721 > > │ true 00:14:08 v #14722 > > │ else 00:14:08 v #14723 > > │ method3(v4) 00:14:08 v #14724 > > │ let v7 : string = "__assert_eq" 00:14:08 v #14725 > > │ let v8 : string = $"{v7} / actual: %A{v3} / expected: 00:14:08 v #14726 > > %A{15}" 00:14:08 v #14727 > > │ let v11 : unit = () 00:14:08 v #14728 > > │ let v12 : (unit -> unit) = closure0(v8) 00:14:08 v #14729 > > │ let v13 : unit = (fun () -> v12 (); v11) () 00:14:08 v #14730 > > │ let v15 : bool = v6 = false 00:14:08 v #14731 > > │ if v15 then 00:14:08 v #14732 > > │ failwith<unit> v8 00:14:08 v #14733 > > │ method0() 00:14:08 v #14734 > > │ 00:14:08 v #14735 > > │ 00:14:08 v #14736 > > │ .rs: 00:14:08 v #14737 > > │ #![allow(dead_code)] 00:14:08 v #14738 > > │ #![allow(non_camel_case_types)] 00:14:08 v #14739 > > │ #![allow(non_snake_case)] 00:14:08 v #14740 > > │ #![allow(non_upper_case_globals)] 00:14:08 v #14741 > > │ #![allow(unreachable_code)] 00:14:08 v #14742 > > │ #![allow(unused_attributes)] 00:14:08 v #14743 > > │ #![allow(unused_imports)] 00:14:08 v #14744 > > │ #![allow(unused_macros)] 00:14:08 v #14745 > > │ #![allow(unused_parens)] 00:14:08 v #14746 > > │ #![allow(unused_variables)] 00:14:08 v #14747 > > │ #![allow(unused_assignments)] 00:14:08 v #14748 > > │ mod module_6ff740fe { 00:14:08 v #14749 > > │ pub mod Spiral { 00:14:08 v #14750 > > │ use super::*; 00:14:08 v #14751 > > │ use fable_library_rust::Native_::on_startup; 00:14:08 v #14752 > > │ use fable_library_rust::String_::printfn; 00:14:08 v #14753 > > │ use fable_library_rust::String_::sprintf; 00:14:08 v #14754 > > │ use fable_library_rust::String_::string; 00:14:08 v #14755 > > │ pub fn method1() -> i32 { 00:14:08 v #14756 > > │ 3_i32 00:14:08 v #14757 > > │ } 00:14:08 v #14758 > > │ pub fn method2(v0: i32) -> i32 { 00:14:08 v #14759 > > │ 9_i32 + (v0) 00:14:08 v #14760 > > │ } 00:14:08 v #14761 > > │ pub fn method3(v0: bool) -> bool { 00:14:08 v #14762 > > │ v0 00:14:08 v #14763 > > │ } 00:14:08 v #14764 > > │ pub fn closure0(v0: string, unitVar: ()) { 00:14:08 v #14765 > > │ printfn!("{0}", v0); 00:14:08 v #14766 > > │ } 00:14:08 v #14767 > > │ pub fn method0() { 00:14:08 v #14768 > > │ let v3: i32 = 00:14:08 v #14769 > > ((Spiral::method2(Spiral::method1())) + 2_i32) + 1_i32; 00:14:08 v #14770 > > │ let v4: bool = (v3) == 15_i32; 00:14:08 v #14771 > > │ let v6: bool = if v4 { true } else { 00:14:08 v #14772 > > Spiral::method3(v4) }; 00:14:08 v #14773 > > │ let v8: string = sprintf!( 00:14:08 v #14774 > > │ "{} / actual: {:?} / expected: {:?}", 00:14:08 v #14775 > > │ string("__assert_eq"), 00:14:08 v #14776 > > │ v3, 00:14:08 v #14777 > > │ 15_i32 00:14:08 v #14778 > > │ ); 00:14:08 v #14779 > > │ let v13: () = { 00:14:08 v #14780 > > │ Spiral::closure0(v8.clone(), ()); 00:14:08 v #14781 > > │ () 00:14:08 v #14782 > > │ }; 00:14:08 v #14783 > > │ if (v6) == false { 00:14:08 v #14784 > > │ panic!("{}", v8,); 00:14:08 v #14785 > > │ } 00:14:08 v #14786 > > │ } 00:14:08 v #14787 > > │ // on_startup!(Spiral::method0()); 00:14:08 v #14788 > > │ } 00:14:08 v #14789 > > │ } 00:14:08 v #14790 > > │ pub use module_6ff740fe::*; 00:14:08 v #14791 > > │ 00:14:08 v #14792 > > │ 00:14:08 v #14793 > > │ 00:14:08 v #14794 > > │ pub fn main() -> Result<(), String> { Ok(Spiral::method0()) } 00:14:08 v #14795 > > │ 00:14:08 v #14796 > > │ .ts: 00:14:08 v #14797 > > │ import { int32 } from 00:14:08 v #14798 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/Int32.js"; 00:14:08 v #14799 > > │ import { interpolate, toText } from 00:14:08 v #14800 > > "./fable_modules/fable-library-ts.5.0.0-alpha.2/String.js"; 00:14:08 v #14801 > > │ 00:14:08 v #14802 > > │ export function method1(): int32 { 00:14:08 v #14803 > > │ return 3; 00:14:08 v #14804 > > │ } 00:14:08 v #14805 > > │ 00:14:08 v #14806 > > │ export function method2(v0: int32): int32 { 00:14:08 v #14807 > > │ return 9 + v0; 00:14:08 v #14808 > > │ } 00:14:08 v #14809 > > │ 00:14:08 v #14810 > > │ export function method3(v0: boolean): boolean { 00:14:08 v #14811 > > │ return v0; 00:14:08 v #14812 > > │ } 00:14:08 v #14813 > > │ 00:14:08 v #14814 > > │ export function closure0(v0: string, unitVar: void): void { 00:14:08 v #14815 > > │ console.log(v0); 00:14:08 v #14816 > > │ } 00:14:08 v #14817 > > │ 00:14:08 v #14818 > > │ export function method0(): void { 00:14:08 v #14819 > > │ const v3: int32 = ((method2(method1()) + 2) + 1) | 0; 00:14:08 v #14820 > > │ const v4: boolean = v3 === 15; 00:14:08 v #14821 > > │ const v6: boolean = v4 ? true : method3(v4); 00:14:08 v #14822 > > │ const v8: string = toText(interpolate("%P() / actual: 00:14:08 v #14823 > > %A%P() / expected: %A%P()", ["__assert_eq", v3, 15])); 00:14:08 v #14824 > > │ let v13: any; 00:14:08 v #14825 > > │ closure0(v8, undefined); 00:14:08 v #14826 > > │ v13 = undefined; 00:14:08 v #14827 > > │ if (v6 === false) { 00:14:08 v #14828 > > │ throw new Error(v8); 00:14:08 v #14829 > > │ } 00:14:08 v #14830 > > │ } 00:14:08 v #14831 > > │ 00:14:08 v #14832 > > │ method0(); 00:14:08 v #14833 > > │ 00:14:08 v #14834 > > │ 00:14:08 v #14835 > > │ .py: 00:14:08 v #14836 > > │ from fable_modules.fable_library.string_ import (to_text, 00:14:08 v #14837 > > interpolate) 00:14:08 v #14838 > > │ 00:14:08 v #14839 > > │ def method1(__unit: None=None) -> int: 00:14:08 v #14840 > > │ return 3 00:14:08 v #14841 > > │ 00:14:08 v #14842 > > │ 00:14:08 v #14843 > > │ def method2(v0: int) -> int: 00:14:08 v #14844 > > │ return 9 + v0 00:14:08 v #14845 > > │ 00:14:08 v #14846 > > │ 00:14:08 v #14847 > > │ def method3(v0: bool) -> bool: 00:14:08 v #14848 > > │ return v0 00:14:08 v #14849 > > │ 00:14:08 v #14850 > > │ 00:14:08 v #14851 > > │ def closure0(v0: str, unit_var: None) -> None: 00:14:08 v #14852 > > │ print(v0) 00:14:08 v #14853 > > │ 00:14:08 v #14854 > > │ 00:14:08 v #14855 > > │ def method0(__unit: None=None) -> None: 00:14:08 v #14856 > > │ v3: int = ((method2(method1()) + 2) + 1) or 0 00:14:08 v #14857 > > │ v4: bool = v3 == 15 00:14:08 v #14858 > > │ v6: bool = True if v4 else method3(v4) 00:14:08 v #14859 > > │ v8: str = to_text(interpolate("%P() / actual: %A%P() 00:14:08 v #14860 > > expected: %A%P()", ["__assert_eq", v3, 15])) 00:14:08 v #14861 > > │ v13: None 00:14:08 v #14862 > > │ closure0(v8, None) 00:14:08 v #14863 > > │ v13 = None 00:14:08 v #14864 > > │ if v6 == False: 00:14:08 v #14865 > > │ raise Exception(v8) 00:14:08 v #14866 > > │ 00:14:08 v #14867 > > │ 00:14:08 v #14868 > > │ 00:14:08 v #14869 > > │ method0() 00:14:08 v #14870 > > │ 00:14:08 v #14871 > > │ 00:14:08 v #14872 > > │ .py (Cuda): 00:14:08 v #14873 > > │ kernel = r""" 00:14:08 v #14874 > > │ """ 00:14:08 v #14875 > > │ class static_array(): 00:14:08 v #14876 > > │ def __init__(self, length): 00:14:08 v #14877 > > │ self.ptr = [] 00:14:08 v #14878 > > │ for _ in range(length): 00:14:08 v #14879 > > │ self.ptr.append(None) 00:14:08 v #14880 > > │ 00:14:08 v #14881 > > │ def __getitem__(self, index): 00:14:08 v #14882 > > │ assert 0 <= index < len(self.ptr), "The get index 00:14:08 v #14883 > > needs to be in range." 00:14:08 v #14884 > > │ return self.ptr[index] 00:14:08 v #14885 > > │ 00:14:08 v #14886 > > │ def __setitem__(self, index, value): 00:14:08 v #14887 > > │ assert 0 <= index < len(self.ptr), "The set index 00:14:08 v #14888 > > needs to be in range." 00:14:08 v #14889 > > │ self.ptr[index] = value 00:14:08 v #14890 > > │ 00:14:08 v #14891 > > │ class static_array_list(static_array): 00:14:08 v #14892 > > │ def __init__(self, length): 00:14:08 v #14893 > > │ super().__init__(length) 00:14:08 v #14894 > > │ self.length = 0 00:14:08 v #14895 > > │ 00:14:08 v #14896 > > │ def __getitem__(self, index): 00:14:08 v #14897 > > │ assert 0 <= index < self.length, "The get index needs 00:14:08 v #14898 > > to be in range." 00:14:08 v #14899 > > │ return self.ptr[index] 00:14:08 v #14900 > > │ 00:14:08 v #14901 > > │ def __setitem__(self, index, value): 00:14:08 v #14902 > > │ assert 0 <= index < self.length, "The set index needs 00:14:08 v #14903 > > to be in range." 00:14:08 v #14904 > > │ self.ptr[index] = value 00:14:08 v #14905 > > │ 00:14:08 v #14906 > > │ def push(self,value): 00:14:08 v #14907 > > │ assert (self.length < len(self.ptr)), "The length 00:14:08 v #14908 > > before pushing has to be less than the maximum length of the array." 00:14:08 v #14909 > > │ self.ptr[self.length] = value 00:14:08 v #14910 > > │ self.length += 1 00:14:08 v #14911 > > │ 00:14:08 v #14912 > > │ def pop(self): 00:14:08 v #14913 > > │ assert (0 < self.length), "The length before popping 00:14:08 v #14914 > > has to be greater than 0." 00:14:08 v #14915 > > │ self.length -= 1 00:14:08 v #14916 > > │ return self.ptr[self.length] 00:14:08 v #14917 > > │ 00:14:08 v #14918 > > │ def unsafe_set_length(self,i): 00:14:08 v #14919 > > │ assert 0 <= i <= len(self.ptr), "The new length has 00:14:08 v #14920 > > to be in range." 00:14:08 v #14921 > > │ self.length = i 00:14:08 v #14922 > > │ 00:14:08 v #14923 > > │ class dynamic_array(static_array): 00:14:08 v #14924 > > │ pass 00:14:08 v #14925 > > │ 00:14:08 v #14926 > > │ class dynamic_array_list(static_array_list): 00:14:08 v #14927 > > │ def length_(self): return self.length 00:14:08 v #14928 > > │ 00:14:08 v #14929 > > │ import cupy as cp 00:14:08 v #14930 > > │ import numpy as np 00:14:08 v #14931 > > │ from dataclasses import dataclass 00:14:08 v #14932 > > │ from typing import NamedTuple, Union, Callable, Tuple 00:14:08 v #14933 > > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = 00:14:08 v #14934 > > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str 00:14:08 v #14935 > > │ cuda = False 00:14:08 v #14936 > > │ 00:14:08 v #14937 > > │ def method1() -> i32: 00:14:08 v #14938 > > │ return 3 00:14:08 v #14939 > > │ def method2(v0 : i32) -> i32: 00:14:08 v #14940 > > │ v1 = 9 + v0 00:14:08 v #14941 > > │ del v0 00:14:08 v #14942 > > │ return v1 00:14:08 v #14943 > > │ def method3(v0 : bool) -> bool: 00:14:08 v #14944 > > │ return v0 00:14:08 v #14945 > > │ def method0() -> None: 00:14:08 v #14946 > > │ v0 = method1() 00:14:08 v #14947 > > │ v1 = method2(v0) 00:14:08 v #14948 > > │ del v0 00:14:08 v #14949 > > │ v2 = v1 + 2 00:14:08 v #14950 > > │ del v1 00:14:08 v #14951 > > │ v3 = v2 + 1 00:14:08 v #14952 > > │ del v2 00:14:08 v #14953 > > │ v4 = v3 == 15 00:14:08 v #14954 > > │ if v4: 00:14:08 v #14955 > > │ v6 = True 00:14:08 v #14956 > > │ else: 00:14:08 v #14957 > > │ v6 = method3(v4) 00:14:08 v #14958 > > │ del v4 00:14:08 v #14959 > > │ v9 = "__assert_eq" 00:14:08 v #14960 > > │ v10 = f"{v9} / actual: {v3} / expected: {15}" 00:14:08 v #14961 > > │ del v3, v9 00:14:08 v #14962 > > │ print(v10) 00:14:08 v #14963 > > │ v16 = v6 == False 00:14:08 v #14964 > > │ del v6 00:14:08 v #14965 > > │ if v16: 00:14:08 v #14966 > > │ del v16 00:14:08 v #14967 > > │ raise Exception(v10) 00:14:08 v #14968 > > │ else: 00:14:08 v #14969 > > │ del v10, v16 00:14:08 v #14970 > > │ return 00:14:08 v #14971 > > │ def main_body(): 00:14:08 v #14972 > > │ return method0() 00:14:08 v #14973 > > │ 00:14:08 v #14974 > > │ def main(): 00:14:08 v #14975 > > │ r = main_body() 00:14:08 v #14976 > > │ if cuda: cp.cuda.get_current_stream().synchronize() # 00:14:08 v #14977 > > This line is here so the `__trap()` calls on the kernel aren't missed. 00:14:08 v #14978 > > │ return r 00:14:08 v #14979 > > │ 00:14:08 v #14980 > > │ if __name__ == '__main__': result = main(); None if result is 00:14:08 v #14981 > > None else print(result) 00:14:08 v #14982 > > │ 00:14:08 v #14983 > > │ .fsx output: 00:14:08 v #14984 > > │ __assert_eq / actual: 15 / expected: 15 00:14:08 v #14985 > > │ 00:14:08 v #14986 > > 00:14:08 v #14987 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 v #14988 > > │ ## arithmetic 00:14:08 v #14989 > > 00:14:08 v #14990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:08 v #14991 > > │ ### (+.) 00:14:08 v #14992 > > 00:14:08 v #14993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:08 v #14994 > > inl (+.) forall t. (a : t) (b : t) : t = 00:14:08 v #14995 > > $'!a + !b ' 00:14:08 v #14996 > > 00:14:08 v #14997 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:08 v #14998 > > //// test 00:14:08 v #14999 > > ///! fsharp 00:14:08 v #15000 > > ///! cuda 00:14:08 v #15001 > > ///! rust 00:14:08 v #15002 > > ///! typescript 00:14:08 v #15003 > > ///! python 00:14:08 v #15004 > > 00:14:08 v #15005 > > ($'3' : i32) +. ($'-6' : i32) 00:14:08 v #15006 > > |> _assert_eq -3i32 00:14:16 v #15007 > > 00:14:16 v #15008 > > ── [ 7.78s - return value ] ──────────────────────────────────────────────────── 00:14:16 v #15009 > > │ .py output (Cuda): 00:14:16 v #15010 > > │ __assert_eq / actual: -3 / expected: -3 00:14:16 v #15011 > > │ 00:14:16 v #15012 > > │ .rs output: 00:14:16 v #15013 > > │ __assert_eq / actual: -3 / expected: -3 00:14:16 v #15014 > > │ 00:14:16 v #15015 > > │ .ts output: 00:14:16 v #15016 > > │ __assert_eq / actual: -3 / expected: -3 00:14:16 v #15017 > > │ 00:14:16 v #15018 > > │ .py output: 00:14:16 v #15019 > > │ __assert_eq / actual: -3 / expected: -3 00:14:16 v #15020 > > │ 00:14:16 v #15021 > > │ 00:14:16 v #15022 > > 00:14:16 v #15023 > > ── [ 7.78s - stdout ] ────────────────────────────────────────────────────────── 00:14:16 v #15024 > > │ .fsx output: 00:14:16 v #15025 > > │ __assert_eq / actual: -3 / expected: -3 00:14:16 v #15026 > > │ 00:14:16 v #15027 > > 00:14:16 v #15028 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:16 v #15029 > > │ ### (-.) 00:14:16 v #15030 > > 00:14:16 v #15031 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:16 v #15032 > > inl (-.) forall t. (a : t) (b : t) : t = 00:14:16 v #15033 > > $'!a - !b ' 00:14:16 v #15034 > > 00:14:16 v #15035 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:16 v #15036 > > //// test 00:14:16 v #15037 > > ///! fsharp 00:14:16 v #15038 > > ///! cuda 00:14:16 v #15039 > > ///! rust 00:14:16 v #15040 > > ///! typescript 00:14:16 v #15041 > > ///! python 00:14:16 v #15042 > > 00:14:16 v #15043 > > ($'3' : i32) -. ($'6' : i32) 00:14:16 v #15044 > > |> _assert_eq -3i32 00:14:24 v #15045 > > 00:14:24 v #15046 > > ── [ 7.90s - return value ] ──────────────────────────────────────────────────── 00:14:24 v #15047 > > │ .py output (Cuda): 00:14:24 v #15048 > > │ __assert_eq / actual: -3 / expected: -3 00:14:24 v #15049 > > │ 00:14:24 v #15050 > > │ .rs output: 00:14:24 v #15051 > > │ __assert_eq / actual: -3 / expected: -3 00:14:24 v #15052 > > │ 00:14:24 v #15053 > > │ .ts output: 00:14:24 v #15054 > > │ __assert_eq / actual: -3 / expected: -3 00:14:24 v #15055 > > │ 00:14:24 v #15056 > > │ .py output: 00:14:24 v #15057 > > │ __assert_eq / actual: -3 / expected: -3 00:14:24 v #15058 > > │ 00:14:24 v #15059 > > │ 00:14:24 v #15060 > > 00:14:24 v #15061 > > ── [ 7.90s - stdout ] ────────────────────────────────────────────────────────── 00:14:24 v #15062 > > │ .fsx output: 00:14:24 v #15063 > > │ __assert_eq / actual: -3 / expected: -3 00:14:24 v #15064 > > │ 00:14:24 v #15065 > > 00:14:24 v #15066 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:24 v #15067 > > │ ### (*.) 00:14:24 v #15068 > > 00:14:24 v #15069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:24 v #15070 > > inl (*.) forall t. (a : t) (b : t) : t = 00:14:24 v #15071 > > $'!a * !b ' 00:14:24 v #15072 > > 00:14:24 v #15073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:24 v #15074 > > //// test 00:14:24 v #15075 > > ///! fsharp 00:14:24 v #15076 > > ///! cuda 00:14:24 v #15077 > > ///! rust 00:14:24 v #15078 > > ///! typescript 00:14:24 v #15079 > > ///! python 00:14:24 v #15080 > > 00:14:24 v #15081 > > ($'3' : i32) *. ($'-1' : i32) 00:14:24 v #15082 > > |> _assert_eq -3i32 00:14:32 v #15083 > > 00:14:32 v #15084 > > ── [ 7.89s - return value ] ──────────────────────────────────────────────────── 00:14:32 v #15085 > > │ .py output (Cuda): 00:14:32 v #15086 > > │ __assert_eq / actual: -3 / expected: -3 00:14:32 v #15087 > > │ 00:14:32 v #15088 > > │ .rs output: 00:14:32 v #15089 > > │ __assert_eq / actual: -3 / expected: -3 00:14:32 v #15090 > > │ 00:14:32 v #15091 > > │ .ts output: 00:14:32 v #15092 > > │ __assert_eq / actual: -3 / expected: -3 00:14:32 v #15093 > > │ 00:14:32 v #15094 > > │ .py output: 00:14:32 v #15095 > > │ __assert_eq / actual: -3 / expected: -3 00:14:32 v #15096 > > │ 00:14:32 v #15097 > > │ 00:14:32 v #15098 > > 00:14:32 v #15099 > > ── [ 7.89s - stdout ] ────────────────────────────────────────────────────────── 00:14:32 v #15100 > > │ .fsx output: 00:14:32 v #15101 > > │ __assert_eq / actual: -3 / expected: -3 00:14:32 v #15102 > > │ 00:14:32 v #15103 > > 00:14:32 v #15104 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:32 v #15105 > > │ ### (/.) 00:14:32 v #15106 > > 00:14:32 v #15107 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:32 v #15108 > > inl (/.) forall t. (a : t) (b : t) : t = 00:14:32 v #15109 > > $'!a / !b ' 00:14:32 v #15110 > > 00:14:32 v #15111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:32 v #15112 > > //// test 00:14:32 v #15113 > > ///! fsharp 00:14:32 v #15114 > > ///! cuda 00:14:32 v #15115 > > ///! rust 00:14:32 v #15116 > > ///! typescript 00:14:32 v #15117 > > ///! python 00:14:32 v #15118 > > 00:14:32 v #15119 > > ($'-3' : i32) /. ($'1' : i32) 00:14:32 v #15120 > > |> _assert_eq -3i32 00:14:40 v #15121 > > 00:14:40 v #15122 > > ── [ 7.83s - return value ] ──────────────────────────────────────────────────── 00:14:40 v #15123 > > │ .py output (Cuda): 00:14:40 v #15124 > > │ __assert_eq / actual: -3.0 / expected: -3 00:14:40 v #15125 > > │ 00:14:40 v #15126 > > │ .rs output: 00:14:40 v #15127 > > │ __assert_eq / actual: -3 / expected: -3 00:14:40 v #15128 > > │ 00:14:40 v #15129 > > │ .ts output: 00:14:40 v #15130 > > │ __assert_eq / actual: -3 / expected: -3 00:14:40 v #15131 > > │ 00:14:40 v #15132 > > │ .py output: 00:14:40 v #15133 > > │ __assert_eq / actual: -3 / expected: -3 00:14:40 v #15134 > > │ 00:14:40 v #15135 > > │ 00:14:40 v #15136 > > 00:14:40 v #15137 > > ── [ 7.83s - stdout ] ────────────────────────────────────────────────────────── 00:14:40 v #15138 > > │ .fsx output: 00:14:40 v #15139 > > │ __assert_eq / actual: -3 / expected: -3 00:14:40 v #15140 > > │ 00:14:40 v #15141 > > 00:14:40 v #15142 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:40 v #15143 > > │ ## comparison 00:14:40 v #15144 > > 00:14:40 v #15145 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:40 v #15146 > > │ ### (=.) 00:14:40 v #15147 > > 00:14:40 v #15148 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:40 v #15149 > > inl (=.) forall t. (a : t) (b : t) : bool = 00:14:40 v #15150 > > backend_switch { 00:14:40 v #15151 > > Fsharp = fun () => $'!a = !b ' : bool 00:14:40 v #15152 > > Python = fun () => $'!a == !b ' : bool 00:14:40 v #15153 > > } 00:14:40 v #15154 > > 00:14:40 v #15155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:40 v #15156 > > //// test 00:14:40 v #15157 > > ///! fsharp 00:14:40 v #15158 > > ///! cuda 00:14:40 v #15159 > > ///! rust 00:14:40 v #15160 > > ///! typescript 00:14:40 v #15161 > > ///! python 00:14:40 v #15162 > > 00:14:40 v #15163 > > ($'-3' : i32) =. ($'-3' : i32) 00:14:40 v #15164 > > |> _assert_eq true 00:14:48 v #15165 > > 00:14:48 v #15166 > > ── [ 7.58s - return value ] ──────────────────────────────────────────────────── 00:14:48 v #15167 > > │ .py output (Cuda): 00:14:48 v #15168 > > │ __assert_eq / actual: True / expected: True 00:14:48 v #15169 > > │ 00:14:48 v #15170 > > │ .rs output: 00:14:48 v #15171 > > │ __assert_eq / actual: true / expected: true 00:14:48 v #15172 > > │ 00:14:48 v #15173 > > │ .ts output: 00:14:48 v #15174 > > │ __assert_eq / actual: true / expected: true 00:14:48 v #15175 > > │ 00:14:48 v #15176 > > │ .py output: 00:14:48 v #15177 > > │ __assert_eq / actual: true / expected: true 00:14:48 v #15178 > > │ 00:14:48 v #15179 > > │ 00:14:48 v #15180 > > 00:14:48 v #15181 > > ── [ 7.58s - stdout ] ────────────────────────────────────────────────────────── 00:14:48 v #15182 > > │ .fsx output: 00:14:48 v #15183 > > │ __assert_eq / actual: true / expected: true 00:14:48 v #15184 > > │ 00:14:48 v #15185 > > 00:14:48 v #15186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:48 v #15187 > > │ ### (<>.) 00:14:48 v #15188 > > 00:14:48 v #15189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:48 v #15190 > > inl (<>.) forall t. (a : t) (b : t) : bool = 00:14:48 v #15191 > > backend_switch { 00:14:48 v #15192 > > Fsharp = fun () => $'!a <> !b ' : bool 00:14:48 v #15193 > > Python = fun () => $'!a \!= !b ' : bool 00:14:48 v #15194 > > } 00:14:48 v #15195 > > 00:14:48 v #15196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:48 v #15197 > > //// test 00:14:48 v #15198 > > ///! fsharp 00:14:48 v #15199 > > ///! cuda 00:14:48 v #15200 > > ///! rust 00:14:48 v #15201 > > ///! typescript 00:14:48 v #15202 > > ///! python 00:14:48 v #15203 > > 00:14:48 v #15204 > > ($'-3' : i32) <>. ($'3' : i32) 00:14:48 v #15205 > > |> _assert_eq true 00:14:56 v #15206 > > 00:14:56 v #15207 > > ── [ 7.66s - return value ] ──────────────────────────────────────────────────── 00:14:56 v #15208 > > │ .py output (Cuda): 00:14:56 v #15209 > > │ __assert_eq / actual: True / expected: True 00:14:56 v #15210 > > │ 00:14:56 v #15211 > > │ .rs output: 00:14:56 v #15212 > > │ __assert_eq / actual: true / expected: true 00:14:56 v #15213 > > │ 00:14:56 v #15214 > > │ .ts output: 00:14:56 v #15215 > > │ __assert_eq / actual: true / expected: true 00:14:56 v #15216 > > │ 00:14:56 v #15217 > > │ .py output: 00:14:56 v #15218 > > │ __assert_eq / actual: true / expected: true 00:14:56 v #15219 > > │ 00:14:56 v #15220 > > │ 00:14:56 v #15221 > > 00:14:56 v #15222 > > ── [ 7.66s - stdout ] ────────────────────────────────────────────────────────── 00:14:56 v #15223 > > │ .fsx output: 00:14:56 v #15224 > > │ __assert_eq / actual: true / expected: true 00:14:56 v #15225 > > │ 00:14:56 v #15226 > > 00:14:56 v #15227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:14:56 v #15228 > > │ ### (<>..) 00:14:56 v #15229 > > 00:14:56 v #15230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:56 v #15231 > > inl (<>..) a b = 00:14:56 v #15232 > > fun () => a = b 00:14:56 v #15233 > > |> dyn 00:14:56 v #15234 > > |> eval 00:14:56 v #15235 > > |> not 00:14:56 v #15236 > > 00:14:56 v #15237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:14:56 v #15238 > > //// test 00:14:56 v #15239 > > ///! fsharp 00:14:56 v #15240 > > ///! cuda 00:14:56 v #15241 > > ///! rust 00:14:56 v #15242 > > ///! typescript 00:14:56 v #15243 > > ///! python 00:14:56 v #15244 > > 00:14:56 v #15245 > > ($'-3' : i32) <>.. ($'3' : i32) 00:14:56 v #15246 > > |> _assert_eq true 00:15:03 v #15247 > > 00:15:03 v #15248 > > ── [ 7.30s - return value ] ──────────────────────────────────────────────────── 00:15:03 v #15249 > > │ .py output (Cuda): 00:15:03 v #15250 > > │ __assert_eq / actual: True / expected: True 00:15:03 v #15251 > > │ 00:15:03 v #15252 > > │ .rs output: 00:15:03 v #15253 > > │ __assert_eq / actual: true / expected: true 00:15:03 v #15254 > > │ 00:15:03 v #15255 > > │ .ts output: 00:15:03 v #15256 > > │ __assert_eq / actual: true / expected: true 00:15:03 v #15257 > > │ 00:15:03 v #15258 > > │ .py output: 00:15:03 v #15259 > > │ __assert_eq / actual: true / expected: true 00:15:03 v #15260 > > │ 00:15:03 v #15261 > > │ 00:15:03 v #15262 > > 00:15:03 v #15263 > > ── [ 7.30s - stdout ] ────────────────────────────────────────────────────────── 00:15:03 v #15264 > > │ .fsx output: 00:15:03 v #15265 > > │ __assert_eq / actual: true / expected: true 00:15:03 v #15266 > > │ 00:15:03 v #15267 > > 00:15:03 v #15268 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:03 v #15269 > > │ ## composition 00:15:03 v #15270 > > 00:15:03 v #15271 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:03 v #15272 > > │ ### append 00:15:03 v #15273 > > 00:15:03 v #15274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:03 v #15275 > > prototype append t : t -> t -> t 00:15:03 v #15276 > > 00:15:03 v #15277 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:03 v #15278 > > │ ### (++) 00:15:03 v #15279 > > 00:15:03 v #15280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:03 v #15281 > > inl (++) a b = 00:15:03 v #15282 > > b |> append a 00:15:03 v #15283 > > 00:15:03 v #15284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:03 v #15285 > > │ ## pair 00:15:03 v #15286 > > 00:15:03 v #15287 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:03 v #15288 > > │ ### pair 00:15:03 v #15289 > > 00:15:03 v #15290 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:03 v #15291 > > nominal pair a b = $'(`a * `b)' 00:15:03 v #15292 > > 00:15:03 v #15293 > > inl pair x y = 00:15:03 v #15294 > > x, y 00:15:04 v #15295 > > 00:15:04 v #15296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:04 v #15297 > > //// test 00:15:04 v #15298 > > ///! fsharp 00:15:04 v #15299 > > ///! cuda 00:15:04 v #15300 > > ///! rust 00:15:04 v #15301 > > ///! typescript 00:15:04 v #15302 > > ///! python 00:15:04 v #15303 > > 00:15:04 v #15304 > > pair 1i32 2i32 00:15:04 v #15305 > > |> _assert_eq (1, 2) 00:15:12 v #15306 > > 00:15:12 v #15307 > > ── [ 7.92s - return value ] ──────────────────────────────────────────────────── 00:15:12 v #15308 > > │ .py output (Cuda): 00:15:12 v #15309 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) 00:15:12 v #15310 > > │ 00:15:12 v #15311 > > │ .rs output: 00:15:12 v #15312 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) 00:15:12 v #15313 > > │ 00:15:12 v #15314 > > │ .ts output: 00:15:12 v #15315 > > │ __assert_eq / actual: 1,2 / expected: 1,2 00:15:12 v #15316 > > │ 00:15:12 v #15317 > > │ .py output: 00:15:12 v #15318 > > │ __assert_eq / actual: (1, 2) / expected: (1, 2) 00:15:12 v #15319 > > │ 00:15:12 v #15320 > > │ 00:15:12 v #15321 > > 00:15:12 v #15322 > > ── [ 7.92s - stdout ] ────────────────────────────────────────────────────────── 00:15:12 v #15323 > > │ .fsx output: 00:15:12 v #15324 > > │ __assert_eq / actual: struct (1, 2) / expected: struct (1, 2) 00:15:12 v #15325 > > │ 00:15:12 v #15326 > > 00:15:12 v #15327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 v #15328 > > │ ### new_pair 00:15:12 v #15329 > > 00:15:12 v #15330 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #15331 > > inl new_pair forall a b. (a : a) (b : b) : pair a b = 00:15:12 v #15332 > > $'!a, !b ' 00:15:12 v #15333 > > 00:15:12 v #15334 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:12 v #15335 > > │ ### from_pair 00:15:12 v #15336 > > 00:15:12 v #15337 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #15338 > > inl from_pair forall a b. (pair : pair a b) : a * b = 00:15:12 v #15339 > > backend_switch { 00:15:12 v #15340 > > Fsharp = fun () => 00:15:12 v #15341 > > $'let (a, b) = !pair ' 00:15:12 v #15342 > > ($'a' : a), ($'b' : b) 00:15:12 v #15343 > > Python = fun () => 00:15:12 v #15344 > > $'a, b = !pair ' 00:15:12 v #15345 > > ($'a' : a), ($'b' : b) 00:15:12 v #15346 > > } 00:15:12 v #15347 > > 00:15:12 v #15348 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:12 v #15349 > > //// test 00:15:12 v #15350 > > ///! fsharp 00:15:12 v #15351 > > ///! cuda 00:15:12 v #15352 > > ///! rust 00:15:12 v #15353 > > ///! typescript 00:15:12 v #15354 > > ///! python 00:15:12 v #15355 > > 00:15:12 v #15356 > > new_pair "a" (new_pair 1i32 "b") 00:15:12 v #15357 > > |> from_pair 00:15:12 v #15358 > > |> _assert_eq' ("a", (new_pair 1i32 "b")) 00:15:20 v #15359 > > 00:15:20 v #15360 > > ── [ 7.85s - return value ] ──────────────────────────────────────────────────── 00:15:20 v #15361 > > │ .py output (Cuda): 00:15:20 v #15362 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 00:15:20 v #15363 > > 'b')) 00:15:20 v #15364 > > │ 00:15:20 v #15365 > > │ .rs output: 00:15:20 v #15366 > > │ __assert_eq' / actual: ("a", (1, "b")) / expected: ("a", (1, 00:15:20 v #15367 > > "b")) 00:15:20 v #15368 > > │ 00:15:20 v #15369 > > │ .ts output: 00:15:20 v #15370 > > │ __assert_eq' / actual: a,1,b / expected: a,1,b 00:15:20 v #15371 > > │ 00:15:20 v #15372 > > │ .py output: 00:15:20 v #15373 > > │ __assert_eq' / actual: ('a', (1, 'b')) / expected: ('a', (1, 00:15:20 v #15374 > > 'b')) 00:15:20 v #15375 > > │ 00:15:20 v #15376 > > │ 00:15:20 v #15377 > > 00:15:20 v #15378 > > ── [ 7.85s - stdout ] ────────────────────────────────────────────────────────── 00:15:20 v #15379 > > │ .fsx output: 00:15:20 v #15380 > > │ __assert_eq' / actual: struct ("a", (1, "b")) / expected: 00:15:20 v #15381 > > struct ("a", (1, "b")) 00:15:20 v #15382 > > │ 00:15:20 v #15383 > > 00:15:20 v #15384 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #15385 > > │ ## application 00:15:20 v #15386 > > 00:15:20 v #15387 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #15388 > > │ ### (||>) 00:15:20 v #15389 > > 00:15:20 v #15390 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:20 v #15391 > > inl (||>) (arg1, arg2) fn = 00:15:20 v #15392 > > arg2 |> fn arg1 00:15:20 v #15393 > > 00:15:20 v #15394 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:20 v #15395 > > │ ### (||>) 00:15:20 v #15396 > > 00:15:20 v #15397 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:20 v #15398 > > //// test 00:15:20 v #15399 > > ///! fsharp 00:15:20 v #15400 > > ///! cuda 00:15:20 v #15401 > > ///! rust 00:15:20 v #15402 > > ///! typescript 00:15:20 v #15403 > > ///! python 00:15:20 v #15404 > > 00:15:20 v #15405 > > (3i32, 2i32) 00:15:20 v #15406 > > ||> fun a b => a - b 00:15:20 v #15407 > > |> _assert_eq 1 00:15:28 v #15408 > > 00:15:28 v #15409 > > ── [ 7.93s - return value ] ──────────────────────────────────────────────────── 00:15:28 v #15410 > > │ .py output (Cuda): 00:15:28 v #15411 > > │ __assert_eq / actual: 1 / expected: 1 00:15:28 v #15412 > > │ 00:15:28 v #15413 > > │ .rs output: 00:15:28 v #15414 > > │ __assert_eq / actual: 1 / expected: 1 00:15:28 v #15415 > > │ 00:15:28 v #15416 > > │ .ts output: 00:15:28 v #15417 > > │ __assert_eq / actual: 1 / expected: 1 00:15:28 v #15418 > > │ 00:15:28 v #15419 > > │ .py output: 00:15:28 v #15420 > > │ __assert_eq / actual: 1 / expected: 1 00:15:28 v #15421 > > │ 00:15:28 v #15422 > > │ 00:15:28 v #15423 > > 00:15:28 v #15424 > > ── [ 7.93s - stdout ] ────────────────────────────────────────────────────────── 00:15:28 v #15425 > > │ .fsx output: 00:15:28 v #15426 > > │ __assert_eq / actual: 1 / expected: 1 00:15:28 v #15427 > > │ 00:15:28 v #15428 > > 00:15:28 v #15429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:28 v #15430 > > //// test 00:15:28 v #15431 > > ///! fsharp 00:15:28 v #15432 > > ///! cuda 00:15:28 v #15433 > > ///! rust 00:15:28 v #15434 > > ///! typescript 00:15:28 v #15435 > > ///! python 00:15:28 v #15436 > > 00:15:28 v #15437 > > (1i32, 2i32) 00:15:28 v #15438 > > ||> flip pair 00:15:28 v #15439 > > |> _assert_eq (2, 1) 00:15:36 v #15440 > > 00:15:36 v #15441 > > ── [ 7.81s - return value ] ──────────────────────────────────────────────────── 00:15:36 v #15442 > > │ .py output (Cuda): 00:15:36 v #15443 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) 00:15:36 v #15444 > > │ 00:15:36 v #15445 > > │ .rs output: 00:15:36 v #15446 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) 00:15:36 v #15447 > > │ 00:15:36 v #15448 > > │ .ts output: 00:15:36 v #15449 > > │ __assert_eq / actual: 2,1 / expected: 2,1 00:15:36 v #15450 > > │ 00:15:36 v #15451 > > │ .py output: 00:15:36 v #15452 > > │ __assert_eq / actual: (2, 1) / expected: (2, 1) 00:15:36 v #15453 > > │ 00:15:36 v #15454 > > │ 00:15:36 v #15455 > > 00:15:36 v #15456 > > ── [ 7.81s - stdout ] ────────────────────────────────────────────────────────── 00:15:36 v #15457 > > │ .fsx output: 00:15:36 v #15458 > > │ __assert_eq / actual: struct (2, 1) / expected: struct (2, 1) 00:15:36 v #15459 > > │ 00:15:36 v #15460 > > 00:15:36 v #15461 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15462 > > │ ### fix_condition 00:15:36 v #15463 > > 00:15:36 v #15464 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15465 > > inl fix_condition x a b = 00:15:36 v #15466 > > if x () 00:15:36 v #15467 > > then a () |> fun x => $'(* fix_condition then' : () 00:15:36 v #15468 > > else 00:15:36 v #15469 > > $'fix_condition then *) else' : () 00:15:36 v #15470 > > b () |> fun x => $'(* fix_condition else' : () 00:15:36 v #15471 > > |> fun x => $'fix_condition else *)' : () 00:15:36 v #15472 > > 00:15:36 v #15473 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15474 > > │ ## type 00:15:36 v #15475 > > 00:15:36 v #15476 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15477 > > │ ### infer 00:15:36 v #15478 > > 00:15:36 v #15479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15480 > > nominal infer = $'_' 00:15:36 v #15481 > > 00:15:36 v #15482 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15483 > > │ ### infer' 00:15:36 v #15484 > > 00:15:36 v #15485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15486 > > nominal infer' t = $'_' 00:15:36 v #15487 > > 00:15:36 v #15488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15489 > > │ ### any 00:15:36 v #15490 > > 00:15:36 v #15491 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15492 > > nominal any = $'obj' 00:15:36 v #15493 > > 00:15:36 v #15494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15495 > > │ ### null 00:15:36 v #15496 > > 00:15:36 v #15497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15498 > > inl null forall t. () : t = 00:15:36 v #15499 > > backend_switch { 00:15:36 v #15500 > > Fsharp = fun () => $'null |> unbox<`t>' : t 00:15:36 v #15501 > > Python = fun () => $'None' : t 00:15:36 v #15502 > > } 00:15:36 v #15503 > > 00:15:36 v #15504 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:36 v #15505 > > │ ### defaultof 00:15:36 v #15506 > > 00:15:36 v #15507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:36 v #15508 > > inl defaultof forall t. () : t = 00:15:36 v #15509 > > $'Unchecked.defaultof<`t>' 00:15:37 v #15510 > > 00:15:37 v #15511 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15512 > > │ ### choice2' 00:15:37 v #15513 > > 00:15:37 v #15514 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15515 > > nominal choice2' a b = $'Choice<`a, `b>' 00:15:37 v #15516 > > 00:15:37 v #15517 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15518 > > │ ### choice2_unbox 00:15:37 v #15519 > > 00:15:37 v #15520 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15521 > > inl choice2_unbox forall t1 t2. (choice : choice2' t1 t2) : choice2 t1 t2 = 00:15:37 v #15522 > > run_target_args (fun () => choice) function 00:15:37 v #15523 > > | Fsharp _ => fun choice => 00:15:37 v #15524 > > inl c1of2 (x : t1) : _ _ t2 = C1of2 x 00:15:37 v #15525 > > inl c2of2 (x : t2) : _ t1 _ = C2of2 x 00:15:37 v #15526 > > inl c1of2 = join c1of2 00:15:37 v #15527 > > inl c2of2 = join c2of2 00:15:37 v #15528 > > $'match !choice with Choice1Of2 x -> !c1of2 x | Choice2Of2 x -> 00:15:37 v #15529 > > !c2of2 x' 00:15:37 v #15530 > > | _ => fun _ => null () 00:15:37 v #15531 > > 00:15:37 v #15532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15533 > > │ ## ref 00:15:37 v #15534 > > 00:15:37 v #15535 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15536 > > │ ### ref 00:15:37 v #15537 > > 00:15:37 v #15538 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15539 > > nominal ref t = $'`t ref' 00:15:37 v #15540 > > 00:15:37 v #15541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15542 > > │ ### new_ref 00:15:37 v #15543 > > 00:15:37 v #15544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15545 > > inl new_ref forall t. (x : t) : ref t = 00:15:37 v #15546 > > $'ref !x ' 00:15:37 v #15547 > > 00:15:37 v #15548 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15549 > > │ ### ref_value 00:15:37 v #15550 > > 00:15:37 v #15551 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15552 > > inl ref_value forall t. (x : ref t) : t = 00:15:37 v #15553 > > $'!x.Value' 00:15:37 v #15554 > > 00:15:37 v #15555 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15556 > > │ ### ref_set_value 00:15:37 v #15557 > > 00:15:37 v #15558 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15559 > > inl ref_set_value forall t. (value : t) (ref : ref t) : ref t = 00:15:37 v #15560 > > $'!ref.Value <- !value ' 00:15:37 v #15561 > > ref 00:15:37 v #15562 > > 00:15:37 v #15563 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15564 > > │ ## convert 00:15:37 v #15565 > > 00:15:37 v #15566 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:37 v #15567 > > │ ### to 00:15:37 v #15568 > > 00:15:37 v #15569 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:37 v #15570 > > inl to forall t u. (x : t) : u = 00:15:37 v #15571 > > $'!x ' : u 00:15:38 v #15572 > > 00:15:38 v #15573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15574 > > │ ### convert 00:15:38 v #15575 > > 00:15:38 v #15576 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15577 > > inl convert forall t u. (x : t) : u = 00:15:38 v #15578 > > backend_switch { 00:15:38 v #15579 > > Fsharp = fun () => $'!x |> `u ' : u 00:15:38 v #15580 > > Python = fun () => $'`u(!x)' : u 00:15:38 v #15581 > > } 00:15:38 v #15582 > > 00:15:38 v #15583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15584 > > │ ### unbox 00:15:38 v #15585 > > 00:15:38 v #15586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15587 > > inl unbox forall t u. (x : t) : u = 00:15:38 v #15588 > > backend_switch { 00:15:38 v #15589 > > Fsharp = fun () => $'!x |> unbox<`u>' : u 00:15:38 v #15590 > > Python = fun () => x |> to : u 00:15:38 v #15591 > > } 00:15:38 v #15592 > > 00:15:38 v #15593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15594 > > │ ### u8 00:15:38 v #15595 > > 00:15:38 v #15596 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15597 > > inl u8 forall t. (x : t) : u8 = 00:15:38 v #15598 > > backend_switch { 00:15:38 v #15599 > > Fsharp = fun () => x |> $'uint8' : u8 00:15:38 v #15600 > > Python = fun () => x |> to : u8 00:15:38 v #15601 > > } 00:15:38 v #15602 > > 00:15:38 v #15603 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15604 > > │ ### u16 00:15:38 v #15605 > > 00:15:38 v #15606 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15607 > > inl u16 forall t. (x : t) : u16 = 00:15:38 v #15608 > > backend_switch { 00:15:38 v #15609 > > Fsharp = fun () => x |> $'uint16' : u16 00:15:38 v #15610 > > Python = fun () => $'!x & 0xFFFF' : u16 00:15:38 v #15611 > > } 00:15:38 v #15612 > > 00:15:38 v #15613 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15614 > > │ ### u64 00:15:38 v #15615 > > 00:15:38 v #15616 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15617 > > inl u64 forall t. (x : t) : u64 = 00:15:38 v #15618 > > backend_switch { 00:15:38 v #15619 > > Fsharp = fun () => x |> $'uint64' : u64 00:15:38 v #15620 > > Python = fun () => x |> to : u64 00:15:38 v #15621 > > } 00:15:38 v #15622 > > 00:15:38 v #15623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:38 v #15624 > > │ ### i32 00:15:38 v #15625 > > 00:15:38 v #15626 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:38 v #15627 > > inl i32 forall t. (x : t) : i32 = 00:15:38 v #15628 > > backend_switch { 00:15:38 v #15629 > > Fsharp = fun () => x |> convert : i32 00:15:38 v #15630 > > Python = fun () => x |> convert : i32 00:15:38 v #15631 > > } 00:15:39 v #15632 > > 00:15:39 v #15633 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15634 > > │ ### i64 00:15:39 v #15635 > > 00:15:39 v #15636 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15637 > > inl i64 forall t. (x : t) : i64 = 00:15:39 v #15638 > > backend_switch { 00:15:39 v #15639 > > Fsharp = fun () => x |> $'int64' : i64 00:15:39 v #15640 > > Python = fun () => x |> to : i64 00:15:39 v #15641 > > } 00:15:39 v #15642 > > 00:15:39 v #15643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15644 > > │ ### f32 00:15:39 v #15645 > > 00:15:39 v #15646 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15647 > > inl f32 forall t. (x : t) : f32 = 00:15:39 v #15648 > > backend_switch { 00:15:39 v #15649 > > Fsharp = fun () => x |> $'float32' : f32 00:15:39 v #15650 > > Python = fun () => x |> to : f32 00:15:39 v #15651 > > } 00:15:39 v #15652 > > 00:15:39 v #15653 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15654 > > │ ### f64 00:15:39 v #15655 > > 00:15:39 v #15656 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15657 > > inl f64 forall t. (x : t) : f64 = 00:15:39 v #15658 > > backend_switch { 00:15:39 v #15659 > > Fsharp = fun () => x |> $'float' : f64 00:15:39 v #15660 > > Python = fun () => x |> to : f64 00:15:39 v #15661 > > } 00:15:39 v #15662 > > 00:15:39 v #15663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15664 > > │ ### unativeint 00:15:39 v #15665 > > 00:15:39 v #15666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15667 > > nominal unativeint = $'unativeint' 00:15:39 v #15668 > > 00:15:39 v #15669 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15670 > > │ ### convert_i32 00:15:39 v #15671 > > 00:15:39 v #15672 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15673 > > inl convert_i32 forall t. (x : t) : i32 = 00:15:39 v #15674 > > backend_switch { 00:15:39 v #15675 > > Fsharp = fun () => x |> $'System.Convert.ToInt32' : i32 00:15:39 v #15676 > > Python = fun () => x |> to : i32 00:15:39 v #15677 > > } 00:15:39 v #15678 > > 00:15:39 v #15679 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:39 v #15680 > > │ ### convert_i32_base 00:15:39 v #15681 > > 00:15:39 v #15682 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:39 v #15683 > > inl convert_i32_base forall t. (base : i32) (x : t) : i32 = 00:15:39 v #15684 > > backend_switch { 00:15:39 v #15685 > > Fsharp = fun () => $'System.Convert.ToInt32 (!x, !base)' : i32 00:15:39 v #15686 > > Python = fun () => $'int (!x, !base)' : i32 00:15:39 v #15687 > > } 00:15:40 v #15688 > > 00:15:40 v #15689 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15690 > > │ ### (:>) 00:15:40 v #15691 > > 00:15:40 v #15692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15693 > > prototype (~:>) r : forall t. t -> r 00:15:40 v #15694 > > 00:15:40 v #15695 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15696 > > │ ### to_any 00:15:40 v #15697 > > 00:15:40 v #15698 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15699 > > inl to_any forall t. (obj : t) : any = 00:15:40 v #15700 > > obj |> to 00:15:40 v #15701 > > 00:15:40 v #15702 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15703 > > │ ### (~:>) any 00:15:40 v #15704 > > 00:15:40 v #15705 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15706 > > instance (~:>) any = to_any 00:15:40 v #15707 > > 00:15:40 v #15708 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15709 > > │ ## error 00:15:40 v #15710 > > 00:15:40 v #15711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15712 > > │ ### exn 00:15:40 v #15713 > > 00:15:40 v #15714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15715 > > nominal exn = $"backend_switch `({ Fsharp : $'exn'; Python : $'BaseException' 00:15:40 v #15716 > > })" 00:15:40 v #15717 > > 00:15:40 v #15718 > > inl exn x = 00:15:40 v #15719 > > x |> $'`exn ' 00:15:40 v #15720 > > 00:15:40 v #15721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:40 v #15722 > > │ ### try 00:15:40 v #15723 > > 00:15:40 v #15724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15725 > > inl try forall t. (fn : () -> t) (ex_fn : exn -> option t) : option t = 00:15:40 v #15726 > > inl some x : option t = Some x 00:15:40 v #15727 > > inl some = dyn some 00:15:40 v #15728 > > inl fn = dyn fn 00:15:40 v #15729 > > inl ex_fn = dyn ex_fn 00:15:40 v #15730 > > backend_switch { 00:15:40 v #15731 > > Fsharp = fun () => 00:15:40 v #15732 > > $'let result = ref !(None : option t)' 00:15:40 v #15733 > > $'try' 00:15:40 v #15734 > > $' result.Value <- !fn () |> !some ' 00:15:40 v #15735 > > $'with ex ->' 00:15:40 v #15736 > > $' result.Value <- !ex_fn ex ' 00:15:40 v #15737 > > $'result.Value' : option t 00:15:40 v #15738 > > Python = fun () => 00:15:40 v #15739 > > $'result = !(None : option t)' 00:15:40 v #15740 > > inl fn = dyn fn 00:15:40 v #15741 > > inl ex_fn = dyn ex_fn 00:15:40 v #15742 > > $'try:' 00:15:40 v #15743 > > $' result = !some(!fn())\n \'\'\'' 00:15:40 v #15744 > > $'\'\'\'' 00:15:40 v #15745 > > $'except Exception as e:' 00:15:40 v #15746 > > $' result = !ex_fn(e)' 00:15:40 v #15747 > > $'result' : option t 00:15:40 v #15748 > > } 00:15:40 v #15749 > > 00:15:40 v #15750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:40 v #15751 > > //// test 00:15:40 v #15752 > > ///! fsharp 00:15:40 v #15753 > > ///! cuda 00:15:40 v #15754 > > ///! rust 00:15:40 v #15755 > > ///! typescript 00:15:40 v #15756 > > ///! python 00:15:40 v #15757 > > 00:15:40 v #15758 > > try 00:15:40 v #15759 > > fun () => a ;[[ 0i32 ]] |> am'.index 1i32 |> sm'.format 00:15:40 v #15760 > > (fun ex => $'!ex ' |> sm'.format_exception |> Some) 00:15:40 v #15761 > > |> optionm.value 00:15:40 v #15762 > > |> _assert_eq (run_target function 00:15:40 v #15763 > > | Fsharp => fun () => join "System.IndexOutOfRangeException: Index was 00:15:40 v #15764 > > outside the bounds of the array." 00:15:40 v #15765 > > | Cuda => fun () => "index 1 is out of bounds for axis 0 with size 1" 00:15:40 v #15766 > > | Rust => fun () => "Exception { message: \"index out of bounds: the len is 00:15:40 v #15767 > > 1 but the index is 1\" }" 00:15:40 v #15768 > > | TypeScript => fun () => "Error: Index was outside the bounds of the 00:15:40 v #15769 > > array.\\nParameter name: index" 00:15:40 v #15770 > > | Python => fun () => "array index out of range" 00:15:40 v #15771 > > ) 00:15:49 v #15772 > > 00:15:49 v #15773 > > ── [ 9.07s - return value ] ──────────────────────────────────────────────────── 00:15:49 v #15774 > > │ .py output (Cuda): 00:15:49 v #15775 > > │ __assert_eq / actual: index 1 is out of bounds for axis 0 00:15:49 v #15776 > > with size 1 / expected: index 1 is out of bounds for axis 0 with size 1 00:15:49 v #15777 > > │ 00:15:49 v #15778 > > │ .rs output: 00:15:49 v #15779 > > │ __assert_eq / actual: "Exception { message: "index out of 00:15:49 v #15780 > > bounds: the len is 1 but the index is 1" }" / expected: "Exception { message: 00:15:49 v #15781 > > "index out of bounds: the len is 1 but the index is 1" }" 00:15:49 v #15782 > > │ 00:15:49 v #15783 > > │ .ts output: 00:15:49 v #15784 > > │ __assert_eq / actual: Error: Index was outside the bounds of 00:15:49 v #15785 > > the array.\nParameter name: index / expected: Error: Index was outside the 00:15:49 v #15786 > > bounds of the array.\nParameter name: index 00:15:49 v #15787 > > │ 00:15:49 v #15788 > > │ .py output: 00:15:49 v #15789 > > │ __assert_eq / actual: array index out of range / expected: 00:15:49 v #15790 > > array index out of range 00:15:49 v #15791 > > │ 00:15:49 v #15792 > > │ 00:15:49 v #15793 > > 00:15:49 v #15794 > > ── [ 9.07s - stdout ] ────────────────────────────────────────────────────────── 00:15:49 v #15795 > > │ .fsx output: 00:15:49 v #15796 > > │ __assert_eq / actual: "System.IndexOutOfRangeException: Index 00:15:49 v #15797 > > was outside the bounds of the array." / expected: 00:15:49 v #15798 > > "System.IndexOutOfRangeException: Index was outside the bounds of the array." 00:15:49 v #15799 > > │ 00:15:49 v #15800 > > 00:15:49 v #15801 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:49 v #15802 > > │ ### try_unit 00:15:49 v #15803 > > 00:15:49 v #15804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:49 v #15805 > > inl try_unit forall t. (fn : () -> ()) (ex_fn : (() -> exn) -> ()) : t = 00:15:49 v #15806 > > backend_switch { 00:15:49 v #15807 > > Fsharp = fun () => $'try' : () 00:15:49 v #15808 > > Python = fun () => $'try:' : () 00:15:49 v #15809 > > } 00:15:49 v #15810 > > fn |> indent 00:15:49 v #15811 > > backend_switch { 00:15:49 v #15812 > > Fsharp = fun () => $'with ex ->' : () 00:15:49 v #15813 > > Python = fun () => $'except Exception as ex:' : () 00:15:49 v #15814 > > } 00:15:49 v #15815 > > fun () => 00:15:49 v #15816 > > inl ex = $'ex' 00:15:49 v #15817 > > inl ex () = 00:15:49 v #15818 > > ex 00:15:49 v #15819 > > ex_fn ex 00:15:49 v #15820 > > |> indent 00:15:49 v #15821 > > backend_switch { 00:15:49 v #15822 > > Fsharp = fun () => 00:15:49 v #15823 > > $'(* try_unit' 00:15:49 v #15824 > > $'try_unit *)' : t 00:15:49 v #15825 > > Python = fun () => $'' : t 00:15:49 v #15826 > > } 00:15:50 v #15827 > > 00:15:50 v #15828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:50 v #15829 > > │ ### try_unit' 00:15:50 v #15830 > > 00:15:50 v #15831 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:50 v #15832 > > inl try_unit' forall t. (ex_fn : (() -> exn) -> ()) (fn : () -> ()) : t = 00:15:50 v #15833 > > try_unit fn ex_fn 00:15:50 v #15834 > > 00:15:50 v #15835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:50 v #15836 > > │ ### try_finally 00:15:50 v #15837 > > 00:15:50 v #15838 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:50 v #15839 > > inl try_finally forall t. (fn : () -> ()) (finally : () -> ()) : t = 00:15:50 v #15840 > > backend_switch { 00:15:50 v #15841 > > Fsharp = fun () => $'try' : () 00:15:50 v #15842 > > Python = fun () => $'try:' : () 00:15:50 v #15843 > > } 00:15:50 v #15844 > > fn |> indent 00:15:50 v #15845 > > backend_switch { 00:15:50 v #15846 > > Fsharp = fun () => $'finally' : () 00:15:50 v #15847 > > Python = fun () => $'finally:' : () 00:15:50 v #15848 > > } 00:15:50 v #15849 > > finally |> indent 00:15:50 v #15850 > > backend_switch { 00:15:50 v #15851 > > Fsharp = fun () => 00:15:50 v #15852 > > $'(* try_finally' 00:15:50 v #15853 > > $'try_finally *)' 00:15:50 v #15854 > > () 00:15:50 v #15855 > > Python = fun () => () 00:15:50 v #15856 > > } 00:15:50 v #15857 > 00:02:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 87742 } 00:15:50 v #15858 > 00:02:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:51 v #15859 > 00:02:32 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.ipynb to html 00:15:51 v #15860 > 00:02:32 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:15:51 v #15861 > 00:02:32 v #7 ! validate(nb) 00:15:51 v #15862 > 00:02:33 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:15:51 v #15863 > 00:02:33 v #9 ! return _pygments_highlight( 00:15:52 v #15864 > 00:02:33 v #10 ! [NbConvertApp] Writing 478905 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html 00:15:52 v #15865 > 00:02:33 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:15:52 v #15866 > 00:02:33 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:15:52 v #15867 > 00:02:33 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/base.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:52 v #15868 > 00:02:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:15:52 v #15869 > 00:02:34 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:15:52 v #15870 > 00:02:34 d #16 spiral.run / dib / { exit_code = 0; result_length = 88693 } 00:15:52 d #15871 runtime.execute_with_options_async / { exit_code = 0; output_length = 95720 } 00:15:52 d #19 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path base.dib --retries 3 00:15:52 d #15872 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path date_time.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:52 v #15873 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "date_time.dib", "--retries", "3"])) } 00:15:52 v #15874 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:15:54 v #15875 > > 00:15:54 v #15876 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:54 v #15877 > > │ # date_time 00:15:56 v #15878 > > 00:15:56 v #15879 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:56 v #15880 > > open rust.rust_operators 00:15:56 v #15881 > > open sm'_operators 00:15:57 v #15882 > > 00:15:57 v #15883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #15884 > > //// test 00:15:57 v #15885 > > 00:15:57 v #15886 > > open testing 00:15:57 v #15887 > > 00:15:57 v #15888 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:57 v #15889 > > │ ## date_time 00:15:57 v #15890 > > 00:15:57 v #15891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:57 v #15892 > > │ ### timestamp 00:15:57 v #15893 > > 00:15:57 v #15894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #15895 > > nominal timestamp_python = 00:15:57 v #15896 > > `( 00:15:57 v #15897 > > backend_switch `(()) `({}) { 00:15:57 v #15898 > > Python = (fun () => global "import datetime") : () -> () 00:15:57 v #15899 > > } 00:15:57 v #15900 > > $'' : i64 00:15:57 v #15901 > > ) 00:15:57 v #15902 > > type timestamp_switch = 00:15:57 v #15903 > > { 00:15:57 v #15904 > > Fsharp : i64 00:15:57 v #15905 > > Python : timestamp_python 00:15:57 v #15906 > > } 00:15:57 v #15907 > > nominal timestamp = $'backend_switch `(timestamp_switch)' 00:15:57 v #15908 > > 00:15:57 v #15909 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:57 v #15910 > > │ ### timestamp_guid 00:15:57 v #15911 > > 00:15:57 v #15912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #15913 > > type timestamp_guid = guid.guid 00:15:57 v #15914 > > 00:15:57 v #15915 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:57 v #15916 > > │ ### date_time_guid 00:15:57 v #15917 > > 00:15:57 v #15918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:57 v #15919 > > type date_time_guid = guid.guid 00:15:58 v #15920 > > 00:15:58 v #15921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15922 > > │ ### test_guid 00:15:58 v #15923 > > 00:15:58 v #15924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15925 > > //// test 00:15:58 v #15926 > > 00:15:58 v #15927 > > inl test_guid () = 00:15:58 v #15928 > > "6543210F-EDCB-A987-6543-210FEDCBA987" |> guid.new_guid 00:15:58 v #15929 > > 00:15:58 v #15930 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15931 > > │ ## fsharp 00:15:58 v #15932 > > 00:15:58 v #15933 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15934 > > │ ### date_time 00:15:58 v #15935 > > 00:15:58 v #15936 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15937 > > nominal date_time_python = 00:15:58 v #15938 > > `( 00:15:58 v #15939 > > backend_switch `(()) `({}) { 00:15:58 v #15940 > > Python = (fun () => global "import datetime") : () -> () 00:15:58 v #15941 > > } 00:15:58 v #15942 > > $'' : $'datetime.datetime' 00:15:58 v #15943 > > ) 00:15:58 v #15944 > > type date_time_switch = 00:15:58 v #15945 > > { 00:15:58 v #15946 > > Fsharp : $'System.DateTime' 00:15:58 v #15947 > > Python : date_time_python 00:15:58 v #15948 > > } 00:15:58 v #15949 > > nominal date_time = $'backend_switch `(date_time_switch)' 00:15:58 v #15950 > > 00:15:58 v #15951 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15952 > > │ ### year 00:15:58 v #15953 > > 00:15:58 v #15954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15955 > > inl year (date_time : date_time) : i32 = 00:15:58 v #15956 > > backend_switch { 00:15:58 v #15957 > > Fsharp = fun () => date_time |> $'_.Year' : i32 00:15:58 v #15958 > > Python = fun () => $'!date_time.year' : i32 00:15:58 v #15959 > > } 00:15:58 v #15960 > > 00:15:58 v #15961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15962 > > │ ### format 00:15:58 v #15963 > > 00:15:58 v #15964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15965 > > inl format (format : string) (date_time : date_time) : string = 00:15:58 v #15966 > > backend_switch { 00:15:58 v #15967 > > Fsharp = fun () => 00:15:58 v #15968 > > inl format = 00:15:58 v #15969 > > if format = "" 00:15:58 v #15970 > > then "M-d-y hh:mm:ss tt" 00:15:58 v #15971 > > else format 00:15:58 v #15972 > > $'!date_time.ToString' format : string 00:15:58 v #15973 > > Python = fun () => 00:15:58 v #15974 > > inl date_time = join date_time 00:15:58 v #15975 > > if format <> "" 00:15:58 v #15976 > > then $'!date_time.strftime(!format)' : string 00:15:58 v #15977 > > elif year date_time < 1000 00:15:58 v #15978 > > then $'\'{dt.month}-{dt.day}-{dt.year} {dt:%I}:{dt:%M}:{dt:%S} 00:15:58 v #15979 > > {dt:%p}\'.format(dt=!date_time)' : string 00:15:58 v #15980 > > else $'\'{dt.month}-{dt.day}-{dt:%y} {dt:%I}:{dt:%M}:{dt:%S} 00:15:58 v #15981 > > {dt:%p}\'.format(dt=!date_time)' : string 00:15:58 v #15982 > > } 00:15:58 v #15983 > > 00:15:58 v #15984 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15985 > > │ ### format_iso8601 00:15:58 v #15986 > > 00:15:58 v #15987 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15988 > > inl format_iso8601 (date_time : date_time) : string = 00:15:58 v #15989 > > backend_switch { 00:15:58 v #15990 > > Fsharp = fun () => date_time |> format "yyyy-MM-ddTHH-mm-ss.fff" : 00:15:58 v #15991 > > string 00:15:58 v #15992 > > Python = fun () => date_time |> format "%Y-%m-%dT%H-%M-%S.%f" : string 00:15:58 v #15993 > > } 00:15:58 v #15994 > > 00:15:58 v #15995 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:15:58 v #15996 > > │ ### min_value 00:15:58 v #15997 > > 00:15:58 v #15998 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:58 v #15999 > > inl min_value () : date_time = 00:15:58 v #16000 > > backend_switch { 00:15:58 v #16001 > > Fsharp = fun () => $'System.DateTime.MinValue' : date_time 00:15:58 v #16002 > > Python = fun () => $'datetime.datetime.min' : date_time 00:15:58 v #16003 > > } 00:15:59 v #16004 > > 00:15:59 v #16005 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:15:59 v #16006 > > //// test 00:15:59 v #16007 > > ///! fsharp 00:15:59 v #16008 > > ///! cuda 00:15:59 v #16009 > > 00:15:59 v #16010 > > min_value () 00:15:59 v #16011 > > |> format "" 00:15:59 v #16012 > > |> _assert_eq "1-1-1 12:00:00 AM" 00:16:00 v #16013 > > 00:16:00 v #16014 > > ── [ 1.13s - return value ] ──────────────────────────────────────────────────── 00:16:00 v #16015 > > │ .py output (Cuda): 00:16:00 v #16016 > > │ __assert_eq / actual: 1-1-1 12:00:00 AM / expected: 1-1-1 00:16:00 v #16017 > > 12:00:00 AM 00:16:00 v #16018 > > │ 00:16:00 v #16019 > > │ 00:16:00 v #16020 > > 00:16:00 v #16021 > > ── [ 1.14s - stdout ] ────────────────────────────────────────────────────────── 00:16:00 v #16022 > > │ .fsx output: 00:16:00 v #16023 > > │ __assert_eq / actual: "1-1-1 12:00:00 AM" / expected: "1-1-1 00:16:00 v #16024 > > 12:00:00 AM" 00:16:00 v #16025 > > │ 00:16:00 v #16026 > > 00:16:00 v #16027 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:00 v #16028 > > │ ### max_value 00:16:00 v #16029 > > 00:16:00 v #16030 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:00 v #16031 > > inl max_value () : date_time = 00:16:00 v #16032 > > backend_switch { 00:16:00 v #16033 > > Fsharp = fun () => $'System.DateTime.MaxValue' : date_time 00:16:00 v #16034 > > Python = fun () => $'datetime.datetime.max' : date_time 00:16:00 v #16035 > > } 00:16:00 v #16036 > > 00:16:00 v #16037 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:00 v #16038 > > //// test 00:16:00 v #16039 > > ///! fsharp 00:16:00 v #16040 > > ///! cuda 00:16:00 v #16041 > > 00:16:00 v #16042 > > max_value () 00:16:00 v #16043 > > |> format "" 00:16:00 v #16044 > > |> _assert_eq "12-31-99 11:59:59 PM" 00:16:00 v #16045 > > 00:16:00 v #16046 > > ── [ 596.32ms - return value ] ───────────────────────────────────────────────── 00:16:00 v #16047 > > │ .py output (Cuda): 00:16:00 v #16048 > > │ __assert_eq / actual: 12-31-99 11:59:59 PM / expected: 00:16:00 v #16049 > > 12-31-99 11:59:59 PM 00:16:00 v #16050 > > │ 00:16:00 v #16051 > > │ 00:16:00 v #16052 > > 00:16:00 v #16053 > > ── [ 596.93ms - stdout ] ─────────────────────────────────────────────────────── 00:16:00 v #16054 > > │ .fsx output: 00:16:00 v #16055 > > │ __assert_eq / actual: "12-31-99 11:59:59 PM" / expected: 00:16:00 v #16056 > > "12-31-99 11:59:59 PM" 00:16:00 v #16057 > > │ 00:16:00 v #16058 > > 00:16:00 v #16059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:00 v #16060 > > │ ### unix_epoch 00:16:00 v #16061 > > 00:16:00 v #16062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:00 v #16063 > > inl unix_epoch () : date_time = 00:16:00 v #16064 > > backend_switch { 00:16:00 v #16065 > > Fsharp = fun () => $'System.DateTime.UnixEpoch' : date_time 00:16:00 v #16066 > > Python = fun () => $'datetime.datetime(1970, 1, 1)' : date_time 00:16:00 v #16067 > > } 00:16:01 v #16068 > > 00:16:01 v #16069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:01 v #16070 > > //// test 00:16:01 v #16071 > > ///! fsharp 00:16:01 v #16072 > > ///! cuda 00:16:01 v #16073 > > 00:16:01 v #16074 > > unix_epoch () 00:16:01 v #16075 > > |> format "" 00:16:01 v #16076 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:01 v #16077 > > 00:16:01 v #16078 > > ── [ 617.59ms - return value ] ───────────────────────────────────────────────── 00:16:01 v #16079 > > │ .py output (Cuda): 00:16:01 v #16080 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:01 v #16081 > > 12:00:00 AM 00:16:01 v #16082 > > │ 00:16:01 v #16083 > > │ 00:16:01 v #16084 > > 00:16:01 v #16085 > > ── [ 618.25ms - stdout ] ─────────────────────────────────────────────────────── 00:16:01 v #16086 > > │ .fsx output: 00:16:01 v #16087 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:01 v #16088 > > "1-1-70 12:00:00 AM" 00:16:01 v #16089 > > │ 00:16:01 v #16090 > > 00:16:01 v #16091 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:01 v #16092 > > │ ### date_time_milliseconds 00:16:01 v #16093 > > 00:16:01 v #16094 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:01 v #16095 > > inl date_time_milliseconds 00:16:01 v #16096 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:16:01 v #16097 > > int) (millisecond : int) 00:16:01 v #16098 > > : date_time 00:16:01 v #16099 > > = 00:16:01 v #16100 > > backend_switch { 00:16:01 v #16101 > > Fsharp = fun () => 00:16:01 v #16102 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:16:01 v #16103 > > !millisecond)' : date_time 00:16:01 v #16104 > > Python = fun () => 00:16:01 v #16105 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:16:01 v #16106 > > !millisecond)' : date_time 00:16:01 v #16107 > > } 00:16:01 v #16108 > > 00:16:01 v #16109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:01 v #16110 > > //// test 00:16:01 v #16111 > > ///! fsharp 00:16:01 v #16112 > > ///! cuda 00:16:01 v #16113 > > 00:16:01 v #16114 > > date_time_milliseconds 1970 1 1 0 0 0 0 00:16:01 v #16115 > > |> format "" 00:16:01 v #16116 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:02 v #16117 > > 00:16:02 v #16118 > > ── [ 521.97ms - return value ] ───────────────────────────────────────────────── 00:16:02 v #16119 > > │ .py output (Cuda): 00:16:02 v #16120 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:02 v #16121 > > 12:00:00 AM 00:16:02 v #16122 > > │ 00:16:02 v #16123 > > │ 00:16:02 v #16124 > > 00:16:02 v #16125 > > ── [ 522.54ms - stdout ] ─────────────────────────────────────────────────────── 00:16:02 v #16126 > > │ .fsx output: 00:16:02 v #16127 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:02 v #16128 > > "1-1-70 12:00:00 AM" 00:16:02 v #16129 > > │ 00:16:02 v #16130 > > 00:16:02 v #16131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:02 v #16132 > > │ ### date_time_utc 00:16:02 v #16133 > > 00:16:02 v #16134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:02 v #16135 > > inl date_time_utc 00:16:02 v #16136 > > (year : int) (month : int) (day : int) (hour : int) (minute : int) (second : 00:16:02 v #16137 > > int) 00:16:02 v #16138 > > : date_time 00:16:02 v #16139 > > = 00:16:02 v #16140 > > backend_switch { 00:16:02 v #16141 > > Fsharp = fun () => 00:16:02 v #16142 > > $'System.DateTime (!year, !month, !day, !hour, !minute, !second, 00:16:02 v #16143 > > System.DateTimeKind.Utc)' : date_time 00:16:02 v #16144 > > Python = fun () => 00:16:02 v #16145 > > $'datetime.datetime(!year, !month, !day, !hour, !minute, !second, 00:16:02 v #16146 > > tzinfo=datetime.timezone.utc)' : date_time 00:16:02 v #16147 > > } 00:16:02 v #16148 > > 00:16:02 v #16149 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:02 v #16150 > > //// test 00:16:02 v #16151 > > ///! fsharp 00:16:02 v #16152 > > ///! cuda 00:16:02 v #16153 > > 00:16:02 v #16154 > > date_time_utc 1970 1 1 0 0 0 00:16:02 v #16155 > > |> format "" 00:16:02 v #16156 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:03 v #16157 > > 00:16:03 v #16158 > > ── [ 557.78ms - return value ] ───────────────────────────────────────────────── 00:16:03 v #16159 > > │ .py output (Cuda): 00:16:03 v #16160 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:03 v #16161 > > 12:00:00 AM 00:16:03 v #16162 > > │ 00:16:03 v #16163 > > │ 00:16:03 v #16164 > > 00:16:03 v #16165 > > ── [ 558.23ms - stdout ] ─────────────────────────────────────────────────────── 00:16:03 v #16166 > > │ .fsx output: 00:16:03 v #16167 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:03 v #16168 > > "1-1-70 12:00:00 AM" 00:16:03 v #16169 > > │ 00:16:03 v #16170 > > 00:16:03 v #16171 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:03 v #16172 > > │ ### date_time_kind 00:16:03 v #16173 > > 00:16:03 v #16174 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:03 v #16175 > > union date_time_kind = 00:16:03 v #16176 > > | Unspecified 00:16:03 v #16177 > > | Utc 00:16:03 v #16178 > > | Local 00:16:03 v #16179 > > 00:16:03 v #16180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:03 v #16181 > > │ ### specify_date_kind 00:16:03 v #16182 > > 00:16:03 v #16183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:03 v #16184 > > inl specify_date_kind (kind : date_time_kind) (date_time : date_time) : 00:16:03 v #16185 > > date_time = 00:16:03 v #16186 > > backend_switch { 00:16:03 v #16187 > > Fsharp = fun () => 00:16:03 v #16188 > > inl kind : $'System.DateTimeKind' = 00:16:03 v #16189 > > match kind with 00:16:03 v #16190 > > | Unspecified => $'System.DateTimeKind.Unspecified' 00:16:03 v #16191 > > | Utc => $'System.DateTimeKind.Utc' 00:16:03 v #16192 > > | Local => $'System.DateTimeKind.Local' 00:16:03 v #16193 > > $'System.DateTime.SpecifyKind (!date_time, !kind)' : date_time 00:16:03 v #16194 > > Python = fun () => $'!date_time.replace(tzinfo=None)' : date_time 00:16:03 v #16195 > > } 00:16:03 v #16196 > > 00:16:03 v #16197 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:03 v #16198 > > │ ### to_universal_time 00:16:03 v #16199 > > 00:16:03 v #16200 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:03 v #16201 > > inl to_universal_time (date_time : date_time) : date_time = 00:16:03 v #16202 > > backend_switch { 00:16:03 v #16203 > > Fsharp = fun () => date_time |> $'_.ToUniversalTime()' : date_time 00:16:03 v #16204 > > Python = fun () => $'!date_time.replace(tzinfo=datetime.timezone.utc)' : 00:16:03 v #16205 > > date_time 00:16:03 v #16206 > > } 00:16:03 v #16207 > > 00:16:03 v #16208 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:03 v #16209 > > //// test 00:16:03 v #16210 > > ///! fsharp 00:16:03 v #16211 > > ///! cuda 00:16:03 v #16212 > > 00:16:03 v #16213 > > date_time_milliseconds 1970 1 1 0 0 0 0 00:16:03 v #16214 > > |> specify_date_kind Utc 00:16:03 v #16215 > > |> to_universal_time 00:16:03 v #16216 > > |> format "" 00:16:03 v #16217 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:04 v #16218 > > 00:16:04 v #16219 > > ── [ 599.65ms - return value ] ───────────────────────────────────────────────── 00:16:04 v #16220 > > │ .py output (Cuda): 00:16:04 v #16221 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:04 v #16222 > > 12:00:00 AM 00:16:04 v #16223 > > │ 00:16:04 v #16224 > > │ 00:16:04 v #16225 > > 00:16:04 v #16226 > > ── [ 600.26ms - stdout ] ─────────────────────────────────────────────────────── 00:16:04 v #16227 > > │ .fsx output: 00:16:04 v #16228 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:04 v #16229 > > "1-1-70 12:00:00 AM" 00:16:04 v #16230 > > │ 00:16:04 v #16231 > > 00:16:04 v #16232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:04 v #16233 > > //// test 00:16:04 v #16234 > > ///! fsharp 00:16:04 v #16235 > > ///! cuda 00:16:04 v #16236 > > 00:16:04 v #16237 > > date_time_utc 1970 1 1 0 0 0 00:16:04 v #16238 > > |> specify_date_kind Utc 00:16:04 v #16239 > > |> format "" 00:16:04 v #16240 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:04 v #16241 > > 00:16:04 v #16242 > > ── [ 580.33ms - return value ] ───────────────────────────────────────────────── 00:16:04 v #16243 > > │ .py output (Cuda): 00:16:04 v #16244 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:04 v #16245 > > 12:00:00 AM 00:16:04 v #16246 > > │ 00:16:04 v #16247 > > │ 00:16:04 v #16248 > > 00:16:04 v #16249 > > ── [ 580.94ms - stdout ] ─────────────────────────────────────────────────────── 00:16:04 v #16250 > > │ .fsx output: 00:16:04 v #16251 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:04 v #16252 > > "1-1-70 12:00:00 AM" 00:16:04 v #16253 > > │ 00:16:04 v #16254 > > 00:16:04 v #16255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:04 v #16256 > > //// test 00:16:04 v #16257 > > ///! fsharp 00:16:04 v #16258 > > ///! cuda 00:16:04 v #16259 > > 00:16:04 v #16260 > > date_time_utc 1970 1 1 0 0 0 00:16:04 v #16261 > > |> specify_date_kind Local 00:16:04 v #16262 > > |> format "" 00:16:04 v #16263 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:05 v #16264 > > 00:16:05 v #16265 > > ── [ 612.16ms - return value ] ───────────────────────────────────────────────── 00:16:05 v #16266 > > │ .py output (Cuda): 00:16:05 v #16267 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:05 v #16268 > > 12:00:00 AM 00:16:05 v #16269 > > │ 00:16:05 v #16270 > > │ 00:16:05 v #16271 > > 00:16:05 v #16272 > > ── [ 612.71ms - stdout ] ─────────────────────────────────────────────────────── 00:16:05 v #16273 > > │ .fsx output: 00:16:05 v #16274 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:05 v #16275 > > "1-1-70 12:00:00 AM" 00:16:05 v #16276 > > │ 00:16:05 v #16277 > > 00:16:05 v #16278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:05 v #16279 > > //// test 00:16:05 v #16280 > > ///! fsharp 00:16:05 v #16281 > > ///! cuda 00:16:05 v #16282 > > 00:16:05 v #16283 > > date_time_utc 1970 1 1 0 0 0 00:16:05 v #16284 > > |> specify_date_kind Unspecified 00:16:05 v #16285 > > |> format "" 00:16:05 v #16286 > > |> _assert_eq "1-1-70 12:00:00 AM" 00:16:05 v #16287 > > 00:16:05 v #16288 > > ── [ 569.77ms - return value ] ───────────────────────────────────────────────── 00:16:05 v #16289 > > │ .py output (Cuda): 00:16:05 v #16290 > > │ __assert_eq / actual: 1-1-70 12:00:00 AM / expected: 1-1-70 00:16:05 v #16291 > > 12:00:00 AM 00:16:05 v #16292 > > │ 00:16:05 v #16293 > > │ 00:16:05 v #16294 > > 00:16:05 v #16295 > > ── [ 570.36ms - stdout ] ─────────────────────────────────────────────────────── 00:16:05 v #16296 > > │ .fsx output: 00:16:05 v #16297 > > │ __assert_eq / actual: "1-1-70 12:00:00 AM" / expected: 00:16:05 v #16298 > > "1-1-70 12:00:00 AM" 00:16:05 v #16299 > > │ 00:16:05 v #16300 > > 00:16:05 v #16301 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:05 v #16302 > > │ ### time_span 00:16:05 v #16303 > > 00:16:05 v #16304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:05 v #16305 > > nominal time_span_python = 00:16:05 v #16306 > > `( 00:16:05 v #16307 > > backend_switch `(()) `({}) { 00:16:05 v #16308 > > Python = (fun () => global "import datetime") : () -> () 00:16:05 v #16309 > > } 00:16:05 v #16310 > > $'' : $'datetime.timedelta' 00:16:05 v #16311 > > ) 00:16:05 v #16312 > > type time_span_switch = 00:16:05 v #16313 > > { 00:16:05 v #16314 > > Fsharp : $'System.TimeSpan' 00:16:05 v #16315 > > Python : time_span_python 00:16:05 v #16316 > > } 00:16:05 v #16317 > > nominal time_span = $'backend_switch `(time_span_switch)' 00:16:05 v #16318 > > 00:16:05 v #16319 > > inl time_span x : time_span = 00:16:05 v #16320 > > backend_switch { 00:16:05 v #16321 > > Fsharp = fun () => x |> convert : time_span 00:16:05 v #16322 > > Python = fun () => $'datetime.timedelta(!x)' : time_span 00:16:05 v #16323 > > } 00:16:06 v #16324 > > 00:16:06 v #16325 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:06 v #16326 > > │ ### new_time_span 00:16:06 v #16327 > > 00:16:06 v #16328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:06 v #16329 > > inl new_time_span (a : date_time) (b : date_time) : time_span = 00:16:06 v #16330 > > $'!b - !a ' 00:16:06 v #16331 > > 00:16:06 v #16332 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:06 v #16333 > > │ ### total_seconds 00:16:06 v #16334 > > 00:16:06 v #16335 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:06 v #16336 > > inl total_seconds (time_span : time_span) : f64 = 00:16:06 v #16337 > > backend_switch { 00:16:06 v #16338 > > Fsharp = fun () => time_span |> $'_.TotalSeconds' : f64 00:16:06 v #16339 > > Python = fun () => $'!time_span.total_seconds()' : f64 00:16:06 v #16340 > > } 00:16:06 v #16341 > > 00:16:06 v #16342 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:06 v #16343 > > │ ### ticks 00:16:06 v #16344 > > 00:16:06 v #16345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:06 v #16346 > > inl ticks (date_time : date_time) : timestamp = 00:16:06 v #16347 > > backend_switch { 00:16:06 v #16348 > > Fsharp = fun () => 00:16:06 v #16349 > > run_target function 00:16:06 v #16350 > > | Rust (Contract) => fun () => null () 00:16:06 v #16351 > > | _ => fun () => date_time |> $'_.Ticks' 00:16:06 v #16352 > > : timestamp 00:16:06 v #16353 > > Python = fun () => 00:16:06 v #16354 > > date_time |> new_time_span (min_value ()) |> total_seconds |> ((*) 00:16:06 v #16355 > > 10000000) |> convert : timestamp 00:16:06 v #16356 > > } 00:16:06 v #16357 > > 00:16:06 v #16358 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:06 v #16359 > > //// test 00:16:06 v #16360 > > ///! fsharp 00:16:06 v #16361 > > ///! cuda 00:16:06 v #16362 > > ///! rust 00:16:06 v #16363 > > 00:16:06 v #16364 > > unix_epoch () 00:16:06 v #16365 > > |> ticks 00:16:06 v #16366 > > |> _assert_eq' (621355968000000000i64 |> convert) 00:16:12 v #16367 > > 00:16:12 v #16368 > > ── [ 6.06s - return value ] ──────────────────────────────────────────────────── 00:16:12 v #16369 > > │ .py output (Cuda): 00:16:12 v #16370 > > │ __assert_eq' / actual: 621355968000000000 / expected: 00:16:12 v #16371 > > 621355968000000000 00:16:12 v #16372 > > │ 00:16:12 v #16373 > > │ .rs output: 00:16:12 v #16374 > > │ __assert_eq' / actual: 621355968000000000 / expected: 00:16:12 v #16375 > > 621355968000000000 00:16:12 v #16376 > > │ 00:16:12 v #16377 > > │ 00:16:12 v #16378 > > 00:16:12 v #16379 > > ── [ 6.06s - stdout ] ────────────────────────────────────────────────────────── 00:16:12 v #16380 > > │ .fsx output: 00:16:12 v #16381 > > │ __assert_eq' / actual: 621355968000000000L / expected: 00:16:12 v #16382 > > 621355968000000000L 00:16:12 v #16383 > > │ 00:16:12 v #16384 > > 00:16:12 v #16385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:12 v #16386 > > │ ### time_span_format 00:16:12 v #16387 > > 00:16:12 v #16388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:12 v #16389 > > inl time_span_format (format : string) (time_span : time_span) : string = 00:16:12 v #16390 > > run_target function 00:16:12 v #16391 > > | TypeScript _ 00:16:12 v #16392 > > | Python _ => fun () => 00:16:12 v #16393 > > $'!time_span.ToString ("c", 00:16:12 v #16394 > > System.Globalization.CultureInfo.InvariantCulture)' 00:16:12 v #16395 > > | _ => fun () => 00:16:12 v #16396 > > backend_switch { 00:16:12 v #16397 > > Fsharp = fun () => $'!time_span.ToString !format ' : string 00:16:12 v #16398 > > Python = fun () => $'!time_span ' : string 00:16:12 v #16399 > > } 00:16:12 v #16400 > > 00:16:12 v #16401 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:12 v #16402 > > │ ### hours 00:16:12 v #16403 > > 00:16:12 v #16404 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:12 v #16405 > > inl hours (time_span : time_span) : i32 = 00:16:12 v #16406 > > backend_switch { 00:16:12 v #16407 > > Fsharp = fun () => time_span |> $'_.Hours' : i32 00:16:12 v #16408 > > Python = fun () => $'!time_span.seconds // 3600' : i32 00:16:12 v #16409 > > } 00:16:12 v #16410 > > 00:16:12 v #16411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:12 v #16412 > > //// test 00:16:12 v #16413 > > ///! fsharp 00:16:12 v #16414 > > ///! cuda 00:16:12 v #16415 > > ///! rust 00:16:12 v #16416 > > ///! typescript 00:16:12 v #16417 > > ///! python 00:16:12 v #16418 > > 00:16:12 v #16419 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:16:12 v #16420 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:16:12 v #16421 > > |> hours 00:16:12 v #16422 > > |> _assert_eq 10 00:16:20 v #16423 > > 00:16:20 v #16424 > > ── [ 7.94s - return value ] ──────────────────────────────────────────────────── 00:16:20 v #16425 > > │ .py output (Cuda): 00:16:20 v #16426 > > │ __assert_eq / actual: 10 / expected: 10 00:16:20 v #16427 > > │ 00:16:20 v #16428 > > │ .rs output: 00:16:20 v #16429 > > │ __assert_eq / actual: 10 / expected: 10 00:16:20 v #16430 > > │ 00:16:20 v #16431 > > │ .ts output: 00:16:20 v #16432 > > │ __assert_eq / actual: 10 / expected: 10 00:16:20 v #16433 > > │ 00:16:20 v #16434 > > │ .py output: 00:16:20 v #16435 > > │ __assert_eq / actual: 10 / expected: 10 00:16:20 v #16436 > > │ 00:16:20 v #16437 > > │ 00:16:20 v #16438 > > 00:16:20 v #16439 > > ── [ 7.94s - stdout ] ────────────────────────────────────────────────────────── 00:16:20 v #16440 > > │ .fsx output: 00:16:20 v #16441 > > │ __assert_eq / actual: 10 / expected: 10 00:16:20 v #16442 > > │ 00:16:20 v #16443 > > 00:16:20 v #16444 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:20 v #16445 > > │ ### minutes 00:16:20 v #16446 > > 00:16:20 v #16447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:20 v #16448 > > inl minutes (time_span : time_span) : i32 = 00:16:20 v #16449 > > backend_switch { 00:16:20 v #16450 > > Fsharp = fun () => time_span |> $'_.Minutes' : i32 00:16:20 v #16451 > > Python = fun () => $'(!time_span.seconds // 60) % 60' : i32 00:16:20 v #16452 > > } 00:16:21 v #16453 > > 00:16:21 v #16454 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:21 v #16455 > > //// test 00:16:21 v #16456 > > ///! fsharp 00:16:21 v #16457 > > ///! cuda 00:16:21 v #16458 > > ///! rust 00:16:21 v #16459 > > ///! typescript 00:16:21 v #16460 > > ///! python 00:16:21 v #16461 > > 00:16:21 v #16462 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:16:21 v #16463 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:16:21 v #16464 > > |> minutes 00:16:21 v #16465 > > |> _assert_eq 11 00:16:29 v #16466 > > 00:16:29 v #16467 > > ── [ 8.29s - return value ] ──────────────────────────────────────────────────── 00:16:29 v #16468 > > │ .py output (Cuda): 00:16:29 v #16469 > > │ __assert_eq / actual: 11 / expected: 11 00:16:29 v #16470 > > │ 00:16:29 v #16471 > > │ .rs output: 00:16:29 v #16472 > > │ __assert_eq / actual: 11 / expected: 11 00:16:29 v #16473 > > │ 00:16:29 v #16474 > > │ .ts output: 00:16:29 v #16475 > > │ __assert_eq / actual: 11 / expected: 11 00:16:29 v #16476 > > │ 00:16:29 v #16477 > > │ .py output: 00:16:29 v #16478 > > │ __assert_eq / actual: 11 / expected: 11 00:16:29 v #16479 > > │ 00:16:29 v #16480 > > │ 00:16:29 v #16481 > > 00:16:29 v #16482 > > ── [ 8.29s - stdout ] ────────────────────────────────────────────────────────── 00:16:29 v #16483 > > │ .fsx output: 00:16:29 v #16484 > > │ __assert_eq / actual: 11 / expected: 11 00:16:29 v #16485 > > │ 00:16:29 v #16486 > > 00:16:29 v #16487 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:29 v #16488 > > │ ### seconds 00:16:29 v #16489 > > 00:16:29 v #16490 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:29 v #16491 > > inl seconds (time_span : time_span) : i32 = 00:16:29 v #16492 > > backend_switch { 00:16:29 v #16493 > > Fsharp = fun () => time_span |> $'_.Seconds' : i32 00:16:29 v #16494 > > Python = fun () => $'!time_span.seconds % 60' : i32 00:16:29 v #16495 > > } 00:16:29 v #16496 > > 00:16:29 v #16497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:29 v #16498 > > //// test 00:16:29 v #16499 > > ///! fsharp 00:16:29 v #16500 > > ///! cuda 00:16:29 v #16501 > > ///! rust 00:16:29 v #16502 > > ///! typescript 00:16:29 v #16503 > > ///! python 00:16:29 v #16504 > > 00:16:29 v #16505 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:16:29 v #16506 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:16:29 v #16507 > > |> seconds 00:16:29 v #16508 > > |> _assert_eq 12 00:16:37 v #16509 > > 00:16:37 v #16510 > > ── [ 7.96s - return value ] ──────────────────────────────────────────────────── 00:16:37 v #16511 > > │ .py output (Cuda): 00:16:37 v #16512 > > │ __assert_eq / actual: 12 / expected: 12 00:16:37 v #16513 > > │ 00:16:37 v #16514 > > │ .rs output: 00:16:37 v #16515 > > │ __assert_eq / actual: 12 / expected: 12 00:16:37 v #16516 > > │ 00:16:37 v #16517 > > │ .ts output: 00:16:37 v #16518 > > │ __assert_eq / actual: 12 / expected: 12 00:16:37 v #16519 > > │ 00:16:37 v #16520 > > │ .py output: 00:16:37 v #16521 > > │ __assert_eq / actual: 12 / expected: 12 00:16:37 v #16522 > > │ 00:16:37 v #16523 > > │ 00:16:37 v #16524 > > 00:16:37 v #16525 > > ── [ 7.96s - stdout ] ────────────────────────────────────────────────────────── 00:16:37 v #16526 > > │ .fsx output: 00:16:37 v #16527 > > │ __assert_eq / actual: 12 / expected: 12 00:16:37 v #16528 > > │ 00:16:37 v #16529 > > 00:16:37 v #16530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:37 v #16531 > > │ ### milliseconds 00:16:37 v #16532 > > 00:16:37 v #16533 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:37 v #16534 > > inl milliseconds (time_span : time_span) : i32 = 00:16:37 v #16535 > > backend_switch { 00:16:37 v #16536 > > Fsharp = fun () => time_span |> $'_.Milliseconds' : i32 00:16:37 v #16537 > > Python = fun () => $'!time_span.microseconds' : i32 00:16:37 v #16538 > > } 00:16:37 v #16539 > > 00:16:37 v #16540 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:37 v #16541 > > //// test 00:16:37 v #16542 > > ///! fsharp 00:16:37 v #16543 > > ///! cuda 00:16:37 v #16544 > > ///! rust 00:16:37 v #16545 > > ///! typescript 00:16:37 v #16546 > > ///! python 00:16:37 v #16547 > > 00:16:37 v #16548 > > (join date_time_milliseconds 2002 2 2 20 22 24 26) 00:16:37 v #16549 > > |> new_time_span (date_time_milliseconds 2001 1 1 10 11 12 13) 00:16:37 v #16550 > > |> milliseconds 00:16:37 v #16551 > > |> _assert_eq 13 00:16:45 v #16552 > > 00:16:45 v #16553 > > ── [ 7.98s - return value ] ──────────────────────────────────────────────────── 00:16:45 v #16554 > > │ .py output (Cuda): 00:16:45 v #16555 > > │ __assert_eq / actual: 13 / expected: 13 00:16:45 v #16556 > > │ 00:16:45 v #16557 > > │ .rs output: 00:16:45 v #16558 > > │ __assert_eq / actual: 13 / expected: 13 00:16:45 v #16559 > > │ 00:16:45 v #16560 > > │ .ts output: 00:16:45 v #16561 > > │ __assert_eq / actual: 13 / expected: 13 00:16:45 v #16562 > > │ 00:16:45 v #16563 > > │ .py output: 00:16:45 v #16564 > > │ __assert_eq / actual: 13 / expected: 13 00:16:45 v #16565 > > │ 00:16:45 v #16566 > > │ 00:16:45 v #16567 > > 00:16:45 v #16568 > > ── [ 7.98s - stdout ] ────────────────────────────────────────────────────────── 00:16:45 v #16569 > > │ .fsx output: 00:16:45 v #16570 > > │ __assert_eq / actual: 13 / expected: 13 00:16:45 v #16571 > > │ 00:16:45 v #16572 > > 00:16:45 v #16573 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:45 v #16574 > > │ ### time_zone_info 00:16:45 v #16575 > > 00:16:45 v #16576 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:45 v #16577 > > nominal time_zone_info = $'System.TimeZoneInfo' 00:16:45 v #16578 > > 00:16:45 v #16579 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:45 v #16580 > > │ ### add_days 00:16:45 v #16581 > > 00:16:45 v #16582 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:45 v #16583 > > inl add_days (days : i32) (date_time : date_time) : date_time = 00:16:45 v #16584 > > $'!date_time.AddDays' days 00:16:45 v #16585 > > 00:16:45 v #16586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:45 v #16587 > > │ ### now 00:16:45 v #16588 > > 00:16:45 v #16589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:45 v #16590 > > inl now () : date_time = 00:16:45 v #16591 > > backend_switch { 00:16:45 v #16592 > > Fsharp = fun () => 00:16:45 v #16593 > > run_target function 00:16:45 v #16594 > > | Rust (Contract) => fun () => null () 00:16:45 v #16595 > > | _ => fun () => $'System.DateTime.Now' 00:16:45 v #16596 > > : date_time 00:16:45 v #16597 > > Python = fun () => $'datetime.datetime.now()' : date_time 00:16:45 v #16598 > > } 00:16:46 v #16599 > > 00:16:46 v #16600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16601 > > │ ### utc_now 00:16:46 v #16602 > > 00:16:46 v #16603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16604 > > inl utc_now () : date_time = 00:16:46 v #16605 > > backend_switch { 00:16:46 v #16606 > > Fsharp = fun () => $'System.DateTime.UtcNow' : date_time 00:16:46 v #16607 > > Python = fun () => $'datetime.datetime.utcnow()' : date_time 00:16:46 v #16608 > > } 00:16:46 v #16609 > > 00:16:46 v #16610 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16611 > > │ ### stopwatch 00:16:46 v #16612 > > 00:16:46 v #16613 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16614 > > nominal stopwatch_python = 00:16:46 v #16615 > > `( 00:16:46 v #16616 > > global "import timeit" 00:16:46 v #16617 > > $'' : $'timeit.default_timer' 00:16:46 v #16618 > > ) 00:16:46 v #16619 > > type stopwatch_switch = 00:16:46 v #16620 > > { 00:16:46 v #16621 > > Fsharp : $'System.Diagnostics.Stopwatch' 00:16:46 v #16622 > > Python : stopwatch_python 00:16:46 v #16623 > > } 00:16:46 v #16624 > > nominal stopwatch = $'backend_switch `(stopwatch_switch)' 00:16:46 v #16625 > > 00:16:46 v #16626 > > inl stopwatch () : stopwatch = 00:16:46 v #16627 > > backend_switch { 00:16:46 v #16628 > > Fsharp = fun () => () |> convert : stopwatch 00:16:46 v #16629 > > Python = fun () => $'`stopwatch ' : stopwatch 00:16:46 v #16630 > > } 00:16:46 v #16631 > > 00:16:46 v #16632 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16633 > > inl stopwatch_elapsed_milliseconds (stopwatch : stopwatch) : i64 = 00:16:46 v #16634 > > $'!stopwatch.ElapsedMilliseconds' 00:16:46 v #16635 > > 00:16:46 v #16636 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16637 > > inl stopwatch_start (stopwatch : stopwatch) : () = 00:16:46 v #16638 > > $'!stopwatch.Start' () 00:16:46 v #16639 > > 00:16:46 v #16640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16641 > > │ ## rust 00:16:46 v #16642 > > 00:16:46 v #16643 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16644 > > │ ### duration 00:16:46 v #16645 > > 00:16:46 v #16646 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16647 > > nominal duration = 00:16:46 v #16648 > > `( 00:16:46 v #16649 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:46 v #16650 > > Fable.Core.Emit(\"std::time::Duration\")>]]\n#endif\ntype std_time_Duration = 00:16:46 v #16651 > > class end" 00:16:46 v #16652 > > $'' : $'std_time_Duration' 00:16:46 v #16653 > > ) 00:16:46 v #16654 > > 00:16:46 v #16655 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16656 > > │ ### date_time' 00:16:46 v #16657 > > 00:16:46 v #16658 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16659 > > nominal date_time' t = 00:16:46 v #16660 > > `( 00:16:46 v #16661 > > backend_switch `(()) `({}) { 00:16:46 v #16662 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:46 v #16663 > > Fable.Core.Emit(\"chrono::DateTime<$0>\")>]]\n#endif\ntype chrono_DateTime<'T> = 00:16:46 v #16664 > > class end") : () -> () 00:16:46 v #16665 > > } 00:16:46 v #16666 > > $'' : $'chrono_DateTime<`t>' 00:16:46 v #16667 > > ) 00:16:46 v #16668 > > 00:16:46 v #16669 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:46 v #16670 > > │ ### local 00:16:46 v #16671 > > 00:16:46 v #16672 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:46 v #16673 > > nominal local = 00:16:46 v #16674 > > `( 00:16:46 v #16675 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:46 v #16676 > > Fable.Core.Emit(\"chrono::Local\")>]]\n#endif\ntype chrono_Local = class end" 00:16:46 v #16677 > > $'' : $'chrono_Local' 00:16:46 v #16678 > > ) 00:16:47 v #16679 > > 00:16:47 v #16680 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16681 > > │ ### naive_date_time 00:16:47 v #16682 > > 00:16:47 v #16683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16684 > > nominal naive_date_time = 00:16:47 v #16685 > > `( 00:16:47 v #16686 > > backend_switch `(()) `({}) { 00:16:47 v #16687 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:47 v #16688 > > Fable.Core.Emit(\"chrono::NaiveDateTime\")>]]\n#endif\ntype chrono_NaiveDateTime 00:16:47 v #16689 > > = class end") : () -> () 00:16:47 v #16690 > > } 00:16:47 v #16691 > > $'' : $'chrono_NaiveDateTime' 00:16:47 v #16692 > > ) 00:16:47 v #16693 > > 00:16:47 v #16694 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16695 > > │ ## utc 00:16:47 v #16696 > > 00:16:47 v #16697 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16698 > > nominal utc = 00:16:47 v #16699 > > `( 00:16:47 v #16700 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:16:47 v #16701 > > Fable.Core.Emit(\"chrono::Utc\")>]]\n#endif\ntype chrono_Utc = class end" 00:16:47 v #16702 > > $'' : $'chrono_Utc' 00:16:47 v #16703 > > ) 00:16:47 v #16704 > > 00:16:47 v #16705 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16706 > > │ ### naive_utc 00:16:47 v #16707 > > 00:16:47 v #16708 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16709 > > inl naive_utc (date_time : date_time' utc) : naive_date_time = 00:16:47 v #16710 > > !\\(date_time, $'"$0.naive_utc()"') 00:16:47 v #16711 > > 00:16:47 v #16712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16713 > > │ ### to_local 00:16:47 v #16714 > > 00:16:47 v #16715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16716 > > inl to_local (date_time : date_time' utc) : date_time' local = 00:16:47 v #16717 > > inl naive_date_time = date_time |> naive_utc 00:16:47 v #16718 > > !\\(naive_date_time, 00:16:47 v #16719 > > $'"chrono::offset::TimeZone::from_utc_datetime(&chrono::Local, &$0)"') 00:16:47 v #16720 > > 00:16:47 v #16721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16722 > > │ ### from_timestamp_micros 00:16:47 v #16723 > > 00:16:47 v #16724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16725 > > inl from_timestamp_micros forall t {number; int}. (timestamp : t) : option 00:16:47 v #16726 > > (date_time' utc) = 00:16:47 v #16727 > > inl result : optionm'.option' (date_time' utc) = 00:16:47 v #16728 > > !\\(timestamp, $'"chrono::DateTime::from_timestamp_micros($0)"') 00:16:47 v #16729 > > result |> optionm'.unbox 00:16:47 v #16730 > > 00:16:47 v #16731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:47 v #16732 > > │ ### format' 00:16:47 v #16733 > > 00:16:47 v #16734 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:47 v #16735 > > inl format' (format : string) (date_time : date_time' utc) : sm'.std_string = 00:16:47 v #16736 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:16:48 v #16737 > > 00:16:48 v #16738 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16739 > > │ ### format'' 00:16:48 v #16740 > > 00:16:48 v #16741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16742 > > inl format'' (format : string) (date_time : date_time' _) : sm'.std_string = 00:16:48 v #16743 > > !\\((date_time, #format), $'"$0.format($1).to_string()"') 00:16:48 v #16744 > > 00:16:48 v #16745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16746 > > │ ### format_timestamp 00:16:48 v #16747 > > 00:16:48 v #16748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16749 > > inl format_timestamp forall t {number; int}. (timestamp : t) = 00:16:48 v #16750 > > inl timestamp = join timestamp 00:16:48 v #16751 > > (timestamp / 1000) 00:16:48 v #16752 > > |> from_timestamp_micros 00:16:48 v #16753 > > |> optionm.map fun x => 00:16:48 v #16754 > > x 00:16:48 v #16755 > > |> to_local 00:16:48 v #16756 > > |> format'' "%Y-%m-%d %H:%M:%S" 00:16:48 v #16757 > > |> sm'.from_std_string 00:16:48 v #16758 > > |> resultm.from_option 00:16:48 v #16759 > > 00:16:48 v #16760 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16761 > > │ ### duration_from_millis 00:16:48 v #16762 > > 00:16:48 v #16763 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16764 > > inl duration_from_millis (ms : u64) : duration = 00:16:48 v #16765 > > inl ms = join ms 00:16:48 v #16766 > > !\($'"std::time::Duration::from_millis(!ms)"') 00:16:48 v #16767 > > 00:16:48 v #16768 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16769 > > │ ## date_time 00:16:48 v #16770 > > 00:16:48 v #16771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16772 > > │ ### time_zone_local 00:16:48 v #16773 > > 00:16:48 v #16774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16775 > > inl time_zone_local () : time_zone_info = 00:16:48 v #16776 > > run_target function 00:16:48 v #16777 > > | Fsharp _ => fun () => 00:16:48 v #16778 > > $'System.TimeZoneInfo.Local' 00:16:48 v #16779 > > | Rust (Native) => fun () => 00:16:48 v #16780 > > open rust.rust_operators 00:16:48 v #16781 > > 00:16:48 v #16782 > > !\($'"std::sync::Arc::new(chrono::FixedOffset::local_minus_utc(chrono::Local::no 00:16:48 v #16783 > > w().offset()) as i64)"') 00:16:48 v #16784 > > | _ => fun () => null () 00:16:48 v #16785 > > 00:16:48 v #16786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16787 > > │ ### get_utc_offset 00:16:48 v #16788 > > 00:16:48 v #16789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16790 > > inl get_utc_offset (time_zone_info : time_zone_info) (date_time : date_time) : 00:16:48 v #16791 > > time_span = 00:16:48 v #16792 > > run_target function 00:16:48 v #16793 > > | Fsharp _ => fun () => date_time |> $'_.GetUtcOffset' (time_zone_local 00:16:48 v #16794 > > ()) 00:16:48 v #16795 > > | Rust (Native | Wasm) => fun () => 00:16:48 v #16796 > > open rust.rust_operators 00:16:48 v #16797 > > inl ticks = date_time |> ticks 00:16:48 v #16798 > > // inl ticks = ticks |> rust.rust.emit 00:16:48 v #16799 > > (!\\((date_time, ticks), 00:16:48 v #16800 > > $'"chrono::FixedOffset::local_minus_utc(&chrono::DateTime::timezone(&chrono::Dat 00:16:48 v #16801 > > eTime::fixed_offset(&chrono::DateTime::from_timestamp_nanos($1))))"') : i32) 00:16:48 v #16802 > > |> convert 00:16:48 v #16803 > > | target => fun () => 00:16:48 v #16804 > > backend_switch { 00:16:48 v #16805 > > Fsharp = fun () => failwith $'$"date_time.get_utc_offset 00:16:48 v #16806 > > target: {!target}"' : time_span 00:16:48 v #16807 > > Python = fun () => $'!date_time.utcoffset()' : time_span 00:16:48 v #16808 > > } 00:16:48 v #16809 > > 00:16:48 v #16810 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:16:48 v #16811 > > │ ### date_time_guid_from_date_time 00:16:48 v #16812 > > 00:16:48 v #16813 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16814 > > let date_time_guid_from_date_time (guid' : guid.guid) (date_time : date_time) = 00:16:48 v #16815 > > inl create prefix time_zone : date_time_guid = 00:16:48 v #16816 > > inl guid_range = 00:16:48 v #16817 > > guid' 00:16:48 v #16818 > > |> sm'.obj_to_string 00:16:48 v #16819 > > |> sm'.range 00:16:48 v #16820 > > (am'.Start ((prefix |> sm'.length |> fun x => x : i32) + 00:16:48 v #16821 > > (time_zone |> sm'.length))) 00:16:48 v #16822 > > (am'.End eval) 00:16:48 v #16823 > > ($'$"{!prefix}{!time_zone}{!guid_range}"' : string) |> guid.new_guid 00:16:48 v #16824 > > run_target function 00:16:48 v #16825 > > | Rust (Contract) => fun () => null () 00:16:48 v #16826 > > | Rust (Native | Wasm) => fun () => 00:16:48 v #16827 > > inl epoch = 00:16:48 v #16828 > > unix_epoch () 00:16:48 v #16829 > > |> to_universal_time 00:16:48 v #16830 > > inl date_time = 00:16:48 v #16831 > > date_time 00:16:48 v #16832 > > |> specify_date_kind Local 00:16:48 v #16833 > > |> to_universal_time 00:16:48 v #16834 > > inl unixticks = 00:16:48 v #16835 > > match date_time |> ticks, epoch |> ticks with 00:16:48 v #16836 > > | timestamp date_time, timestamp epoch => convert date_time - 00:16:48 v #16837 > > convert epoch : i64 00:16:48 v #16838 > > inl prefix = 00:16:48 v #16839 > > unixticks / 10 00:16:48 v #16840 > > |> from_timestamp_micros 00:16:48 v #16841 > > |> optionm.map ( 00:16:48 v #16842 > > to_local 00:16:48 v #16843 > > >> format'' "%Y%m%d-%H%M-%S%f" 00:16:48 v #16844 > > >> sm'.from_std_string 00:16:48 v #16845 > > >> fun s => $'$"{!s.[[0..17]]}-{!s.[[18..21]]}-{!s.[[22]]}"' 00:16:48 v #16846 > > ) 00:16:48 v #16847 > > |> optionm'.default_value "" 00:16:48 v #16848 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:16:48 v #16849 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:16:48 v #16850 > > inl time_zone_value = time_zone |> time_span_format (join "hh:mm") 00:16:48 v #16851 > > inl time_zone = 00:16:48 v #16852 > > $'$"{!time_zone_signal}{!time_zone_value.[[0..1]]}{!time_zone_value.[[3..4]]}"' 00:16:48 v #16853 > > create prefix time_zone 00:16:48 v #16854 > > | target => fun () => 00:16:48 v #16855 > > inl prefix = date_time |> format (join "yyyyMMdd-HHmm-ssff-ffff-f") 00:16:48 v #16856 > > inl time_zone = date_time |> get_utc_offset (time_zone_local ()) 00:16:48 v #16857 > > inl time_zone_signal = if hours time_zone > 0 then 1u8 else 0 00:16:48 v #16858 > > inl time_zone_value = time_zone |> time_span_format (join "hhmm") 00:16:48 v #16859 > > inl time_zone = $'$"{!time_zone_signal}{!time_zone_value}"' 00:16:48 v #16860 > > create prefix time_zone 00:16:48 v #16861 > > 00:16:48 v #16862 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:48 v #16863 > > //// test 00:16:48 v #16864 > > ///! fsharp 00:16:48 v #16865 > > ////! cuda 00:16:48 v #16866 > > ///! rust -d chrono 00:16:48 v #16867 > > 00:16:48 v #16868 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:16:48 v #16869 > > () - 6i32) (am'.End eval) 00:16:48 v #16870 > > unix_epoch () 00:16:48 v #16871 > > |> specify_date_kind Utc 00:16:48 v #16872 > > |> to_universal_time 00:16:48 v #16873 > > |> date_time_guid_from_date_time (test_guid ()) 00:16:48 v #16874 > > |> sm'.obj_to_string 00:16:48 v #16875 > > |> fun s => s |> _assert_eq' $'$"{!(s |> sm'.slice 0i32 29)}{!suffix}"' 00:16:55 v #16876 > > 00:16:55 v #16877 > > ── [ 6.77s - return value ] ──────────────────────────────────────────────────── 00:16:55 v #16878 > > │ .rs output (rust -d chrono): 00:16:55 v #16879 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000cba987" 00:16:55 v #16880 > > / expected: "19700101-0000-0000-0000-000000cba987" 00:16:55 v #16881 > > │ 00:16:55 v #16882 > > │ 00:16:55 v #16883 > > 00:16:55 v #16884 > > ── [ 6.77s - stdout ] ────────────────────────────────────────────────────────── 00:16:55 v #16885 > > │ .fsx output: 00:16:55 v #16886 > > │ __assert_eq' / actual: "19700101-0000-0000-0000-000000cba987" 00:16:55 v #16887 > > / expected: "19700101-0000-0000-0000-000000cba987" 00:16:55 v #16888 > > │ 00:16:55 v #16889 > > 00:16:55 v #16890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:16:55 v #16891 > > //// test 00:16:55 v #16892 > > ///! fsharp 00:16:55 v #16893 > > ///! rust -d chrono 00:16:55 v #16894 > > 00:16:55 v #16895 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:16:55 v #16896 > > () - 6i32) (am'.End eval) 00:16:55 v #16897 > > min_value () 00:16:55 v #16898 > > |> specify_date_kind Local 00:16:55 v #16899 > > |> date_time_guid_from_date_time (test_guid ()) 00:16:55 v #16900 > > |> sm'.obj_to_string 00:16:55 v #16901 > > |> fun s => s |> _assert_eq' $'$"00010101-0000-0000-0000-0{!(s |> sm'.slice 00:16:55 v #16902 > > 25i32 29)}{!suffix}"' 00:17:02 v #16903 > > 00:17:02 v #16904 > > ── [ 6.40s - return value ] ──────────────────────────────────────────────────── 00:17:02 v #16905 > > │ .rs output (rust -d chrono): 00:17:02 v #16906 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000cba987" 00:17:02 v #16907 > > / expected: "00010101-0000-0000-0000-000000cba987" 00:17:02 v #16908 > > │ 00:17:02 v #16909 > > │ 00:17:02 v #16910 > > 00:17:02 v #16911 > > ── [ 6.40s - stdout ] ────────────────────────────────────────────────────────── 00:17:02 v #16912 > > │ .fsx output: 00:17:02 v #16913 > > │ __assert_eq' / actual: "00010101-0000-0000-0000-000000cba987" 00:17:02 v #16914 > > / expected: "00010101-0000-0000-0000-000000cba987" 00:17:02 v #16915 > > │ 00:17:02 v #16916 > > 00:17:02 v #16917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 v #16918 > > //// test 00:17:02 v #16919 > > ///! fsharp 00:17:02 v #16920 > > 00:17:02 v #16921 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:17:02 v #16922 > > () - 6i32) (am'.End eval) 00:17:02 v #16923 > > max_value () 00:17:02 v #16924 > > |> specify_date_kind Utc 00:17:02 v #16925 > > |> add_days -1 00:17:02 v #16926 > > |> date_time_guid_from_date_time (test_guid ()) 00:17:02 v #16927 > > |> sm'.obj_to_string 00:17:02 v #16928 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-9{!(s |> sm'.slice 25i32 00:17:02 v #16929 > > 29)}{!suffix}"' 00:17:02 v #16930 > > 00:17:02 v #16931 > > ── [ 414.15ms - stdout ] ─────────────────────────────────────────────────────── 00:17:02 v #16932 > > │ __assert_eq / actual: "99991230-2359-5999-9999-900000cba987" 00:17:02 v #16933 > > / expected: "99991230-2359-5999-9999-900000cba987" 00:17:02 v #16934 > > │ 00:17:02 v #16935 > > 00:17:02 v #16936 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:02 v #16937 > > //// test 00:17:02 v #16938 > > ///! rust -d chrono 00:17:02 v #16939 > > 00:17:02 v #16940 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:17:02 v #16941 > > () - 6i32) (am'.End eval) 00:17:02 v #16942 > > max_value () 00:17:02 v #16943 > > |> specify_date_kind Utc 00:17:02 v #16944 > > |> add_days -1 00:17:02 v #16945 > > |> date_time_guid_from_date_time (test_guid ()) 00:17:02 v #16946 > > |> sm'.obj_to_string 00:17:02 v #16947 > > |> fun s => s |> _assert_eq $'$"99991230-2359-5999-9999-0{!(s |> sm'.slice 25i32 00:17:02 v #16948 > > 29)}{!suffix}"' 00:17:08 v #16949 > > 00:17:08 v #16950 > > ── [ 6.29s - return value ] ──────────────────────────────────────────────────── 00:17:08 v #16951 > > │ __assert_eq / actual: "99991230-2359-5999-9999-000000cba987" 00:17:08 v #16952 > > / expected: "99991230-2359-5999-9999-000000cba987" 00:17:08 v #16953 > > │ 00:17:08 v #16954 > > 00:17:08 v #16955 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:08 v #16956 > > //// test 00:17:08 v #16957 > > ///! fsharp 00:17:08 v #16958 > > ///! rust -d chrono 00:17:08 v #16959 > > 00:17:08 v #16960 > > inl suffix = test_guid () |> sm'.obj_to_string |> sm'.range (am'.End fun x => x 00:17:08 v #16961 > > () - 6i32) (am'.End eval) 00:17:08 v #16962 > > unix_epoch () 00:17:08 v #16963 > > |> specify_date_kind Utc 00:17:08 v #16964 > > |> add_days 1 00:17:08 v #16965 > > |> date_time_guid_from_date_time (test_guid ()) 00:17:08 v #16966 > > |> sm'.obj_to_string 00:17:08 v #16967 > > |> fun s => s |> _assert_eq $'$"19700102-0000-0000-0000-0{!(s |> sm'.slice 25i32 00:17:08 v #16968 > > 29)}{!suffix}"' 00:17:15 v #16969 > > 00:17:15 v #16970 > > ── [ 6.37s - return value ] ──────────────────────────────────────────────────── 00:17:15 v #16971 > > │ .rs output (rust -d chrono): 00:17:15 v #16972 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000cba987" 00:17:15 v #16973 > > / expected: "19700102-0000-0000-0000-000000cba987" 00:17:15 v #16974 > > │ 00:17:15 v #16975 > > │ 00:17:15 v #16976 > > 00:17:15 v #16977 > > ── [ 6.37s - stdout ] ────────────────────────────────────────────────────────── 00:17:15 v #16978 > > │ .fsx output: 00:17:15 v #16979 > > │ __assert_eq / actual: "19700102-0000-0000-0000-000000cba987" 00:17:15 v #16980 > > / expected: "19700102-0000-0000-0000-000000cba987" 00:17:15 v #16981 > > │ 00:17:15 v #16982 > > 00:17:15 v #16983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:15 v #16984 > > │ ### date_time_from_guid 00:17:15 v #16985 > > 00:17:15 v #16986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #16987 > > inl date_time_from_guid (date_time_guid : date_time_guid) = 00:17:15 v #16988 > > inl date_time_guid = date_time_guid |> sm'.obj_to_string 00:17:15 v #16989 > > inl sm_replace = sm'.replace "-" "" 00:17:15 v #16990 > > run_target_args (fun () => sm_replace) function 00:17:15 v #16991 > > | (Rust _ | TypeScript _) => fun sm_replace => 00:17:15 v #16992 > > $'System.DateTime.Parse (!date_time_guid.[[..24]] |> !sm_replace)' : 00:17:15 v #16993 > > date_time 00:17:15 v #16994 > > | _ => fun sm_replace => $'System.DateTime.ParseExact 00:17:15 v #16995 > > (!date_time_guid.[[..24]] |> !sm_replace, "yyyyMMddHHmmssfffffff", null)' : 00:17:15 v #16996 > > date_time 00:17:15 v #16997 > > 00:17:15 v #16998 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #16999 > > //// test 00:17:15 v #17000 > > 00:17:15 v #17001 > > date_time_from_guid (guid.new_guid "00010101-0000-0000-0000-0a9876543210") 00:17:15 v #17002 > > |> _assert_eq' (min_value ()) 00:17:15 v #17003 > > 00:17:15 v #17004 > > ── [ 185.08ms - stdout ] ─────────────────────────────────────────────────────── 00:17:15 v #17005 > > │ __assert_eq' / actual: 01/01/0001 00:00:00 / expected: 00:17:15 v #17006 > > 01/01/0001 00:00:00 00:17:15 v #17007 > > │ 00:17:15 v #17008 > > 00:17:15 v #17009 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #17010 > > //// test 00:17:15 v #17011 > > 00:17:15 v #17012 > > date_time_from_guid (guid.new_guid $'$"99991231-2359-5999-9999-9{(!test_guid () 00:17:15 v #17013 > > |> string).[[^10..]]}"') 00:17:15 v #17014 > > |> _assert_eq' (max_value ()) 00:17:15 v #17015 > > 00:17:15 v #17016 > > ── [ 179.43ms - stdout ] ─────────────────────────────────────────────────────── 00:17:15 v #17017 > > │ __assert_eq' / actual: 12/31/9999 23:59:59 / expected: 00:17:15 v #17018 > > 12/31/9999 23:59:59 00:17:15 v #17019 > > │ 00:17:15 v #17020 > > 00:17:15 v #17021 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #17022 > > //// test 00:17:15 v #17023 > > 00:17:15 v #17024 > > date_time_from_guid (guid.new_guid $'$"19700101-0000-0000-0000-0{(!test_guid () 00:17:15 v #17025 > > |> string).[[^10..]]}"') 00:17:15 v #17026 > > |> _assert_eq' $'System.DateTime.UnixEpoch' 00:17:15 v #17027 > > 00:17:15 v #17028 > > ── [ 209.29ms - stdout ] ─────────────────────────────────────────────────────── 00:17:15 v #17029 > > │ __assert_eq' / actual: 01/01/1970 00:00:00 / expected: 00:17:15 v #17030 > > 01/01/1970 00:00:00 00:17:15 v #17031 > > │ 00:17:15 v #17032 > > 00:17:15 v #17033 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:15 v #17034 > > │ ### timestamp_guid_from_timestamp 00:17:15 v #17035 > > 00:17:15 v #17036 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:15 v #17037 > > inl timestamp_guid_from_timestamp (guid : guid.guid) (timestamp : timestamp) : 00:17:15 v #17038 > > timestamp_guid = 00:17:15 v #17039 > > inl guid = guid |> sm'.obj_to_string 00:17:15 v #17040 > > inl timestamp = timestamp |> sm'.obj_to_string |> sm'.pad_left 18i32 '0' 00:17:15 v #17041 > > $'`timestamp_guid 00:17:15 v #17042 > > $"{!timestamp.[[0..7]]}-{!timestamp.[[8..11]]}-{!timestamp.[[12..15]]}-{!timesta 00:17:15 v #17043 > > mp.[[16..17]]}{!guid.[[21..]]}"' 00:17:16 v #17044 > > 00:17:16 v #17045 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17046 > > //// test 00:17:16 v #17047 > > 00:17:16 v #17048 > > timestamp_guid_from_timestamp (test_guid ()) (0i64 |> convert |> timestamp) 00:17:16 v #17049 > > |> _assert_eq' (guid.new_guid "00000000-0000-0000-0043-210fedcba987") 00:17:16 v #17050 > > 00:17:16 v #17051 > > ── [ 180.99ms - stdout ] ─────────────────────────────────────────────────────── 00:17:16 v #17052 > > │ __assert_eq' / actual: 00000000-0000-0000-0043-210fedcba987 00:17:16 v #17053 > > expected: 00000000-0000-0000-0043-210fedcba987 00:17:16 v #17054 > > │ 00:17:16 v #17055 > > 00:17:16 v #17056 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17057 > > //// test 00:17:16 v #17058 > > 00:17:16 v #17059 > > timestamp_guid_from_timestamp (test_guid ()) (999999999999999999i64 |> convert 00:17:16 v #17060 > > |> timestamp) 00:17:16 v #17061 > > |> _assert_eq' (guid.new_guid $'$"99999999-9999-9999-9943-2{(!test_guid () |> 00:17:16 v #17062 > > string).[[^10..]]}"') 00:17:16 v #17063 > > 00:17:16 v #17064 > > ── [ 179.25ms - stdout ] ─────────────────────────────────────────────────────── 00:17:16 v #17065 > > │ __assert_eq' / actual: 99999999-9999-9999-9943-210fedcba987 00:17:16 v #17066 > > expected: 99999999-9999-9999-9943-210fedcba987 00:17:16 v #17067 > > │ 00:17:16 v #17068 > > 00:17:16 v #17069 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:16 v #17070 > > │ ### timestamp_from_guid 00:17:16 v #17071 > > 00:17:16 v #17072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17073 > > inl timestamp_from_guid (guid : date_time_guid) : timestamp = 00:17:16 v #17074 > > inl guid = guid |> sm'.obj_to_string 00:17:16 v #17075 > > $'`i64 00:17:16 v #17076 > > $"{!guid.[[0..7]]}{!guid.[[9..12]]}{!guid.[[14..17]]}{!guid.[[19..20]]}"' 00:17:16 v #17077 > > 00:17:16 v #17078 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17079 > > //// test 00:17:16 v #17080 > > 00:17:16 v #17081 > > timestamp_from_guid (guid.new_guid "00000000-0000-0000-00dc-ba9876543210") 00:17:16 v #17082 > > |> _assert_eq' (0i64 |> convert |> timestamp) 00:17:16 v #17083 > > 00:17:16 v #17084 > > ── [ 166.62ms - stdout ] ─────────────────────────────────────────────────────── 00:17:16 v #17085 > > │ __assert_eq' / actual: 0L / expected: 0L 00:17:16 v #17086 > > │ 00:17:16 v #17087 > > 00:17:16 v #17088 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17089 > > //// test 00:17:16 v #17090 > > 00:17:16 v #17091 > > timestamp_from_guid (guid.new_guid $'$"99999999-9999-9999-99{(!test_guid () |> 00:17:16 v #17092 > > string).[[^14..]]}"') 00:17:16 v #17093 > > |> _assert_eq' (999999999999999999i64 |> convert |> timestamp) 00:17:16 v #17094 > > 00:17:16 v #17095 > > ── [ 175.38ms - stdout ] ─────────────────────────────────────────────────────── 00:17:16 v #17096 > > │ __assert_eq' / actual: 999999999999999999L / expected: 00:17:16 v #17097 > > 999999999999999999L 00:17:16 v #17098 > > │ 00:17:16 v #17099 > > 00:17:16 v #17100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:16 v #17101 > > │ ### new_guid_from_date_time 00:17:16 v #17102 > > 00:17:16 v #17103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:16 v #17104 > > inl new_guid_from_date_time (date_time : date_time) = 00:17:16 v #17105 > > inl guid = guid.new_raw_guid () 00:17:16 v #17106 > > date_time_guid_from_date_time guid date_time 00:17:17 v #17107 > > 00:17:17 v #17108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #17109 > > //// test 00:17:17 v #17110 > > 00:17:17 v #17111 > > utc_now () 00:17:17 v #17112 > > |> new_guid_from_date_time 00:17:17 v #17113 > > |> date_time_from_guid 00:17:17 v #17114 > > |> fun date_time => new_time_span date_time (utc_now ()) |> total_seconds |> i32 00:17:17 v #17115 > > |> _assert_eq 0 00:17:17 v #17116 > > 00:17:17 v #17117 > > ── [ 327.74ms - stdout ] ─────────────────────────────────────────────────────── 00:17:17 v #17118 > > │ __assert_eq / actual: 0 / expected: 0 00:17:17 v #17119 > > │ 00:17:17 v #17120 > > 00:17:17 v #17121 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:17 v #17122 > > │ ### new_guid_from_timestamp 00:17:17 v #17123 > > 00:17:17 v #17124 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #17125 > > inl new_guid_from_timestamp (timestamp : timestamp) = 00:17:17 v #17126 > > inl guid = guid.new_raw_guid () 00:17:17 v #17127 > > timestamp_guid_from_timestamp guid timestamp 00:17:17 v #17128 > > 00:17:17 v #17129 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #17130 > > //// test 00:17:17 v #17131 > > 00:17:17 v #17132 > > utc_now () 00:17:17 v #17133 > > |> ticks 00:17:17 v #17134 > > |> new_guid_from_timestamp 00:17:17 v #17135 > > |> timestamp_from_guid 00:17:17 v #17136 > > |> fun (timestamp t) => (convert t - (utc_now () |> ticks |> fun (timestamp x) 00:17:17 v #17137 > > => convert x)) / 100000i64 00:17:17 v #17138 > > |> _assert_eq 0i64 00:17:17 v #17139 > > 00:17:17 v #17140 > > ── [ 267.97ms - stdout ] ─────────────────────────────────────────────────────── 00:17:17 v #17141 > > │ __assert_eq / actual: 0L / expected: 0L 00:17:17 v #17142 > > │ 00:17:17 v #17143 > > 00:17:17 v #17144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:17 v #17145 > > │ ## main 00:17:17 v #17146 > > 00:17:17 v #17147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:17 v #17148 > > inl main () = 00:17:17 v #17149 > > $'let date_time_guid_from_date_time x = !date_time_guid_from_date_time x' : 00:17:17 v #17150 > > () 00:17:17 v #17151 > > $'let date_time_from_guid x = !date_time_from_guid x' : () 00:17:17 v #17152 > > $'let timestamp_guid_from_timestamp x = !timestamp_guid_from_timestamp x' : 00:17:17 v #17153 > > () 00:17:17 v #17154 > > $'let timestamp_from_guid x = !timestamp_from_guid x' : () 00:17:17 v #17155 > > $'let new_guid_from_date_time x = !new_guid_from_date_time x' : () 00:17:17 v #17156 > > $'let new_guid_from_timestamp x = !new_guid_from_timestamp x' : () 00:17:17 v #17157 > > $'let format x = !format x' : () 00:17:17 v #17158 > > $'let format_iso8601 x = !format_iso8601 x' : () 00:17:18 v #17159 > 00:01:25 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 50146 } 00:17:18 v #17160 > 00:01:25 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:19 v #17161 > 00:01:26 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.ipynb to html 00:17:19 v #17162 > 00:01:26 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:19 v #17163 > 00:01:26 v #7 ! validate(nb) 00:17:19 v #17164 > 00:01:26 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:19 v #17165 > 00:01:26 v #9 ! return _pygments_highlight( 00:17:20 v #17166 > 00:01:27 v #10 ! [NbConvertApp] Writing 452301 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html 00:17:20 v #17167 > 00:01:27 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:17:20 v #17168 > 00:01:27 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:17:20 v #17169 > 00:01:27 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/date_time.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:20 v #17170 > 00:01:27 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:20 v #17171 > 00:01:27 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:20 v #17172 > 00:01:27 d #16 spiral.run / dib / { exit_code = 0; result_length = 51107 } 00:17:20 d #17173 runtime.execute_with_options_async / { exit_code = 0; output_length = 56357 } 00:17:20 d #20 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path date_time.dib --retries 3 00:17:20 d #17174 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path math.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:20 v #17175 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "3"])) } 00:17:20 v #17176 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:21 v #17177 > > 00:17:21 v #17178 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:21 v #17179 > > │ # math 00:17:24 v #17180 > > 00:17:24 v #17181 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:24 v #17182 > > //// test 00:17:24 v #17183 > > 00:17:24 v #17184 > > open testing 00:17:25 v #17185 > > 00:17:25 v #17186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 v #17187 > > │ ## math 00:17:25 v #17188 > > 00:17:25 v #17189 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 v #17190 > > │ ### e 00:17:25 v #17191 > > 00:17:25 v #17192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 v #17193 > > inl e () = 00:17:25 v #17194 > > exp 1f64 00:17:25 v #17195 > > 00:17:25 v #17196 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:25 v #17197 > > │ ## square 00:17:25 v #17198 > > 00:17:25 v #17199 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 v #17200 > > inl square x = 00:17:25 v #17201 > > x ** 2 00:17:25 v #17202 > > 00:17:25 v #17203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:25 v #17204 > > //// test 00:17:25 v #17205 > > 00:17:25 v #17206 > > 5f64 00:17:25 v #17207 > > |> sqrt 00:17:25 v #17208 > > |> square 00:17:25 v #17209 > > |> _assert_approx_eq None 5 00:17:26 v #17210 > > 00:17:26 v #17211 > > ── [ 581.30ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17212 > > │ __assert_approx_eq / actual: 5.0 / expected: 5.0 00:17:26 v #17213 > > │ 00:17:26 v #17214 > > 00:17:26 v #17215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17216 > > //// test 00:17:26 v #17217 > > 00:17:26 v #17218 > > e () |> square 00:17:26 v #17219 > > |> _assert_approx_eq None 7.3890560989306495 00:17:26 v #17220 > > 00:17:26 v #17221 > > ── [ 192.61ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17222 > > │ __assert_approx_eq / actual: 7.389056099 / expected: 00:17:26 v #17223 > > 7.389056099 00:17:26 v #17224 > > │ 00:17:26 v #17225 > > 00:17:26 v #17226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17227 > > //// test 00:17:26 v #17228 > > 00:17:26 v #17229 > > 2 * 2 / 0.4f64 |> sqrt 00:17:26 v #17230 > > |> _assert_approx_eq None 3.1622776601683795 00:17:26 v #17231 > > 00:17:26 v #17232 > > ── [ 130.18ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17233 > > │ __assert_approx_eq / actual: 3.16227766 / expected: 00:17:26 v #17234 > > 3.16227766 00:17:26 v #17235 > > │ 00:17:26 v #17236 > > 00:17:26 v #17237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17238 > > //// test 00:17:26 v #17239 > > 00:17:26 v #17240 > > 2f64 / 3 00:17:26 v #17241 > > |> _assert_approx_eq None 0.6666666666666666 00:17:26 v #17242 > > 00:17:26 v #17243 > > ── [ 200.79ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17244 > > │ __assert_approx_eq / actual: 0.6666666667 / expected: 00:17:26 v #17245 > > 0.6666666667 00:17:26 v #17246 > > │ 00:17:26 v #17247 > > 00:17:26 v #17248 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17249 > > //// test 00:17:26 v #17250 > > 00:17:26 v #17251 > > 2f64 |> log 00:17:26 v #17252 > > |> _assert_approx_eq None 0.6931471805599453 00:17:26 v #17253 > > 00:17:26 v #17254 > > ── [ 162.66ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17255 > > │ __assert_approx_eq / actual: 0.6931471806 / expected: 00:17:26 v #17256 > > 0.6931471806 00:17:26 v #17257 > > │ 00:17:26 v #17258 > > 00:17:26 v #17259 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17260 > > //// test 00:17:26 v #17261 > > 00:17:26 v #17262 > > pi 00:17:26 v #17263 > > |> _assert_approx_eq None 3.141592653589793f64 00:17:26 v #17264 > > 00:17:26 v #17265 > > ── [ 174.92ms - stdout ] ─────────────────────────────────────────────────────── 00:17:26 v #17266 > > │ __assert_approx_eq / actual: 3.141592654 / expected: 00:17:26 v #17267 > > 3.141592654 00:17:26 v #17268 > > │ 00:17:26 v #17269 > > 00:17:26 v #17270 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:26 v #17271 > > //// test 00:17:26 v #17272 > > 00:17:26 v #17273 > > pi |> cos 00:17:26 v #17274 > > |> _assert_eq -1f64 00:17:27 v #17275 > > 00:17:27 v #17276 > > ── [ 174.72ms - stdout ] ─────────────────────────────────────────────────────── 00:17:27 v #17277 > > │ __assert_eq / actual: -1.0 / expected: -1.0 00:17:27 v #17278 > > │ 00:17:27 v #17279 > > 00:17:27 v #17280 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17281 > > //// test 00:17:27 v #17282 > > 00:17:27 v #17283 > > pi 00:17:27 v #17284 > > |> cos 00:17:27 v #17285 > > |> fun n => n / 2f64 00:17:27 v #17286 > > |> _assert_approx_eq None -0.5 00:17:27 v #17287 > > 00:17:27 v #17288 > > ── [ 153.97ms - stdout ] ─────────────────────────────────────────────────────── 00:17:27 v #17289 > > │ __assert_approx_eq / actual: -0.5 / expected: -0.5 00:17:27 v #17290 > > │ 00:17:27 v #17291 > > 00:17:27 v #17292 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17293 > > //// test 00:17:27 v #17294 > > 00:17:27 v #17295 > > pi / 2 |> cos 00:17:27 v #17296 > > |> _assert_approx_eq None 0.00000000000000006123233995736766f64 00:17:27 v #17297 > > 00:17:27 v #17298 > > ── [ 139.20ms - stdout ] ─────────────────────────────────────────────────────── 00:17:27 v #17299 > > │ __assert_approx_eq / actual: 6.123233996e-17 / expected: 00:17:27 v #17300 > > 6.123233996e-17 00:17:27 v #17301 > > │ 00:17:27 v #17302 > > 00:17:27 v #17303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #17304 > > │ ## fsharp 00:17:27 v #17305 > > 00:17:27 v #17306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #17307 > > │ ### atan2 00:17:27 v #17308 > > 00:17:27 v #17309 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17310 > > inl atan2 (y : f64) (x : f64) : f64 = 00:17:27 v #17311 > > $'System.Math.Atan2 (!y, !x)' 00:17:27 v #17312 > > 00:17:27 v #17313 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17314 > > //// test 00:17:27 v #17315 > > 00:17:27 v #17316 > > 0 |> atan2 1 00:17:27 v #17317 > > |> _assert_eq 1.5707963267948966 00:17:27 v #17318 > > 00:17:27 v #17319 > > ── [ 254.36ms - stdout ] ─────────────────────────────────────────────────────── 00:17:27 v #17320 > > │ __assert_eq / actual: 1.570796327 / expected: 1.570796327 00:17:27 v #17321 > > │ 00:17:27 v #17322 > > 00:17:27 v #17323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:27 v #17324 > > │ ## floor 00:17:27 v #17325 > > 00:17:27 v #17326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17327 > > inl floor forall t {float}. (n : t) : t = 00:17:27 v #17328 > > n |> $'floor' 00:17:27 v #17329 > > 00:17:27 v #17330 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:27 v #17331 > > //// test 00:17:27 v #17332 > > 00:17:27 v #17333 > > 0.6 |> floor 00:17:27 v #17334 > > |> _assert_eq 0f64 00:17:28 v #17335 > > 00:17:28 v #17336 > > ── [ 192.61ms - stdout ] ─────────────────────────────────────────────────────── 00:17:28 v #17337 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:17:28 v #17338 > > │ 00:17:28 v #17339 > > 00:17:28 v #17340 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:28 v #17341 > > │ ## ceil 00:17:28 v #17342 > > 00:17:28 v #17343 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17344 > > inl ceil forall t {float}. (n : t) : t = 00:17:28 v #17345 > > n |> $'ceil' 00:17:28 v #17346 > > 00:17:28 v #17347 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17348 > > //// test 00:17:28 v #17349 > > 00:17:28 v #17350 > > 0.6 |> ceil 00:17:28 v #17351 > > |> _assert_eq 1f64 00:17:28 v #17352 > > 00:17:28 v #17353 > > ── [ 173.02ms - stdout ] ─────────────────────────────────────────────────────── 00:17:28 v #17354 > > │ __assert_eq / actual: 1.0 / expected: 1.0 00:17:28 v #17355 > > │ 00:17:28 v #17356 > > 00:17:28 v #17357 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:28 v #17358 > > │ ## round 00:17:28 v #17359 > > 00:17:28 v #17360 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17361 > > inl round forall t {float}. (n : t) : t = 00:17:28 v #17362 > > n |> $'round' 00:17:28 v #17363 > > 00:17:28 v #17364 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17365 > > //// test 00:17:28 v #17366 > > 00:17:28 v #17367 > > 0.5 |> round 00:17:28 v #17368 > > |> _assert_eq 0f64 00:17:28 v #17369 > > 00:17:28 v #17370 > > 1.5 |> round 00:17:28 v #17371 > > |> _assert_eq 2f64 00:17:28 v #17372 > > 00:17:28 v #17373 > > 2.5 |> round 00:17:28 v #17374 > > |> _assert_eq 2f64 00:17:28 v #17375 > > 00:17:28 v #17376 > > 3.5 |> round 00:17:28 v #17377 > > |> _assert_eq 4f64 00:17:28 v #17378 > > 00:17:28 v #17379 > > ── [ 147.05ms - stdout ] ─────────────────────────────────────────────────────── 00:17:28 v #17380 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:17:28 v #17381 > > │ __assert_eq / actual: 2.0 / expected: 2.0 00:17:28 v #17382 > > │ __assert_eq / actual: 2.0 / expected: 2.0 00:17:28 v #17383 > > │ __assert_eq / actual: 4.0 / expected: 4.0 00:17:28 v #17384 > > │ 00:17:28 v #17385 > > 00:17:28 v #17386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:28 v #17387 > > │ ## log_base 00:17:28 v #17388 > > 00:17:28 v #17389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17390 > > inl log_base (new_base : f64) (a : f64) : f64 = 00:17:28 v #17391 > > $'System.Math.Log (!a, !new_base)' 00:17:28 v #17392 > > 00:17:28 v #17393 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:28 v #17394 > > //// test 00:17:28 v #17395 > > 00:17:28 v #17396 > > 100 |> log_base 10 00:17:28 v #17397 > > |> _assert_eq 2 00:17:29 v #17398 > > 00:17:29 v #17399 > > ── [ 163.22ms - stdout ] ─────────────────────────────────────────────────────── 00:17:29 v #17400 > > │ __assert_eq / actual: 2.0 / expected: 2.0 00:17:29 v #17401 > > │ 00:17:29 v #17402 > > 00:17:29 v #17403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:29 v #17404 > > │ ## round 00:17:29 v #17405 > > 00:17:29 v #17406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:29 v #17407 > > inl round forall t {float}. (x : t) : t = 00:17:29 v #17408 > > x |> $'round' 00:17:29 v #17409 > > 00:17:29 v #17410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:29 v #17411 > > //// test 00:17:29 v #17412 > > 00:17:29 v #17413 > > 0.5 |> round 00:17:29 v #17414 > > |> _assert_eq 0f64 00:17:29 v #17415 > > 00:17:29 v #17416 > > ── [ 171.78ms - stdout ] ─────────────────────────────────────────────────────── 00:17:29 v #17417 > > │ __assert_eq / actual: 0.0 / expected: 0.0 00:17:29 v #17418 > > │ 00:17:29 v #17419 > > 00:17:29 v #17420 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:29 v #17421 > > //// test 00:17:29 v #17422 > > 00:17:29 v #17423 > > 0.6 |> round 00:17:29 v #17424 > > |> _assert_eq 1f64 00:17:29 v #17425 > > 00:17:29 v #17426 > > ── [ 196.13ms - stdout ] ─────────────────────────────────────────────────────── 00:17:29 v #17427 > > │ __assert_eq / actual: 1.0 / expected: 1.0 00:17:29 v #17428 > > │ 00:17:29 v #17429 > 00:00:09 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8687 } 00:17:29 v #17430 > 00:00:09 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:30 v #17431 > 00:00:09 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.ipynb to html 00:17:30 v #17432 > 00:00:09 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:30 v #17433 > 00:00:09 v #7 ! validate(nb) 00:17:30 v #17434 > 00:00:10 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:30 v #17435 > 00:00:10 v #9 ! return _pygments_highlight( 00:17:30 v #17436 > 00:00:10 v #10 ! [NbConvertApp] Writing 304861 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html 00:17:31 v #17437 > 00:00:10 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:17:31 v #17438 > 00:00:10 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:17:31 v #17439 > 00:00:10 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:31 v #17440 > 00:00:10 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:31 v #17441 > 00:00:10 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:31 v #17442 > 00:00:10 d #16 spiral.run / dib / { exit_code = 0; result_length = 9638 } 00:17:31 d #17443 runtime.execute_with_options_async / { exit_code = 0; output_length = 12777 } 00:17:31 d #21 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path math.dib --retries 3 00:17:31 d #17444 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path mapm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:31 v #17445 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "mapm.dib", "--retries", "3"])) } 00:17:31 v #17446 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:32 v #17447 > > 00:17:32 v #17448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:32 v #17449 > > │ # mapm 00:17:35 v #17450 > > 00:17:35 v #17451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 v #17452 > > open rust.rust_operators 00:17:35 v #17453 > > 00:17:35 v #17454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 v #17455 > > │ ## rust 00:17:35 v #17456 > > 00:17:35 v #17457 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:35 v #17458 > > │ ### hash_map 00:17:35 v #17459 > > 00:17:35 v #17460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:35 v #17461 > > nominal hash_map k v = 00:17:35 v #17462 > > `( 00:17:35 v #17463 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:35 v #17464 > > Fable.Core.Emit(\"std::collections::HashMap<$0, $1>\")>]]\n#endif\ntype 00:17:35 v #17465 > > std_collections_HashMap<'K, 'V> = class end" 00:17:35 v #17466 > > $'' : $'std_collections_HashMap<`k, `v>' 00:17:35 v #17467 > > ) 00:17:36 v #17468 > > 00:17:36 v #17469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17470 > > │ ### b_tree_map 00:17:36 v #17471 > > 00:17:36 v #17472 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17473 > > nominal b_tree_map k v = 00:17:36 v #17474 > > `( 00:17:36 v #17475 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:17:36 v #17476 > > Fable.Core.Emit(\"std::collections::BTreeMap<$0, $1>\")>]]\n#endif\ntype 00:17:36 v #17477 > > std_collections_BTreeMap<'K, 'V> = class end" 00:17:36 v #17478 > > $'' : $'std_collections_BTreeMap<`k, `v>' 00:17:36 v #17479 > > ) 00:17:36 v #17480 > > 00:17:36 v #17481 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17482 > > │ ### new_hash_map 00:17:36 v #17483 > > 00:17:36 v #17484 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17485 > > inl new_hash_map () : hash_map _ _ = 00:17:36 v #17486 > > !\($'"std::collections::HashMap::new()"') 00:17:36 v #17487 > > 00:17:36 v #17488 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17489 > > │ ### new_b_tree_map 00:17:36 v #17490 > > 00:17:36 v #17491 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17492 > > inl new_b_tree_map () : b_tree_map _ _ = 00:17:36 v #17493 > > !\($'"std::collections::BTreeMap::new()"') 00:17:36 v #17494 > > 00:17:36 v #17495 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17496 > > │ ### get 00:17:36 v #17497 > > 00:17:36 v #17498 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17499 > > inl get forall k v. (key : k) (map : hash_map k v) : optionm'.option' v = 00:17:36 v #17500 > > inl key = join key 00:17:36 v #17501 > > !\\(map, $'"std::collections::HashMap::get(&$0, &!key).map(|x| 00:17:36 v #17502 > > x).cloned()"') 00:17:36 v #17503 > > 00:17:36 v #17504 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17505 > > │ ### insert 00:17:36 v #17506 > > 00:17:36 v #17507 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17508 > > inl insert forall k v. (key : k) (value : v) (map : hash_map k v) : 00:17:36 v #17509 > > optionm'.option' v = 00:17:36 v #17510 > > inl key = join key 00:17:36 v #17511 > > !\($'"let mut !map = !map"') 00:17:36 v #17512 > > !\($'"std::collections::HashMap::insert(&mut !map, !key, !value)"') 00:17:36 v #17513 > > 00:17:36 v #17514 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:36 v #17515 > > │ ### map' 00:17:36 v #17516 > > 00:17:36 v #17517 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:36 v #17518 > > inl map' forall k v w. (fn : v -> w) (map : hash_map k v) : hash_map k w = 00:17:36 v #17519 > > !\\((map, fn), $'"$0.into_iter().map(|(k, v)| (k, $1(v))).collect()"') 00:17:37 v #17520 > > 00:17:37 v #17521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17522 > > │ ### hash_map_count 00:17:37 v #17523 > > 00:17:37 v #17524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17525 > > inl hash_map_count forall k v. (map : hash_map k v) : i32 = 00:17:37 v #17526 > > !\\(map, $'"$0.count()"') 00:17:37 v #17527 > > 00:17:37 v #17528 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17529 > > │ ### from_vec 00:17:37 v #17530 > > 00:17:37 v #17531 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17532 > > inl from_vec forall k v. (vec : am'.vec (k * v)) : hash_map k v = 00:17:37 v #17533 > > !\($'"std::collections::HashMap::from_iter(!vec)"') 00:17:37 v #17534 > > 00:17:37 v #17535 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17536 > > │ ### from_vec_pairs 00:17:37 v #17537 > > 00:17:37 v #17538 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17539 > > inl from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : hash_map k v = 00:17:37 v #17540 > > !\($'"std::collections::HashMap::from_iter(!vec.iter().map(|x| 00:17:37 v #17541 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:17:37 v #17542 > > 00:17:37 v #17543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17544 > > │ ### b_tree_map_from_vec_pairs 00:17:37 v #17545 > > 00:17:37 v #17546 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17547 > > inl b_tree_map_from_vec_pairs forall k v. (vec : am'.vec (pair k v)) : 00:17:37 v #17548 > > b_tree_map k v = 00:17:37 v #17549 > > !\($'"std::collections::BTreeMap::from_iter(!vec.iter().map(|x| 00:17:37 v #17550 > > x.as_ref()).map(|&(ref k, ref v)| (k.clone(), v.clone())))"') 00:17:37 v #17551 > > 00:17:37 v #17552 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17553 > > │ ### from_array 00:17:37 v #17554 > > 00:17:37 v #17555 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17556 > > inl from_array forall k v. (array : array_base (k * v)) : hash_map k v = 00:17:37 v #17557 > > array |> am'.to_vec |> from_vec 00:17:37 v #17558 > > 00:17:37 v #17559 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17560 > > │ ### from_list 00:17:37 v #17561 > > 00:17:37 v #17562 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17563 > > inl from_list forall k v. (list : list (k * v)) : hash_map k v = 00:17:37 v #17564 > > inl (a list) : _ i32 _ = list |> listm.toArray 00:17:37 v #17565 > > list |> am'.to_vec |> from_vec 00:17:37 v #17566 > > 00:17:37 v #17567 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:37 v #17568 > > │ ### to_vec 00:17:37 v #17569 > > 00:17:37 v #17570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:37 v #17571 > > inl to_vec forall k v. (map : hash_map k v) : am'.vec (k * v) = 00:17:37 v #17572 > > !\\(map, $'"$0.into_iter().map(|(k, v)| (k, v)).collect::<Vec<_>>()"') 00:17:38 v #17573 > > 00:17:38 v #17574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:38 v #17575 > > │ ## fsharp 00:17:38 v #17576 > > 00:17:38 v #17577 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:38 v #17578 > > │ ### map 00:17:38 v #17579 > > 00:17:38 v #17580 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:38 v #17581 > > nominal map k v = $'Map<`k, `v>' 00:17:38 v #17582 > > 00:17:38 v #17583 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:38 v #17584 > > │ ### item 00:17:38 v #17585 > > 00:17:38 v #17586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:38 v #17587 > > inl item forall k v. (k : k) (map : map k v) : v = 00:17:38 v #17588 > > $'!map.[[!k]]' 00:17:38 v #17589 > > 00:17:38 v #17590 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:38 v #17591 > > │ ### of_array 00:17:38 v #17592 > > 00:17:38 v #17593 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:38 v #17594 > > inl of_array forall k v. (array : a _ (k * v)) : map k v = 00:17:38 v #17595 > > $'!array |> Array.map (fun (struct (a, b)) -> a, b) |> Map.ofArray' 00:17:38 v #17596 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6994 } 00:17:38 v #17597 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:39 v #17598 > 00:00:08 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.ipynb to html 00:17:39 v #17599 > 00:00:08 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:17:39 v #17600 > 00:00:08 v #7 ! validate(nb) 00:17:39 v #17601 > 00:00:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:17:39 v #17602 > 00:00:08 v #9 ! return _pygments_highlight( 00:17:39 v #17603 > 00:00:08 v #10 ! [NbConvertApp] Writing 301410 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html 00:17:39 v #17604 > 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:17:39 v #17605 > 00:00:08 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:17:39 v #17606 > 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/mapm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:40 v #17607 > 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:17:40 v #17608 > 00:00:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:17:40 v #17609 > 00:00:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 7945 } 00:17:40 d #17610 runtime.execute_with_options_async / { exit_code = 0; output_length = 10878 } 00:17:40 d #22 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path mapm.dib --retries 3 00:17:40 d #17611 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path optionm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:40 v #17612 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "optionm'.dib", "--retries", "3"])) } 00:17:40 v #17613 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:17:41 v #17614 > > 00:17:41 v #17615 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:41 v #17616 > > │ # optionm' 00:17:44 v #17617 > > 00:17:44 v #17618 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:44 v #17619 > > open rust 00:17:44 v #17620 > > open rust_operators 00:17:44 v #17621 > > 00:17:44 v #17622 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:44 v #17623 > > //// test 00:17:44 v #17624 > > 00:17:44 v #17625 > > open testing 00:17:45 v #17626 > > 00:17:45 v #17627 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:45 v #17628 > > │ ## optionm' 00:17:45 v #17629 > > 00:17:45 v #17630 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:45 v #17631 > > │ ### default_value 00:17:45 v #17632 > > 00:17:45 v #17633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:45 v #17634 > > inl default_value d = 00:17:45 v #17635 > > optionm.defaultWith d 00:17:45 v #17636 > > 00:17:45 v #17637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:45 v #17638 > > //// test 00:17:45 v #17639 > > 00:17:45 v #17640 > > None 00:17:45 v #17641 > > |> default_value 3i32 00:17:45 v #17642 > > |> _assert_eq 3i32 00:17:45 v #17643 > > 00:17:45 v #17644 > > ── [ 568.88ms - stdout ] ─────────────────────────────────────────────────────── 00:17:45 v #17645 > > │ __assert_eq / actual: 3 / expected: 3 00:17:45 v #17646 > > │ 00:17:45 v #17647 > > 00:17:45 v #17648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:45 v #17649 > > │ ### (/??) 00:17:45 v #17650 > > 00:17:45 v #17651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:45 v #17652 > > inl (/??) a b = 00:17:45 v #17653 > > a |> default_value b 00:17:45 v #17654 > > 00:17:45 v #17655 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:45 v #17656 > > //// test 00:17:45 v #17657 > > 00:17:45 v #17658 > > None /?? 3i32 00:17:45 v #17659 > > |> _assert_eq 3i32 00:17:46 v #17660 > > 00:17:46 v #17661 > > ── [ 164.21ms - stdout ] ─────────────────────────────────────────────────────── 00:17:46 v #17662 > > │ __assert_eq / actual: 3 / expected: 3 00:17:46 v #17663 > > │ 00:17:46 v #17664 > > 00:17:46 v #17665 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:46 v #17666 > > │ ### default_with 00:17:46 v #17667 > > 00:17:46 v #17668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 v #17669 > > inl default_with fn = function 00:17:46 v #17670 > > | Some x => x 00:17:46 v #17671 > > | None => fn () 00:17:46 v #17672 > > 00:17:46 v #17673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 v #17674 > > //// test 00:17:46 v #17675 > > 00:17:46 v #17676 > > None 00:17:46 v #17677 > > |> default_with fun () => 3i32 00:17:46 v #17678 > > |> _assert_eq 3i32 00:17:46 v #17679 > > 00:17:46 v #17680 > > ── [ 126.33ms - stdout ] ─────────────────────────────────────────────────────── 00:17:46 v #17681 > > │ __assert_eq / actual: 3 / expected: 3 00:17:46 v #17682 > > │ 00:17:46 v #17683 > > 00:17:46 v #17684 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:46 v #17685 > > │ ### choose 00:17:46 v #17686 > > 00:17:46 v #17687 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 v #17688 > > inl choose fn a b = 00:17:46 v #17689 > > match a, b with 00:17:46 v #17690 > > | Some x, Some y => fn x y |> Some 00:17:46 v #17691 > > | _ => None 00:17:46 v #17692 > > 00:17:46 v #17693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:46 v #17694 > > //// test 00:17:46 v #17695 > > 00:17:46 v #17696 > > (Some 2i32, Some 3) 00:17:46 v #17697 > > ||> choose (+) 00:17:46 v #17698 > > |> _assert_eq (Some 5) 00:17:47 v #17699 > > 00:17:47 v #17700 > > ── [ 502.91ms - stdout ] ─────────────────────────────────────────────────────── 00:17:47 v #17701 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:17:47 v #17702 > > │ 00:17:47 v #17703 > > 00:17:47 v #17704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17705 > > │ ### iter 00:17:47 v #17706 > > 00:17:47 v #17707 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17708 > > inl iter fn = function 00:17:47 v #17709 > > | Some x => fn x 00:17:47 v #17710 > > | None => () 00:17:47 v #17711 > > 00:17:47 v #17712 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17713 > > //// test 00:17:47 v #17714 > > 00:17:47 v #17715 > > inl n = mut 1i32 00:17:47 v #17716 > > inl fn = 00:17:47 v #17717 > > fun n' => 00:17:47 v #17718 > > n <- *n + n' 00:17:47 v #17719 > > Some 1i32 |> iter fn 00:17:47 v #17720 > > None |> iter fn 00:17:47 v #17721 > > *n 00:17:47 v #17722 > > |> _assert_eq 2i32 00:17:47 v #17723 > > 00:17:47 v #17724 > > ── [ 273.46ms - stdout ] ─────────────────────────────────────────────────────── 00:17:47 v #17725 > > │ __assert_eq / actual: 2 / expected: 2 00:17:47 v #17726 > > │ 00:17:47 v #17727 > > 00:17:47 v #17728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17729 > > │ ### flatten 00:17:47 v #17730 > > 00:17:47 v #17731 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17732 > > inl flatten x = 00:17:47 v #17733 > > match x with 00:17:47 v #17734 > > | Some (Some x) => Some x 00:17:47 v #17735 > > | _ => None 00:17:47 v #17736 > > 00:17:47 v #17737 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17738 > > │ ## fsharp 00:17:47 v #17739 > > 00:17:47 v #17740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17741 > > │ ### option' 00:17:47 v #17742 > > 00:17:47 v #17743 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17744 > > nominal option' t = $"backend_switch `({ Fsharp : $"`t option"; Python : t })" 00:17:47 v #17745 > > 00:17:47 v #17746 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17747 > > │ ### none' 00:17:47 v #17748 > > 00:17:47 v #17749 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17750 > > inl none' forall t. () : option' t = 00:17:47 v #17751 > > $'None' 00:17:47 v #17752 > > 00:17:47 v #17753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:47 v #17754 > > │ ### some' 00:17:47 v #17755 > > 00:17:47 v #17756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:47 v #17757 > > inl some' forall t. (x : t) : option' t = 00:17:47 v #17758 > > backend_switch { 00:17:47 v #17759 > > Fsharp = fun () => $'Some !x ' : option' t 00:17:47 v #17760 > > Python = fun () => $'!x # some\' ' : option' t 00:17:47 v #17761 > > } 00:17:48 v #17762 > > 00:17:48 v #17763 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17764 > > │ ### default_value' 00:17:48 v #17765 > > 00:17:48 v #17766 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17767 > > inl default_value' forall t. (value : t) (x : option' t) : t = 00:17:48 v #17768 > > backend_switch { 00:17:48 v #17769 > > Fsharp = fun () => $'!x |> Option.defaultValue !value ' : t 00:17:48 v #17770 > > Python = fun () => $'!x or !value ' : t 00:17:48 v #17771 > > } 00:17:48 v #17772 > > 00:17:48 v #17773 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17774 > > │ ### value' 00:17:48 v #17775 > > 00:17:48 v #17776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17777 > > inl value' forall t. (x : option' t) : t = 00:17:48 v #17778 > > backend_switch { 00:17:48 v #17779 > > Fsharp = fun () => $'!x |> Option.value' : t 00:17:48 v #17780 > > Python = fun () => $'!x ' : t 00:17:48 v #17781 > > } 00:17:48 v #17782 > > 00:17:48 v #17783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17784 > > │ ### box 00:17:48 v #17785 > > 00:17:48 v #17786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17787 > > inl box forall t. (x : option t) : option' t = 00:17:48 v #17788 > > // x 00:17:48 v #17789 > > // |> optionm.map some' 00:17:48 v #17790 > > // |> default_with none' 00:17:48 v #17791 > > match x with 00:17:48 v #17792 > > | Some x => some' x 00:17:48 v #17793 > > | None => none' () 00:17:48 v #17794 > > 00:17:48 v #17795 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17796 > > │ ### map 00:17:48 v #17797 > > 00:17:48 v #17798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17799 > > inl map forall t u. (fn : t -> u) (x : option' t) : option' u = 00:17:48 v #17800 > > inl x_ () = 00:17:48 v #17801 > > backend_switch { 00:17:48 v #17802 > > Fsharp = fun () => 00:17:48 v #17803 > > inl result : mut (option' u) = none' () |> mut 00:17:48 v #17804 > > inl set_result x = 00:17:48 v #17805 > > result <- x 00:17:48 v #17806 > > inl get_result () = 00:17:48 v #17807 > > *result 00:17:48 v #17808 > > $'match !x with' 00:17:48 v #17809 > > $'| Some x -> (' 00:17:48 v #17810 > > $'(fun () ->' 00:17:48 v #17811 > > $'(fun () ->' 00:17:48 v #17812 > > inl x = dyn $'x' 00:17:48 v #17813 > > x |> fn |> emit_unit 00:17:48 v #17814 > > $')' 00:17:48 v #17815 > > $'|> fun x -> x () |> Some' 00:17:48 v #17816 > > $') () ) | None -> None' 00:17:48 v #17817 > > $'|> fun x -> !set_result x' 00:17:48 v #17818 > > $'!get_result ()' : option' u 00:17:48 v #17819 > > Python = fun () => 00:17:48 v #17820 > > if x =. none' () 00:17:48 v #17821 > > then none' () 00:17:48 v #17822 > > else fn $'!x ' |> fun x => $'!x ' : option' u 00:17:48 v #17823 > > } 00:17:48 v #17824 > > 00:17:48 v #17825 > > backend_switch { 00:17:48 v #17826 > > Fsharp = fun () => 00:17:48 v #17827 > > inl fn = join fn 00:17:48 v #17828 > > $'!x |> Option.map !fn ' : option' u 00:17:48 v #17829 > > Python = fun () => 00:17:48 v #17830 > > if x =. none' () 00:17:48 v #17831 > > then none' () 00:17:48 v #17832 > > else fn $'!x ' |> fun x => $'!x ' : option' u 00:17:48 v #17833 > > } 00:17:48 v #17834 > > 00:17:48 v #17835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17836 > > │ ### map'' 00:17:48 v #17837 > > 00:17:48 v #17838 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17839 > > inl map'' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:17:48 v #17840 > > x |> map fn 00:17:48 v #17841 > > 00:17:48 v #17842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:48 v #17843 > > │ ### unbox 00:17:48 v #17844 > > 00:17:48 v #17845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:48 v #17846 > > inl unbox forall t. (x : option' t) : option t = 00:17:48 v #17847 > > x |> map'' Some |> default_value' None 00:17:48 v #17848 > > // inl some x : option t = Some x 00:17:48 v #17849 > > // inl some = join some 00:17:48 v #17850 > > // inl none : option t = None 00:17:48 v #17851 > > // $'!x |> Option.map !some |> Option.defaultValue !none ' 00:17:49 v #17852 > > 00:17:49 v #17853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:49 v #17854 > > //// test 00:17:49 v #17855 > > ///! fsharp 00:17:49 v #17856 > > ///! cuda 00:17:49 v #17857 > > ///! rust 00:17:49 v #17858 > > ///! typescript 00:17:49 v #17859 > > ///! python 00:17:49 v #17860 > > 00:17:49 v #17861 > > inl x = Some 3i32 00:17:49 v #17862 > > inl y : option i32 = None 00:17:49 v #17863 > > inl x' = x |> box |> unbox 00:17:49 v #17864 > > inl y' = y |> box |> map id |> unbox 00:17:49 v #17865 > > (x', y') |> _assert_eq' (x, y) 00:17:58 v #17866 > > 00:17:58 v #17867 > > ── [ 9.18s - return value ] ──────────────────────────────────────────────────── 00:17:58 v #17868 > > │ .py output (Cuda): 00:17:58 v #17869 > > │ __assert_eq' / actual: (US0_0(v0=3), US0_1()) / expected: 00:17:58 v #17870 > > (US0_0(v0=3), US0_1()) 00:17:58 v #17871 > > │ 00:17:58 v #17872 > > │ .rs output: 00:17:58 v #17873 > > │ __assert_eq' / actual: (US0_0(3), US0_1) / expected: 00:17:58 v #17874 > > (US0_0(3), US0_1) 00:17:58 v #17875 > > │ 00:17:58 v #17876 > > │ .ts output: 00:17:58 v #17877 > > │ __assert_eq' / actual: US0_0 3,US0_1 / expected: US0_0 00:17:58 v #17878 > > 3,US0_1 00:17:58 v #17879 > > │ 00:17:58 v #17880 > > │ .py output: 00:17:58 v #17881 > > │ __assert_eq' / actual: (US0_0 3, US0_1) / expected: (US0_0 3, 00:17:58 v #17882 > > US0_1) 00:17:58 v #17883 > > │ 00:17:58 v #17884 > > │ 00:17:58 v #17885 > > 00:17:58 v #17886 > > ── [ 9.18s - stdout ] ────────────────────────────────────────────────────────── 00:17:58 v #17887 > > │ .fsx output: 00:17:58 v #17888 > > │ __assert_eq' / actual: struct (US0_0 3, US0_1) / expected: 00:17:58 v #17889 > > struct (US0_0 3, US0_1) 00:17:58 v #17890 > > │ 00:17:58 v #17891 > > 00:17:58 v #17892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:17:58 v #17893 > > │ ### of_obj 00:17:58 v #17894 > > 00:17:58 v #17895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 v #17896 > > inl of_obj forall t. (x : t) : option' t = 00:17:58 v #17897 > > backend_switch { 00:17:58 v #17898 > > Fsharp = fun () => 00:17:58 v #17899 > > $'let mutable _!x = None' 00:17:58 v #17900 > > $'#if \!FABLE_COMPILER && \!WASM && \!CONTRACT' 00:17:58 v #17901 > > ((x |> $'Option.ofObj') : option' t) |> emit_unit 00:17:58 v #17902 > > $'#else' 00:17:58 v #17903 > > $'Some !x ' 00:17:58 v #17904 > > $'#endif' 00:17:58 v #17905 > > $'|> fun x -> _!x <- Some x' 00:17:58 v #17906 > > $'match _!x with Some x -> x | None -> failwith "optionm\'.of_obj 00:17:58 v #17907 > > _!x=None"' : option' t 00:17:58 v #17908 > > Python = fun () => 00:17:58 v #17909 > > $'!x ' : option' t 00:17:58 v #17910 > > } 00:17:58 v #17911 > > 00:17:58 v #17912 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:17:58 v #17913 > > //// test 00:17:58 v #17914 > > ///! fsharp 00:17:58 v #17915 > > ///! cuda 00:17:58 v #17916 > > ////! rust // attempted to zero-initialize type `alloc::sync::Arc<dyn 00:17:58 v #17917 > > core::any::Any>`, which is invalid 00:17:58 v #17918 > > ///! typescript 00:17:58 v #17919 > > ///! python 00:17:58 v #17920 > > 00:17:58 v #17921 > > null () 00:17:58 v #17922 > > |> of_obj 00:17:58 v #17923 > > |> unbox 00:17:58 v #17924 > > |> _assert_eq (None : option string) 00:18:05 v #17925 > > 00:18:05 v #17926 > > ── [ 6.67s - return value ] ──────────────────────────────────────────────────── 00:18:05 v #17927 > > │ .py output (Cuda): 00:18:05 v #17928 > > │ __assert_eq / actual: US0_1() / expected: US0_1() 00:18:05 v #17929 > > │ 00:18:05 v #17930 > > │ .ts output: 00:18:05 v #17931 > > │ __assert_eq / actual: US0_1 / expected: US0_1 00:18:05 v #17932 > > │ 00:18:05 v #17933 > > │ .py output: 00:18:05 v #17934 > > │ __assert_eq / actual: US0_1 / expected: US0_1 00:18:05 v #17935 > > │ 00:18:05 v #17936 > > │ 00:18:05 v #17937 > > 00:18:05 v #17938 > > ── [ 6.67s - stdout ] ────────────────────────────────────────────────────────── 00:18:05 v #17939 > > │ .fsx output: 00:18:05 v #17940 > > │ __assert_eq / actual: US0_1 / expected: US0_1 00:18:05 v #17941 > > │ 00:18:05 v #17942 > > 00:18:05 v #17943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:05 v #17944 > > //// test 00:18:05 v #17945 > > ///! fsharp 00:18:05 v #17946 > > ///! cuda 00:18:05 v #17947 > > ///! rust 00:18:05 v #17948 > > ///! typescript 00:18:05 v #17949 > > ///! python 00:18:05 v #17950 > > 00:18:05 v #17951 > > "" 00:18:05 v #17952 > > |> of_obj 00:18:05 v #17953 > > |> unbox 00:18:05 v #17954 > > |> _assert_eq' (Some "") 00:18:13 v #17955 > > 00:18:13 v #17956 > > ── [ 8.42s - return value ] ──────────────────────────────────────────────────── 00:18:13 v #17957 > > │ .py output (Cuda): 00:18:13 v #17958 > > │ __assert_eq' / actual: US0_0(v0='') / expected: US0_0(v0='') 00:18:13 v #17959 > > │ 00:18:13 v #17960 > > │ .rs output: 00:18:13 v #17961 > > │ __assert_eq' / actual: US0_0("") / expected: US0_0("") 00:18:13 v #17962 > > │ 00:18:13 v #17963 > > │ .ts output: 00:18:13 v #17964 > > │ __assert_eq' / actual: US0_0 / expected: US0_0 00:18:13 v #17965 > > │ 00:18:13 v #17966 > > │ .py output: 00:18:13 v #17967 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" 00:18:13 v #17968 > > │ 00:18:13 v #17969 > > │ 00:18:13 v #17970 > > 00:18:13 v #17971 > > ── [ 8.42s - stdout ] ────────────────────────────────────────────────────────── 00:18:13 v #17972 > > │ .fsx output: 00:18:13 v #17973 > > │ __assert_eq' / actual: US0_0 "" / expected: US0_0 "" 00:18:13 v #17974 > > │ 00:18:13 v #17975 > > 00:18:13 v #17976 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #17977 > > │ ### flatten' 00:18:13 v #17978 > > 00:18:13 v #17979 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #17980 > > inl flatten' x = 00:18:13 v #17981 > > x 00:18:13 v #17982 > > |> unbox 00:18:13 v #17983 > > |> optionm.map unbox 00:18:13 v #17984 > > |> flatten 00:18:13 v #17985 > > 00:18:13 v #17986 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #17987 > > │ ## rust 00:18:13 v #17988 > > 00:18:13 v #17989 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #17990 > > │ ### try' 00:18:13 v #17991 > > 00:18:13 v #17992 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #17993 > > inl try' forall t. (x : option' t) : t = 00:18:13 v #17994 > > !\\(x, $'"$0?"') 00:18:13 v #17995 > > 00:18:13 v #17996 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #17997 > > │ ### map' 00:18:13 v #17998 > > 00:18:13 v #17999 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #18000 > > inl map' forall t u. (fn : t -> u) (x : option' t) : option' u = 00:18:13 v #18001 > > (!\\(x, $'"true; let _optionm_map_ = $0.map(|x| { //"') : bool) |> ignore 00:18:13 v #18002 > > inl result = fn !\($'"x"') 00:18:13 v #18003 > > (!\\(result, $'"true; $0 })"') : bool) |> ignore 00:18:13 v #18004 > > !\($'"_optionm_map_"') 00:18:13 v #18005 > > 00:18:13 v #18006 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:13 v #18007 > > │ ### unwrap 00:18:13 v #18008 > > 00:18:13 v #18009 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:13 v #18010 > > inl unwrap forall t. (x : option' t) : t = 00:18:13 v #18011 > > !\\(x, $'"$0.unwrap()"') 00:18:14 v #18012 > > 00:18:14 v #18013 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18014 > > │ ### take 00:18:14 v #18015 > > 00:18:14 v #18016 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18017 > > inl take forall t. (x : option' t) : option' t = 00:18:14 v #18018 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:18:14 v #18019 > > !\\(x, $'"Option::take(&mut $0)"') 00:18:14 v #18020 > > 00:18:14 v #18021 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18022 > > │ ### take_ref 00:18:14 v #18023 > > 00:18:14 v #18024 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18025 > > inl take_ref forall t. (x : rust.ref (option' t)) : option' t = 00:18:14 v #18026 > > (!\\(x, $'"true; let mut !x = !x"') : bool) |> ignore 00:18:14 v #18027 > > !\\(x, $'"Option::take(&mut $0)"') 00:18:14 v #18028 > > 00:18:14 v #18029 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18030 > > │ ### take_ref_mut 00:18:14 v #18031 > > 00:18:14 v #18032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18033 > > inl take_ref_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' t = 00:18:14 v #18034 > > !\\(x, $'"Option::take($0)"') 00:18:14 v #18035 > > 00:18:14 v #18036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18037 > > │ ### cloned 00:18:14 v #18038 > > 00:18:14 v #18039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18040 > > inl cloned forall t. (x : option' (rust.ref t)) : option' t = 00:18:14 v #18041 > > !\\(x, $'"$0.cloned()"') 00:18:14 v #18042 > > 00:18:14 v #18043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18044 > > │ ### as_ref 00:18:14 v #18045 > > 00:18:14 v #18046 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18047 > > inl as_ref forall t. (x : rust.ref (option' t)) : option' (rust.ref t) = 00:18:14 v #18048 > > !\\(x, $'"$0.as_ref()"') 00:18:14 v #18049 > > 00:18:14 v #18050 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18051 > > │ ### as_mut 00:18:14 v #18052 > > 00:18:14 v #18053 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18054 > > inl as_mut forall t. (x : rust.ref (rust.mut' (option' t))) : option' (rust.ref 00:18:14 v #18055 > > (rust.mut' t)) = 00:18:14 v #18056 > > !\\(x, $'"$0.as_mut()"') 00:18:14 v #18057 > > 00:18:14 v #18058 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:14 v #18059 > > │ ### unwrap_or 00:18:14 v #18060 > > 00:18:14 v #18061 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:14 v #18062 > > inl unwrap_or forall t. (def : t) (x : option' t) : t = 00:18:14 v #18063 > > !\($'"!x.unwrap_or(!def)"') 00:18:15 v #18064 > > 00:18:15 v #18065 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:15 v #18066 > > │ ### and_then 00:18:15 v #18067 > > 00:18:15 v #18068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #18069 > > inl and_then forall t u. (fn : t -> option' u) (x : option' t) : option' u = 00:18:15 v #18070 > > !\\((x, fn), $'"$0.and_then(|x| $1(x))"') 00:18:15 v #18071 > > 00:18:15 v #18072 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:15 v #18073 > > │ ### rc_upgrade 00:18:15 v #18074 > > 00:18:15 v #18075 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #18076 > > inl rc_upgrade forall t. (x : rust.weak_rc t) : option' (rust.rc t) = 00:18:15 v #18077 > > !\\(x, $'"std::rc::Weak::upgrade(&$0)"') 00:18:15 v #18078 > > 00:18:15 v #18079 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:15 v #18080 > > │ ### rc_into_inner 00:18:15 v #18081 > > 00:18:15 v #18082 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #18083 > > inl rc_into_inner forall t. (x : rust.rc t) : option' t = 00:18:15 v #18084 > > !\\(x, $'"std::rc::Rc::into_inner($0)"') 00:18:15 v #18085 > > 00:18:15 v #18086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:15 v #18087 > > //// test 00:18:15 v #18088 > > ///! rust 00:18:15 v #18089 > > 00:18:15 v #18090 > > rust.new_rc 0i32 00:18:15 v #18091 > > |> rc_into_inner 00:18:15 v #18092 > > |> unbox 00:18:15 v #18093 > > |> _assert_eq' (Some 0i32) 00:18:21 v #18094 > > 00:18:21 v #18095 > > ── [ 5.71s - return value ] ──────────────────────────────────────────────────── 00:18:21 v #18096 > > │ __assert_eq' / actual: US0_0(0) / expected: US0_0(0) 00:18:21 v #18097 > > │ 00:18:21 v #18098 > 00:00:41 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 18247 } 00:18:21 v #18099 > 00:00:41 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:22 v #18100 > 00:00:41 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.ipynb to html 00:18:22 v #18101 > 00:00:41 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:22 v #18102 > 00:00:41 v #7 ! validate(nb) 00:18:22 v #18103 > 00:00:42 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:22 v #18104 > 00:00:42 v #9 ! return _pygments_highlight( 00:18:22 v #18105 > 00:00:42 v #10 ! [NbConvertApp] Writing 347081 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/optionm'.dib.html 00:18:22 v #18106 > 00:00:42 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:18:22 v #18107 > 00:00:42 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:18:22 v #18108 > 00:00:42 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/optionm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:23 v #18109 > 00:00:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:23 v #18110 > 00:00:42 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:23 v #18111 > 00:00:42 d #16 spiral.run / dib / { exit_code = 0; result_length = 19206 } 00:18:23 d #18112 runtime.execute_with_options_async / { exit_code = 0; output_length = 22849 } 00:18:23 d #23 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path optionm'.dib --retries 3 00:18:23 d #18113 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path listm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:23 v #18114 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "listm'.dib", "--retries", "3"])) } 00:18:23 v #18115 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:24 v #18116 > > 00:18:24 v #18117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:24 v #18118 > > │ # listm' 00:18:26 v #18119 > > 00:18:26 v #18120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:26 v #18121 > > //// test 00:18:26 v #18122 > > 00:18:26 v #18123 > > open testing 00:18:27 v #18124 > > 00:18:27 v #18125 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:27 v #18126 > > │ ## listm' 00:18:27 v #18127 > > 00:18:27 v #18128 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:27 v #18129 > > │ ### append 00:18:27 v #18130 > > 00:18:27 v #18131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:27 v #18132 > > instance append list t = 00:18:27 v #18133 > > listm.append 00:18:27 v #18134 > > 00:18:27 v #18135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:27 v #18136 > > //// test 00:18:27 v #18137 > > 00:18:27 v #18138 > > [[ "a"; "b" ]] ++ [[ "c"; "d" ]] 00:18:27 v #18139 > > |> _assert_eq [[ "a"; "b"; "c"; "d" ]] 00:18:28 v #18140 > > 00:18:28 v #18141 > > ── [ 879.98ms - stdout ] ─────────────────────────────────────────────────────── 00:18:28 v #18142 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", 00:18:28 v #18143 > > UH0_1 ("d", UH0_0)))) / expected: UH0_1 ("a", UH0_1 ("b", UH0_1 ("c", UH0_1 00:18:28 v #18144 > > ("d", UH0_0)))) 00:18:28 v #18145 > > │ 00:18:28 v #18146 > > 00:18:28 v #18147 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:28 v #18148 > > │ ### collect 00:18:28 v #18149 > > 00:18:28 v #18150 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:28 v #18151 > > inl collect forall t r. (fn : t -> list r) (items : list t) : list r = 00:18:28 v #18152 > > items 00:18:28 v #18153 > > |> listm.map fn 00:18:28 v #18154 > > |> listm.fold (++) [[]] 00:18:28 v #18155 > > 00:18:28 v #18156 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:28 v #18157 > > │ ### replicate 00:18:28 v #18158 > > 00:18:28 v #18159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:28 v #18160 > > inl replicate count x = 00:18:28 v #18161 > > listm.init count fun _ => x 00:18:29 v #18162 > > 00:18:29 v #18163 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:29 v #18164 > > │ ### map4 00:18:29 v #18165 > > 00:18:29 v #18166 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18167 > > inl map4 f l1 l2 l3 l4 = 00:18:29 v #18168 > > inl rec loop l1 l2 l3 l4 acc = 00:18:29 v #18169 > > match l1, l2, l3, l4 with 00:18:29 v #18170 > > | (x1 :: xs1), (x2 :: xs2), (x3 :: xs3), (x4 :: xs4) => 00:18:29 v #18171 > > loop xs1 xs2 xs3 xs4 (f x1 x2 x3 x4 :: acc) 00:18:29 v #18172 > > | _ => acc |> listm.rev 00:18:29 v #18173 > > loop l1 l2 l3 l4 [[]] 00:18:29 v #18174 > > 00:18:29 v #18175 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:29 v #18176 > > │ ### init_series 00:18:29 v #18177 > > 00:18:29 v #18178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18179 > > inl init_series start end inc = 00:18:29 v #18180 > > inl total : f64 = conv ((end - start) / inc) + 1 00:18:29 v #18181 > > listm.init total (conv >> (*) inc >> (+) start) 00:18:29 v #18182 > > 00:18:29 v #18183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18184 > > //// test 00:18:29 v #18185 > > 00:18:29 v #18186 > > init_series 0 1 0.5 00:18:29 v #18187 > > |> _assert_eq [[ 0f64; 0.5; 1 ]] 00:18:29 v #18188 > > 00:18:29 v #18189 > > ── [ 180.06ms - stdout ] ─────────────────────────────────────────────────────── 00:18:29 v #18190 > > │ __assert_eq / actual: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, 00:18:29 v #18191 > > UH0_0))) / expected: UH0_1 (0.0, UH0_1 (0.5, UH0_1 (1.0, UH0_0))) 00:18:29 v #18192 > > │ 00:18:29 v #18193 > > 00:18:29 v #18194 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:29 v #18195 > > │ ### try_item 00:18:29 v #18196 > > 00:18:29 v #18197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18198 > > inl rec try_item i = function 00:18:29 v #18199 > > | Cons (x, _) when i = 0 => Some x 00:18:29 v #18200 > > | Cons (_, xs) => try_item (i - 1) xs 00:18:29 v #18201 > > | Nil => None 00:18:29 v #18202 > > 00:18:29 v #18203 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18204 > > //// test 00:18:29 v #18205 > > 00:18:29 v #18206 > > listm.init 10i32 id 00:18:29 v #18207 > > |> try_item 9i32 00:18:29 v #18208 > > |> _assert_eq (Some 9) 00:18:29 v #18209 > > 00:18:29 v #18210 > > ── [ 209.74ms - stdout ] ─────────────────────────────────────────────────────── 00:18:29 v #18211 > > │ __assert_eq / actual: US0_0 9 / expected: US0_0 9 00:18:29 v #18212 > > │ 00:18:29 v #18213 > > 00:18:29 v #18214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:29 v #18215 > > //// test 00:18:29 v #18216 > > 00:18:29 v #18217 > > listm.init 10i32 id 00:18:29 v #18218 > > |> try_item 10i32 00:18:29 v #18219 > > |> _assert_eq None 00:18:30 v #18220 > > 00:18:30 v #18221 > > ── [ 190.49ms - stdout ] ─────────────────────────────────────────────────────── 00:18:30 v #18222 > > │ __assert_eq / actual: US0_1 / expected: US0_1 00:18:30 v #18223 > > │ 00:18:30 v #18224 > > 00:18:30 v #18225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 v #18226 > > │ ### item 00:18:30 v #18227 > > 00:18:30 v #18228 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #18229 > > inl item i = 00:18:30 v #18230 > > try_item i >> optionm.value 00:18:30 v #18231 > > 00:18:30 v #18232 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #18233 > > //// test 00:18:30 v #18234 > > 00:18:30 v #18235 > > listm.init 10i32 id 00:18:30 v #18236 > > |> item 9i32 00:18:30 v #18237 > > |> _assert_eq 9 00:18:30 v #18238 > > 00:18:30 v #18239 > > ── [ 164.58ms - stdout ] ─────────────────────────────────────────────────────── 00:18:30 v #18240 > > │ __assert_eq / actual: 9 / expected: 9 00:18:30 v #18241 > > │ 00:18:30 v #18242 > > 00:18:30 v #18243 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #18244 > > //// test 00:18:30 v #18245 > > 00:18:30 v #18246 > > fun () => 00:18:30 v #18247 > > listm.init 10i32 id 00:18:30 v #18248 > > |> item 10i32 00:18:30 v #18249 > > |> ignore 00:18:30 v #18250 > > |> _throws 00:18:30 v #18251 > > |> optionm.map sm'.format_exception 00:18:30 v #18252 > > |> _assert_eq (Some "System.Exception: Option does not have a value.") 00:18:30 v #18253 > > 00:18:30 v #18254 > > ── [ 300.66ms - stdout ] ─────────────────────────────────────────────────────── 00:18:30 v #18255 > > │ __assert_eq / actual: US1_0 "System.Exception: Option does 00:18:30 v #18256 > > not have a value." / expected: US1_0 "System.Exception: Option does not have a 00:18:30 v #18257 > > value." 00:18:30 v #18258 > > │ 00:18:30 v #18259 > > 00:18:30 v #18260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 v #18261 > > │ ### try_item_ 00:18:30 v #18262 > > 00:18:30 v #18263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #18264 > > let rec try_item_ i = function 00:18:30 v #18265 > > | Cons (x, _) when i = 0 => Some x 00:18:30 v #18266 > > | Cons (_, xs) => try_item_ (i - 1) xs 00:18:30 v #18267 > > | Nil => None 00:18:30 v #18268 > > 00:18:30 v #18269 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:30 v #18270 > > │ ### item_ 00:18:30 v #18271 > > 00:18:30 v #18272 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:30 v #18273 > > inl item_ i = 00:18:30 v #18274 > > try_item_ i >> optionm.value 00:18:31 v #18275 > > 00:18:31 v #18276 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:31 v #18277 > > │ ### sum 00:18:31 v #18278 > > 00:18:31 v #18279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18280 > > inl sum list = 00:18:31 v #18281 > > list |> listm.fold (+) 0 00:18:31 v #18282 > > 00:18:31 v #18283 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18284 > > //// test 00:18:31 v #18285 > > 00:18:31 v #18286 > > listm.init 10i32 id 00:18:31 v #18287 > > |> sum 00:18:31 v #18288 > > |> _assert_eq 45 00:18:31 v #18289 > > 00:18:31 v #18290 > > ── [ 155.92ms - stdout ] ─────────────────────────────────────────────────────── 00:18:31 v #18291 > > │ __assert_eq / actual: 45 / expected: 45 00:18:31 v #18292 > > │ 00:18:31 v #18293 > > 00:18:31 v #18294 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:31 v #18295 > > │ ### unzip 00:18:31 v #18296 > > 00:18:31 v #18297 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18298 > > inl unzip list = 00:18:31 v #18299 > > (([[]], [[]]), list) 00:18:31 v #18300 > > ||> listm.fold fun (acc_x, acc_y) (x, y) => 00:18:31 v #18301 > > x :: acc_x, y :: acc_y 00:18:31 v #18302 > > |> fun x, y => 00:18:31 v #18303 > > x |> listm.rev, y |> listm.rev 00:18:31 v #18304 > > 00:18:31 v #18305 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18306 > > //// test 00:18:31 v #18307 > > 00:18:31 v #18308 > > listm.init 10i32 id 00:18:31 v #18309 > > |> listm.map (fun x => x, x) 00:18:31 v #18310 > > |> unzip 00:18:31 v #18311 > > |> fun x, y => 00:18:31 v #18312 > > x |> sum 00:18:31 v #18313 > > |> _assert_eq 45 00:18:31 v #18314 > > 00:18:31 v #18315 > > y |> sum 00:18:31 v #18316 > > |> _assert_eq 45 00:18:31 v #18317 > > 00:18:31 v #18318 > > ── [ 163.05ms - stdout ] ─────────────────────────────────────────────────────── 00:18:31 v #18319 > > │ __assert_eq / actual: 45 / expected: 45 00:18:31 v #18320 > > │ __assert_eq / actual: 45 / expected: 45 00:18:31 v #18321 > > │ 00:18:31 v #18322 > > 00:18:31 v #18323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:31 v #18324 > > │ ### try_index_of 00:18:31 v #18325 > > 00:18:31 v #18326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18327 > > inl try_index_of item list = 00:18:31 v #18328 > > inl rec loop i = function 00:18:31 v #18329 > > | [[]] => None 00:18:31 v #18330 > > | x :: xs => 00:18:31 v #18331 > > if x = item 00:18:31 v #18332 > > then Some i 00:18:31 v #18333 > > else loop (i + 1) xs 00:18:31 v #18334 > > loop 0 list 00:18:31 v #18335 > > 00:18:31 v #18336 > > inl index_of item = 00:18:31 v #18337 > > try_index_of item >> optionm.value 00:18:31 v #18338 > > 00:18:31 v #18339 > > inl try_index_of_ item list = 00:18:31 v #18340 > > let rec loop i = function 00:18:31 v #18341 > > | [[]] => None 00:18:31 v #18342 > > | x :: xs => 00:18:31 v #18343 > > if x = item 00:18:31 v #18344 > > then Some i 00:18:31 v #18345 > > else loop (i + 1) xs 00:18:31 v #18346 > > loop 0 list 00:18:31 v #18347 > > 00:18:31 v #18348 > > inl index_of_ item = 00:18:31 v #18349 > > try_index_of_ item >> optionm.value 00:18:31 v #18350 > > 00:18:31 v #18351 > > inl try_index_of__ item list = 00:18:31 v #18352 > > inl i = mut 0 00:18:31 v #18353 > > inl list = mut list 00:18:31 v #18354 > > inl result = mut None 00:18:31 v #18355 > > let rec loop () = 00:18:31 v #18356 > > match *list with 00:18:31 v #18357 > > | [[]] => result <- None 00:18:31 v #18358 > > | x :: xs => 00:18:31 v #18359 > > if x = item 00:18:31 v #18360 > > then result <- Some *i 00:18:31 v #18361 > > else 00:18:31 v #18362 > > i <- *i + 1 00:18:31 v #18363 > > list <- xs 00:18:31 v #18364 > > loop () 00:18:31 v #18365 > > loop () 00:18:31 v #18366 > > *result 00:18:31 v #18367 > > 00:18:31 v #18368 > > inl index_of__ item = 00:18:31 v #18369 > > try_index_of__ item >> optionm.value 00:18:31 v #18370 > > 00:18:31 v #18371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18372 > > //// test 00:18:31 v #18373 > > 00:18:31 v #18374 > > listm.init 10i32 id 00:18:31 v #18375 > > |> index_of 5i32 00:18:31 v #18376 > > |> _assert_eq 5i32 00:18:31 v #18377 > > 00:18:31 v #18378 > > ── [ 170.92ms - stdout ] ─────────────────────────────────────────────────────── 00:18:31 v #18379 > > │ __assert_eq / actual: 5 / expected: 5 00:18:31 v #18380 > > │ 00:18:31 v #18381 > > 00:18:31 v #18382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:31 v #18383 > > //// test 00:18:31 v #18384 > > 00:18:31 v #18385 > > listm.init 10i32 id 00:18:31 v #18386 > > |> try_index_of 10i32 00:18:31 v #18387 > > |> _assert_eq (None : option i32) 00:18:32 v #18388 > > 00:18:32 v #18389 > > ── [ 181.39ms - stdout ] ─────────────────────────────────────────────────────── 00:18:32 v #18390 > > │ __assert_eq / actual: US0_1 / expected: US0_1 00:18:32 v #18391 > > │ 00:18:32 v #18392 > > 00:18:32 v #18393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:32 v #18394 > > │ ### try_find 00:18:32 v #18395 > > 00:18:32 v #18396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18397 > > inl try_find fn list = 00:18:32 v #18398 > > inl rec loop = function 00:18:32 v #18399 > > | [[]] => None 00:18:32 v #18400 > > | x :: xs => 00:18:32 v #18401 > > if fn x 00:18:32 v #18402 > > then Some x 00:18:32 v #18403 > > else loop xs 00:18:32 v #18404 > > loop list 00:18:32 v #18405 > > 00:18:32 v #18406 > > inl try_find_ fn list = 00:18:32 v #18407 > > let rec loop = function 00:18:32 v #18408 > > | [[]] => None 00:18:32 v #18409 > > | x :: xs => 00:18:32 v #18410 > > if fn x 00:18:32 v #18411 > > then Some x 00:18:32 v #18412 > > else loop xs 00:18:32 v #18413 > > loop list 00:18:32 v #18414 > > 00:18:32 v #18415 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18416 > > //// test 00:18:32 v #18417 > > 00:18:32 v #18418 > > listm.init 10i32 id 00:18:32 v #18419 > > |> try_find ((=) 5i32) 00:18:32 v #18420 > > |> _assert_eq (Some 5i32) 00:18:32 v #18421 > > 00:18:32 v #18422 > > ── [ 195.32ms - stdout ] ─────────────────────────────────────────────────────── 00:18:32 v #18423 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:18:32 v #18424 > > │ 00:18:32 v #18425 > > 00:18:32 v #18426 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18427 > > inl find x = 00:18:32 v #18428 > > try_find x >> optionm.value 00:18:32 v #18429 > > 00:18:32 v #18430 > > inl find_ x = 00:18:32 v #18431 > > try_find_ x >> optionm.value 00:18:32 v #18432 > > 00:18:32 v #18433 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18434 > > //// test 00:18:32 v #18435 > > 00:18:32 v #18436 > > listm.init 10i32 id 00:18:32 v #18437 > > |> find ((=) 5i32) 00:18:32 v #18438 > > |> _assert_eq 5i32 00:18:32 v #18439 > > 00:18:32 v #18440 > > ── [ 170.91ms - stdout ] ─────────────────────────────────────────────────────── 00:18:32 v #18441 > > │ __assert_eq / actual: 5 / expected: 5 00:18:32 v #18442 > > │ 00:18:32 v #18443 > > 00:18:32 v #18444 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:32 v #18445 > > │ ### choose 00:18:32 v #18446 > > 00:18:32 v #18447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18448 > > inl choose f l = 00:18:32 v #18449 > > (l, [[]]) 00:18:32 v #18450 > > ||> listm.foldBack fun x acc => 00:18:32 v #18451 > > match f x with 00:18:32 v #18452 > > | Some y => y :: acc 00:18:32 v #18453 > > | None => acc 00:18:32 v #18454 > > 00:18:32 v #18455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:32 v #18456 > > //// test 00:18:32 v #18457 > > 00:18:32 v #18458 > > listm.init 10i32 id 00:18:32 v #18459 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:18:32 v #18460 > > |> _assert_eq [[ 0; 2; 4; 6; 8 ]] 00:18:33 v #18461 > > 00:18:33 v #18462 > > ── [ 202.02ms - stdout ] ─────────────────────────────────────────────────────── 00:18:33 v #18463 > > │ __assert_eq / actual: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, 00:18:33 v #18464 > > UH0_1 (8, UH0_0))))) / expected: UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 00:18:33 v #18465 > > (8, UH0_0))))) 00:18:33 v #18466 > > │ 00:18:33 v #18467 > > 00:18:33 v #18468 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:33 v #18469 > > │ ### filter 00:18:33 v #18470 > > 00:18:33 v #18471 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #18472 > > inl filter forall t. (fn : t -> bool) (list : list t) : list t = 00:18:33 v #18473 > > (list, Nil) 00:18:33 v #18474 > > ||> listm.foldBack fun x acc => 00:18:33 v #18475 > > if fn x then x :: acc else acc 00:18:33 v #18476 > > 00:18:33 v #18477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:33 v #18478 > > │ ### zip_with 00:18:33 v #18479 > > 00:18:33 v #18480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #18481 > > inl zip_with fn xs ys = 00:18:33 v #18482 > > inl rec loop acc xs ys = 00:18:33 v #18483 > > match xs, ys with 00:18:33 v #18484 > > | Cons (x, xs), Cons (y, ys) => 00:18:33 v #18485 > > loop (fn x y :: acc) xs ys 00:18:33 v #18486 > > | _ => listm.rev acc 00:18:33 v #18487 > > loop [[]] xs ys 00:18:33 v #18488 > > 00:18:33 v #18489 > > inl zip_with_ fn xs ys = 00:18:33 v #18490 > > let rec loop acc xs ys = 00:18:33 v #18491 > > match xs, ys with 00:18:33 v #18492 > > | Cons (x, xs), Cons (y, ys) => 00:18:33 v #18493 > > loop (fn x y :: acc) xs ys 00:18:33 v #18494 > > | _ => listm.rev acc 00:18:33 v #18495 > > loop [[]] xs ys 00:18:33 v #18496 > > 00:18:33 v #18497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #18498 > > //// test 00:18:33 v #18499 > > 00:18:33 v #18500 > > ([[ 1i32; 2; 3 ]], [[ 4; 5; 6 ]]) 00:18:33 v #18501 > > ||> zip_with (+) 00:18:33 v #18502 > > |> _assert_eq [[ 5; 7; 9 ]] 00:18:33 v #18503 > > 00:18:33 v #18504 > > ── [ 181.16ms - stdout ] ─────────────────────────────────────────────────────── 00:18:33 v #18505 > > │ __assert_eq / actual: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) 00:18:33 v #18506 > > / expected: UH0_1 (5, UH0_1 (7, UH0_1 (9, UH0_0))) 00:18:33 v #18507 > > │ 00:18:33 v #18508 > > 00:18:33 v #18509 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:33 v #18510 > > │ ### zip 00:18:33 v #18511 > > 00:18:33 v #18512 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #18513 > > inl zip xs ys = 00:18:33 v #18514 > > zip_with pair xs ys 00:18:33 v #18515 > > 00:18:33 v #18516 > > inl zip_ xs ys = 00:18:33 v #18517 > > zip_with_ pair xs ys 00:18:33 v #18518 > > 00:18:33 v #18519 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:33 v #18520 > > //// test 00:18:33 v #18521 > > 00:18:33 v #18522 > > ([[ 1i32; 2; 3 ]], [[ 4i32; 5; 6 ]]) 00:18:33 v #18523 > > ||> zip 00:18:33 v #18524 > > |> _assert_eq [[ 1, 4; 2, 5; 3, 6 ]] 00:18:34 v #18525 > > 00:18:34 v #18526 > > ── [ 213.07ms - stdout ] ─────────────────────────────────────────────────────── 00:18:34 v #18527 > > │ __assert_eq / actual: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, 00:18:34 v #18528 > > UH0_0))) / expected: UH0_1 (1, 4, UH0_1 (2, 5, UH0_1 (3, 6, UH0_0))) 00:18:34 v #18529 > > │ 00:18:34 v #18530 > > 00:18:34 v #18531 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:34 v #18532 > > │ ### indexed 00:18:34 v #18533 > > 00:18:34 v #18534 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18535 > > inl indexed list = 00:18:34 v #18536 > > (([[]], 0), list) 00:18:34 v #18537 > > ||> listm.fold fun (acc, i) x => 00:18:34 v #18538 > > (i, x) :: acc, i + 1 00:18:34 v #18539 > > |> fst 00:18:34 v #18540 > > |> listm.rev 00:18:34 v #18541 > > 00:18:34 v #18542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18543 > > //// test 00:18:34 v #18544 > > 00:18:34 v #18545 > > listm.init 5i32 ((*) 2) 00:18:34 v #18546 > > |> indexed 00:18:34 v #18547 > > |> _assert_eq [[ 0i32, 0; 1, 2; 2, 4; 3, 6; 4, 8 ]] 00:18:34 v #18548 > > 00:18:34 v #18549 > > ── [ 203.27ms - stdout ] ─────────────────────────────────────────────────────── 00:18:34 v #18550 > > │ __assert_eq / actual: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 (2, 4, 00:18:34 v #18551 > > UH0_1 (3, 6, UH0_1 (4, 8, UH0_0))))) / expected: UH0_1 (0, 0, UH0_1 (1, 2, UH0_1 00:18:34 v #18552 > > (2, 4, UH0_1 (3, 6, UH0_1 (4, 8, UH0_0))))) 00:18:34 v #18553 > > │ 00:18:34 v #18554 > > 00:18:34 v #18555 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:34 v #18556 > > │ ### group_by 00:18:34 v #18557 > > 00:18:34 v #18558 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18559 > > inl group_by fn list = 00:18:34 v #18560 > > (list, [[]]) 00:18:34 v #18561 > > ||> listm.foldBack fun x acc => 00:18:34 v #18562 > > inl xk = fn x 00:18:34 v #18563 > > inl found, new_acc = 00:18:34 v #18564 > > ((false, [[]]), acc) 00:18:34 v #18565 > > ||> listm.fold fun (found, acc') (k, xs) => 00:18:34 v #18566 > > if k = xk 00:18:34 v #18567 > > then true, (k, x :: xs) :: acc' 00:18:34 v #18568 > > else found, (k, xs) :: acc' 00:18:34 v #18569 > > if found 00:18:34 v #18570 > > then new_acc 00:18:34 v #18571 > > else (xk, [[ x ]]) :: new_acc 00:18:34 v #18572 > > 00:18:34 v #18573 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18574 > > //// test 00:18:34 v #18575 > > 00:18:34 v #18576 > > listm.init 10i32 id 00:18:34 v #18577 > > |> group_by (fun x => x % 2 = 0) 00:18:34 v #18578 > > |> _assert_eq [[ true, [[ 0; 2; 4; 6; 8 ]]; false, [[ 1; 3; 5; 7; 9 ]] ]] 00:18:34 v #18579 > > 00:18:34 v #18580 > > ── [ 270.49ms - stdout ] ─────────────────────────────────────────────────────── 00:18:34 v #18581 > > │ __assert_eq / actual: UH1_1 00:18:34 v #18582 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, 00:18:34 v #18583 > > UH0_0))))), 00:18:34 v #18584 > > │ UH1_1 00:18:34 v #18585 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 00:18:34 v #18586 > > (9, UH0_0))))), UH1_0)) / expected: UH1_1 00:18:34 v #18587 > > │ (true, UH0_1 (0, UH0_1 (2, UH0_1 (4, UH0_1 (6, UH0_1 (8, 00:18:34 v #18588 > > UH0_0))))), 00:18:34 v #18589 > > │ UH1_1 00:18:34 v #18590 > > │ (false, UH0_1 (1, UH0_1 (3, UH0_1 (5, UH0_1 (7, UH0_1 00:18:34 v #18591 > > (9, UH0_0))))), UH1_0)) 00:18:34 v #18592 > > │ 00:18:34 v #18593 > > 00:18:34 v #18594 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:34 v #18595 > > │ ### forall' 00:18:34 v #18596 > > 00:18:34 v #18597 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18598 > > inl forall' fn (head :: tail) = 00:18:34 v #18599 > > (true, tail) 00:18:34 v #18600 > > ||> listm.fold fun acc x => 00:18:34 v #18601 > > acc && x = head 00:18:34 v #18602 > > 00:18:34 v #18603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:34 v #18604 > > //// test 00:18:34 v #18605 > > 00:18:34 v #18606 > > [[ 1i32; 1; 1; 1; 1 ]] 00:18:34 v #18607 > > |> forall' ((=) 1i32) 00:18:34 v #18608 > > |> _assert_eq true 00:18:35 v #18609 > > 00:18:35 v #18610 > > ── [ 169.66ms - stdout ] ─────────────────────────────────────────────────────── 00:18:35 v #18611 > > │ __assert_eq / actual: true / expected: true 00:18:35 v #18612 > > │ 00:18:35 v #18613 > > 00:18:35 v #18614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #18615 > > │ ### last 00:18:35 v #18616 > > 00:18:35 v #18617 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #18618 > > inl last list = 00:18:35 v #18619 > > list 00:18:35 v #18620 > > |> listm.rev 00:18:35 v #18621 > > |> item 0i32 00:18:35 v #18622 > > 00:18:35 v #18623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #18624 > > //// test 00:18:35 v #18625 > > 00:18:35 v #18626 > > listm.init 10i32 id 00:18:35 v #18627 > > |> last 00:18:35 v #18628 > > |> _assert_eq 9 00:18:35 v #18629 > > 00:18:35 v #18630 > > ── [ 174.79ms - stdout ] ─────────────────────────────────────────────────────── 00:18:35 v #18631 > > │ __assert_eq / actual: 9 / expected: 9 00:18:35 v #18632 > > │ 00:18:35 v #18633 > > 00:18:35 v #18634 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #18635 > > │ ### try_pick 00:18:35 v #18636 > > 00:18:35 v #18637 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #18638 > > inl try_pick fn list = 00:18:35 v #18639 > > inl rec body fn = function 00:18:35 v #18640 > > | [[]] => None 00:18:35 v #18641 > > | x :: xs => 00:18:35 v #18642 > > match fn x with 00:18:35 v #18643 > > | Some y => Some y 00:18:35 v #18644 > > | None => loop xs 00:18:35 v #18645 > > and inl loop list = 00:18:35 v #18646 > > if var_is list |> not 00:18:35 v #18647 > > then body fn list 00:18:35 v #18648 > > else 00:18:35 v #18649 > > inl fn = join fn 00:18:35 v #18650 > > inl list = dyn list 00:18:35 v #18651 > > join body fn list 00:18:35 v #18652 > > loop list 00:18:35 v #18653 > > 00:18:35 v #18654 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #18655 > > //// test 00:18:35 v #18656 > > 00:18:35 v #18657 > > listm.init 10i32 id 00:18:35 v #18658 > > |> try_pick (fun x => if x = 5i32 then Some x else None) 00:18:35 v #18659 > > |> _assert_eq (Some 5i32) 00:18:35 v #18660 > > 00:18:35 v #18661 > > ── [ 180.72ms - stdout ] ─────────────────────────────────────────────────────── 00:18:35 v #18662 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:18:35 v #18663 > > │ 00:18:35 v #18664 > > 00:18:35 v #18665 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:35 v #18666 > > │ ### exists' 00:18:35 v #18667 > > 00:18:35 v #18668 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:35 v #18669 > > inl exists' f x = 00:18:35 v #18670 > > inl length_x : i64 = x |> listm.length 00:18:35 v #18671 > > let rec loop i = 00:18:35 v #18672 > > if i >= length_x 00:18:35 v #18673 > > then false 00:18:35 v #18674 > > elif x |> item i |> f 00:18:35 v #18675 > > then true 00:18:35 v #18676 > > else loop (i + 1) 00:18:35 v #18677 > > loop 0 00:18:36 v #18678 > > 00:18:36 v #18679 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18680 > > //// test 00:18:36 v #18681 > > 00:18:36 v #18682 > > [[ 'a'; 'b'; 'c' ]] 00:18:36 v #18683 > > |> exists' fun x => x = 'b' 00:18:36 v #18684 > > |> _assert_eq true 00:18:36 v #18685 > > 00:18:36 v #18686 > > [[ 'a'; 'b' ]] 00:18:36 v #18687 > > |> exists' fun x => x = 'c' 00:18:36 v #18688 > > |> _assert_eq false 00:18:36 v #18689 > > 00:18:36 v #18690 > > [[]] 00:18:36 v #18691 > > |> exists' fun x => x = 'a' 00:18:36 v #18692 > > |> _assert_eq false 00:18:36 v #18693 > > 00:18:36 v #18694 > > ── [ 245.76ms - stdout ] ─────────────────────────────────────────────────────── 00:18:36 v #18695 > > │ __assert_eq / actual: true / expected: true 00:18:36 v #18696 > > │ __assert_eq / actual: false / expected: false 00:18:36 v #18697 > > │ __assert_eq / actual: false / expected: false 00:18:36 v #18698 > > │ 00:18:36 v #18699 > > 00:18:36 v #18700 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18701 > > │ ## fsharp 00:18:36 v #18702 > > 00:18:36 v #18703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18704 > > │ ### list' 00:18:36 v #18705 > > 00:18:36 v #18706 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18707 > > nominal list' t = $"backend_switch `({ Fsharp : $'`t list'; Python : $'list' })" 00:18:36 v #18708 > > 00:18:36 v #18709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18710 > > │ ### empty' 00:18:36 v #18711 > > 00:18:36 v #18712 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18713 > > inl empty' forall t. () : list' t = 00:18:36 v #18714 > > $'[[]]' 00:18:36 v #18715 > > 00:18:36 v #18716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18717 > > │ ### cons' 00:18:36 v #18718 > > 00:18:36 v #18719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18720 > > inl cons' forall t. (head : t) (tail : list' t) : list' t = 00:18:36 v #18721 > > backend_switch { 00:18:36 v #18722 > > Fsharp = fun () => $'!head :: !tail ' : list' t 00:18:36 v #18723 > > Python = fun () => 00:18:36 v #18724 > > $'!tail.insert(0, !head)' 00:18:36 v #18725 > > $'!tail ' : list' t 00:18:36 v #18726 > > } 00:18:36 v #18727 > > 00:18:36 v #18728 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18729 > > │ ### rev' 00:18:36 v #18730 > > 00:18:36 v #18731 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18732 > > inl rev' forall t. (items : list' t) : list' t = 00:18:36 v #18733 > > backend_switch { 00:18:36 v #18734 > > Fsharp = fun () => items |> $'List.rev' : list' t 00:18:36 v #18735 > > Python = fun () => $'list(reversed(!items))' : list' t 00:18:36 v #18736 > > } 00:18:36 v #18737 > > 00:18:36 v #18738 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:36 v #18739 > > │ ### box 00:18:36 v #18740 > > 00:18:36 v #18741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:36 v #18742 > > inl box forall t. (list : list t) : list' t = 00:18:36 v #18743 > > (list, empty' ()) 00:18:36 v #18744 > > ||> listm.foldBack fun x acc => 00:18:36 v #18745 > > acc |> cons' x 00:18:37 v #18746 > > 00:18:37 v #18747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18748 > > │ ### fold' 00:18:37 v #18749 > > 00:18:37 v #18750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18751 > > inl fold' forall t u. (fn : t -> u) (init : list u) (list : list' t) : list u = 00:18:37 v #18752 > > backend_switch { 00:18:37 v #18753 > > Fsharp = fun () => 00:18:37 v #18754 > > (init, list) 00:18:37 v #18755 > > ||> $'List.fold' join fun acc x => Cons (fn x, acc) 00:18:37 v #18756 > > : list u 00:18:37 v #18757 > > Python = fun () => 00:18:37 v #18758 > > inl init = init |> box 00:18:37 v #18759 > > $'r = !init ' 00:18:37 v #18760 > > inl list = list |> rev' 00:18:37 v #18761 > > $'for x in !list: r = [[!fn(x)]] + r' 00:18:37 v #18762 > > inl init : list u = Nil 00:18:37 v #18763 > > inl cons (a : u) b = Cons (a, b) 00:18:37 v #18764 > > $'r_ = !init ' 00:18:37 v #18765 > > $'for x in r: r_ = !cons (x)(r_)' 00:18:37 v #18766 > > $'r_' : list u 00:18:37 v #18767 > > } 00:18:37 v #18768 > > 00:18:37 v #18769 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18770 > > │ ### fold_back' 00:18:37 v #18771 > > 00:18:37 v #18772 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18773 > > inl fold_back' forall t u. (fn : t -> u) (list : list' t) (init : list u) : list 00:18:37 v #18774 > > u = 00:18:37 v #18775 > > backend_switch { 00:18:37 v #18776 > > Fsharp = fun () => 00:18:37 v #18777 > > (list, init) 00:18:37 v #18778 > > ||> $'List.foldBack' join fun x acc => Cons (fn x, acc) 00:18:37 v #18779 > > : list u 00:18:37 v #18780 > > Python = fun () => 00:18:37 v #18781 > > list 00:18:37 v #18782 > > |> rev' 00:18:37 v #18783 > > |> fold' fn init 00:18:37 v #18784 > > } 00:18:37 v #18785 > > 00:18:37 v #18786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18787 > > │ ### filter' 00:18:37 v #18788 > > 00:18:37 v #18789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18790 > > inl filter' forall t. (fn : t -> bool) (list : list' t) : list' t = 00:18:37 v #18791 > > backend_switch { 00:18:37 v #18792 > > Fsharp = fun () => list |> $'"List.filter !fn"' : list' t 00:18:37 v #18793 > > Python = fun () => $'list(filter(!fn, !list))' : list' t 00:18:37 v #18794 > > } 00:18:37 v #18795 > > 00:18:37 v #18796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18797 > > │ ### map 00:18:37 v #18798 > > 00:18:37 v #18799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18800 > > inl map forall t u. (fn : t -> u) (list : list' t) : list' u = 00:18:37 v #18801 > > backend_switch { 00:18:37 v #18802 > > Fsharp = fun () => list |> $'List.map' fn : list' u 00:18:37 v #18803 > > Python = fun () => $'list(map(!fn, !list))' : list' u 00:18:37 v #18804 > > } 00:18:37 v #18805 > > 00:18:37 v #18806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18807 > > │ ### unbox 00:18:37 v #18808 > > 00:18:37 v #18809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18810 > > inl unbox forall t. (list : list' t) : list t = 00:18:37 v #18811 > > (list, Nil) 00:18:37 v #18812 > > ||> fold_back' id 00:18:37 v #18813 > > 00:18:37 v #18814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:37 v #18815 > > │ ### distinct' 00:18:37 v #18816 > > 00:18:37 v #18817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:37 v #18818 > > // preserve order 00:18:37 v #18819 > > inl distinct' forall t. (list : list' t) : list' t = 00:18:37 v #18820 > > backend_switch { 00:18:37 v #18821 > > Fsharp = fun () => list |> $'List.distinct' : list' t 00:18:37 v #18822 > > Python = fun () => 00:18:37 v #18823 > > $'x = list(set(!list))' 00:18:37 v #18824 > > $'x.sort(key=!list.index)' 00:18:37 v #18825 > > $'x' : list' t 00:18:37 v #18826 > > } 00:18:38 v #18827 > > 00:18:38 v #18828 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:38 v #18829 > > //// test 00:18:38 v #18830 > > ///! fsharp 00:18:38 v #18831 > > ///! cuda 00:18:38 v #18832 > > 00:18:38 v #18833 > > [[ "1"; "2"; "2"; "3" ]] 00:18:38 v #18834 > > |> box 00:18:38 v #18835 > > |> distinct' 00:18:38 v #18836 > > |> unbox 00:18:38 v #18837 > > |> _assert_eq [[ "1"; "2"; "3" ]] 00:18:38 v #18838 > > 00:18:38 v #18839 > > ── [ 704.84ms - return value ] ───────────────────────────────────────────────── 00:18:38 v #18840 > > │ .py output (Cuda): 00:18:38 v #18841 > > │ __assert_eq / actual: UH0_1(v0='1', v1=UH0_1(v0='2', 00:18:38 v #18842 > > v1=UH0_1(v0='3', v1=UH0_0()))) / expected: UH0_1(v0='1', v1=UH0_1(v0='2', 00:18:38 v #18843 > > v1=UH0_1(v0='3', v1=UH0_0()))) 00:18:38 v #18844 > > │ 00:18:38 v #18845 > > │ 00:18:38 v #18846 > > 00:18:38 v #18847 > > ── [ 705.52ms - stdout ] ─────────────────────────────────────────────────────── 00:18:38 v #18848 > > │ .fsx output: 00:18:38 v #18849 > > │ __assert_eq / actual: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", 00:18:38 v #18850 > > UH0_0))) / expected: UH0_1 ("1", UH0_1 ("2", UH0_1 ("3", UH0_0))) 00:18:38 v #18851 > > │ 00:18:38 v #18852 > > 00:18:38 v #18853 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:38 v #18854 > > │ ### to_array' 00:18:38 v #18855 > > 00:18:38 v #18856 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:38 v #18857 > > inl to_array' forall t. (items : list' t) : array_base t = 00:18:38 v #18858 > > backend_switch { 00:18:38 v #18859 > > Fsharp = fun () => items |> $'List.toArray' : array_base t 00:18:38 v #18860 > > Python = fun () => $'(cp if cuda else np).array(!items)' : array_base t 00:18:38 v #18861 > > } 00:18:38 v #18862 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 26323 } 00:18:39 v #18863 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:39 v #18864 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.ipynb to html 00:18:39 v #18865 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:18:39 v #18866 > 00:00:16 v #7 ! validate(nb) 00:18:40 v #18867 > 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:18:40 v #18868 > 00:00:17 v #9 ! return _pygments_highlight( 00:18:40 v #18869 > 00:00:17 v #10 ! [NbConvertApp] Writing 389680 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/listm'.dib.html 00:18:40 v #18870 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:18:40 v #18871 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:18:40 v #18872 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/listm''.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:40 v #18873 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:18:40 v #18874 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:18:41 v #18875 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 27278 } 00:18:41 d #18876 runtime.execute_with_options_async / { exit_code = 0; output_length = 31427 } 00:18:40 d #24 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path listm'.dib --retries 3 00:18:41 d #18877 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path reflection.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:41 v #18878 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "reflection.dib", "--retries", "3"])) } 00:18:41 v #18879 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:18:42 v #18880 > > 00:18:42 v #18881 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:42 v #18882 > > │ # reflection 00:18:44 v #18883 > > 00:18:44 v #18884 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:44 v #18885 > > //// test 00:18:44 v #18886 > > 00:18:44 v #18887 > > open testing 00:18:45 v #18888 > > 00:18:45 v #18889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:45 v #18890 > > │ ## reflection 00:18:45 v #18891 > > 00:18:45 v #18892 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:18:45 v #18893 > > │ ### get_union_fields 00:18:45 v #18894 > > 00:18:45 v #18895 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 v #18896 > > inl get_union_fields forall union_type. () : list (string * union_type) = 00:18:45 v #18897 > > real 00:18:45 v #18898 > > real_core.union_to_record 00:18:45 v #18899 > > `union_type 00:18:45 v #18900 > > forall union_record_type. => 00:18:45 v #18901 > > real_core.record_type_fold 00:18:45 v #18902 > > fun acc key => 00:18:45 v #18903 > > forall value. => 00:18:45 v #18904 > > inl value = 00:18:45 v #18905 > > typecase value with 00:18:45 v #18906 > > | () => $'' : value 00:18:45 v #18907 > > | _ => 00:18:45 v #18908 > > backend_switch `value `({}) { 00:18:45 v #18909 > > Fsharp = 00:18:45 v #18910 > > (fun () => 00:18:45 v #18911 > > $'Unchecked.defaultof<_>' : 00:18:45 v #18912 > > value 00:18:45 v #18913 > > ) : () -> value 00:18:45 v #18914 > > Python = 00:18:45 v #18915 > > (fun () => 00:18:45 v #18916 > > $'None' : value 00:18:45 v #18917 > > ) : () -> value 00:18:45 v #18918 > > } 00:18:45 v #18919 > > inl item = real_core.nominal_create `union_type 00:18:45 v #18920 > > (key, value) 00:18:45 v #18921 > > inl key' = sm'_real.symbol_to_string `(`key) 00:18:45 v #18922 > > (::) `(string * union_type) (key', item) acc 00:18:45 v #18923 > > (Nil `(string * union_type)) 00:18:45 v #18924 > > `union_record_type 00:18:45 v #18925 > > 00:18:45 v #18926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:45 v #18927 > > //// test 00:18:45 v #18928 > > ///! fsharp 00:18:45 v #18929 > > ///! rust 00:18:45 v #18930 > > ///! typescript 00:18:45 v #18931 > > ///! python 00:18:45 v #18932 > > 00:18:45 v #18933 > > get_union_fields () 00:18:45 v #18934 > > |> listm'.box 00:18:45 v #18935 > > |> listm'.to_array' 00:18:45 v #18936 > > |> a 00:18:45 v #18937 > > |> am'.sort_by snd 00:18:45 v #18938 > > |> fun (a x : _ int _) => x 00:18:45 v #18939 > > |> _assert_eq' ;[[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:18:55 v #18940 > > 00:18:55 v #18941 > > ── [ 9.26s - return value ] ──────────────────────────────────────────────────── 00:18:55 v #18942 > > │ .rs output: 00:18:55 v #18943 > > │ __assert_eq' / actual: Array(MutCell([("Native", US0_0), 00:18:55 v #18944 > > ("Wasm", US0_1), ("Contract", US0_2)])) / expected: Array(MutCell([("Native", 00:18:55 v #18945 > > US0_0), ("Wasm", US0_1), ("Contract", US0_2)])) 00:18:55 v #18946 > > │ 00:18:55 v #18947 > > │ .ts output: 00:18:55 v #18948 > > │ __assert_eq' / actual: Native,US0_0,Wasm,US0_1,Contract,US0_2 00:18:55 v #18949 > > / expected: Native,US0_0,Wasm,US0_1,Contract,US0_2 00:18:55 v #18950 > > │ 00:18:55 v #18951 > > │ .py output: 00:18:55 v #18952 > > │ __assert_eq' / actual: [('Native', US0_0), ('Wasm', US0_1), 00:18:55 v #18953 > > ('Contract', US0_2)] / expected: [('Native', US0_0), ('Wasm', US0_1), 00:18:55 v #18954 > > ('Contract', US0_2)] 00:18:55 v #18955 > > │ 00:18:55 v #18956 > > │ 00:18:55 v #18957 > > 00:18:55 v #18958 > > ── [ 9.27s - stdout ] ────────────────────────────────────────────────────────── 00:18:55 v #18959 > > │ .fsx output: 00:18:55 v #18960 > > │ __assert_eq' / actual: [|struct ("Native", US0_0); struct 00:18:55 v #18961 > > ("Wasm", US0_1); struct ("Contract", US0_2)|] / expected: [|struct ("Native", 00:18:55 v #18962 > > US0_0); struct ("Wasm", US0_1); struct ("Contract", US0_2)|] 00:18:55 v #18963 > > │ 00:18:55 v #18964 > > 00:18:55 v #18965 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:18:55 v #18966 > > //// test 00:18:55 v #18967 > > ///! fsharp 00:18:55 v #18968 > > ///! rust 00:18:55 v #18969 > > ///! typescript 00:18:55 v #18970 > > ///! python 00:18:55 v #18971 > > 00:18:55 v #18972 > > get_union_fields () 00:18:55 v #18973 > > |> listm'.box 00:18:55 v #18974 > > |> listm'.to_array' 00:18:55 v #18975 > > |> a 00:18:55 v #18976 > > |> am'.sort_by snd 00:18:55 v #18977 > > |> fun (a x : _ int _) => x 00:18:55 v #18978 > > |> _assert_eq' ;[[ "Some", Some 0i32; "None", None ]] 00:19:03 v #18979 > > 00:19:03 v #18980 > > ── [ 8.25s - return value ] ──────────────────────────────────────────────────── 00:19:03 v #18981 > > │ .rs output: 00:19:03 v #18982 > > │ __assert_eq' / actual: Array(MutCell([("Some", US0_0(0)), 00:19:03 v #18983 > > ("None", US0_1)])) / expected: Array(MutCell([("Some", US0_0(0)), ("None", 00:19:03 v #18984 > > US0_1)])) 00:19:03 v #18985 > > │ 00:19:03 v #18986 > > │ .ts output: 00:19:03 v #18987 > > │ __assert_eq' / actual: Some,US0_0 0,None,US0_1 / expected: 00:19:03 v #18988 > > Some,US0_0 0,None,US0_1 00:19:03 v #18989 > > │ 00:19:03 v #18990 > > │ .py output: 00:19:03 v #18991 > > │ __assert_eq' / actual: [('Some', US0_0 0), ('None', US0_1)] 00:19:03 v #18992 > > expected: [('Some', US0_0 0), ('None', US0_1)] 00:19:03 v #18993 > > │ 00:19:03 v #18994 > > │ 00:19:03 v #18995 > > 00:19:03 v #18996 > > ── [ 8.25s - stdout ] ────────────────────────────────────────────────────────── 00:19:03 v #18997 > > │ .fsx output: 00:19:03 v #18998 > > │ __assert_eq' / actual: [|struct ("Some", US0_0 0); struct 00:19:03 v #18999 > > ("None", US0_1)|] / expected: [|struct ("Some", US0_0 0); struct ("None", 00:19:03 v #19000 > > US0_1)|] 00:19:03 v #19001 > > │ 00:19:03 v #19002 > > 00:19:03 v #19003 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:03 v #19004 > > │ ### get_union_fields_untag 00:19:03 v #19005 > > 00:19:03 v #19006 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:03 v #19007 > > inl get_union_fields_untag forall union_type. () : list (string * union_type) = 00:19:03 v #19008 > > real 00:19:03 v #19009 > > real_core.union_to_record 00:19:03 v #19010 > > `union_type 00:19:03 v #19011 > > forall union_record_type. => 00:19:03 v #19012 > > inl result = 00:19:03 v #19013 > > real_core.record_type_fold_back 00:19:03 v #19014 > > fun _key => 00:19:03 v #19015 > > forall value. (acc, (i : i32)) => 00:19:03 v #19016 > > inl key, item : (string * union_type) = 00:19:03 v #19017 > > real_core.union_untag `union_type i 00:19:03 v #19018 > > (fun key => forall value. => 00:19:03 v #19019 > > inl key' = sm'_real.symbol_to_string 00:19:03 v #19020 > > `(`key) 00:19:03 v #19021 > > inl value = 00:19:03 v #19022 > > typecase value with 00:19:03 v #19023 > > | () => $'' : value 00:19:03 v #19024 > > | _ => 00:19:03 v #19025 > > backend_switch `value `({}) 00:19:03 v #19026 > > { 00:19:03 v #19027 > > Fsharp = 00:19:03 v #19028 > > (fun () => 00:19:03 v #19029 > > 00:19:03 v #19030 > > $'Unchecked.defaultof<_>' : value 00:19:03 v #19031 > > ) : () -> value 00:19:03 v #19032 > > Python = 00:19:03 v #19033 > > (fun () => 00:19:03 v #19034 > > $'None' : value 00:19:03 v #19035 > > ) : () -> value 00:19:03 v #19036 > > } 00:19:03 v #19037 > > inl item = real_core.nominal_create 00:19:03 v #19038 > > `union_type (key, value) 00:19:03 v #19039 > > key', item 00:19:03 v #19040 > > ) 00:19:03 v #19041 > > (fun _ => 00:19:03 v #19042 > > failwith 00:19:03 v #19043 > > `(string * union_type) 00:19:03 v #19044 > > 00:19:03 v #19045 > > "reflection.get_union_fields_untag / invalid tag" 00:19:03 v #19046 > > ) 00:19:03 v #19047 > > (::) `(string * union_type) (key, item) acc, (+) 00:19:03 v #19048 > > `i32 i 1 00:19:03 v #19049 > > `union_record_type 00:19:03 v #19050 > > (Nil `(string * union_type), 0i32) 00:19:03 v #19051 > > inl result = fst `(list (string * union_type)) `i32 result 00:19:03 v #19052 > > listm.rev `(string * union_type) result 00:19:03 v #19053 > > 00:19:03 v #19054 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:03 v #19055 > > //// test 00:19:03 v #19056 > > ///! fsharp 00:19:03 v #19057 > > ///! cuda 00:19:03 v #19058 > > ///! rust 00:19:03 v #19059 > > ///! typescript 00:19:03 v #19060 > > ///! python 00:19:03 v #19061 > > 00:19:03 v #19062 > > get_union_fields_untag () 00:19:03 v #19063 > > |> _assert_eq' [[ "Native", Native; "Wasm", Wasm; "Contract", Contract ]] 00:19:12 v #19064 > > 00:19:12 v #19065 > > ── [ 8.64s - return value ] ──────────────────────────────────────────────────── 00:19:12 v #19066 > > │ .py output (Cuda): 00:19:12 v #19067 > > │ __assert_eq' / actual: UH0_1(v0='Native', v1=US0_0(), 00:19:12 v #19068 > > v2=UH0_1(v0='Wasm', v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), 00:19:12 v #19069 > > v2=UH0_0()))) / expected: UH0_1(v0='Native', v1=US0_0(), v2=UH0_1(v0='Wasm', 00:19:12 v #19070 > > v1=US0_1(), v2=UH0_1(v0='Contract', v1=US0_2(), v2=UH0_0()))) 00:19:12 v #19071 > > │ 00:19:12 v #19072 > > │ .rs output: 00:19:12 v #19073 > > │ __assert_eq' / actual: UH0_1("Native", US0_0, UH0_1("Wasm", 00:19:12 v #19074 > > US0_1, UH0_1("Contract", US0_2, UH0_0))) / expected: UH0_1("Native", US0_0, 00:19:12 v #19075 > > UH0_1("Wasm", US0_1, UH0_1("Contract", US0_2, UH0_0))) 00:19:12 v #19076 > > │ 00:19:12 v #19077 > > │ .ts output: 00:19:12 v #19078 > > │ __assert_eq' / actual: UH0_1 (Native, US0_0, UH0_1 (Wasm, 00:19:12 v #19079 > > US0_1, UH0_1 (Contract, US0_2, UH0_0))) / expected: UH0_1 (Native, US0_0, UH0_1 00:19:12 v #19080 > > (Wasm, US0_1, UH0_1 (Contract, US0_2, UH0_0))) 00:19:12 v #19081 > > │ 00:19:12 v #19082 > > │ .py output: 00:19:12 v #19083 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", 00:19:12 v #19084 > > US0_1, UH0_1 ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, 00:19:12 v #19085 > > UH0_1 ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) 00:19:12 v #19086 > > │ 00:19:12 v #19087 > > │ 00:19:12 v #19088 > > 00:19:12 v #19089 > > ── [ 8.64s - stdout ] ────────────────────────────────────────────────────────── 00:19:12 v #19090 > > │ .fsx output: 00:19:12 v #19091 > > │ __assert_eq' / actual: UH0_1 ("Native", US0_0, UH0_1 ("Wasm", 00:19:12 v #19092 > > US0_1, UH0_1 ("Contract", US0_2, UH0_0))) / expected: UH0_1 ("Native", US0_0, 00:19:12 v #19093 > > UH0_1 ("Wasm", US0_1, UH0_1 ("Contract", US0_2, UH0_0))) 00:19:12 v #19094 > > │ 00:19:12 v #19095 > > 00:19:12 v #19096 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:12 v #19097 > > //// test 00:19:12 v #19098 > > ///! fsharp 00:19:12 v #19099 > > ///! cuda 00:19:12 v #19100 > > ///! rust 00:19:12 v #19101 > > ///! typescript 00:19:12 v #19102 > > ///! python 00:19:12 v #19103 > > 00:19:12 v #19104 > > get_union_fields_untag () 00:19:12 v #19105 > > |> _assert_eq' [[ "Some", Some (); "None", None ]] 00:19:20 v #19106 > > 00:19:20 v #19107 > > ── [ 8.51s - return value ] ──────────────────────────────────────────────────── 00:19:20 v #19108 > > │ .py output (Cuda): 00:19:20 v #19109 > > │ __assert_eq' / actual: UH0_1(v0='Some', v1=US0_0(), 00:19:20 v #19110 > > v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0())) / expected: UH0_1(v0='Some', 00:19:20 v #19111 > > v1=US0_0(), v2=UH0_1(v0='None', v1=US0_1(), v2=UH0_0())) 00:19:20 v #19112 > > │ 00:19:20 v #19113 > > │ .rs output: 00:19:20 v #19114 > > │ __assert_eq' / actual: UH0_1("Some", US0_0, UH0_1("None", 00:19:20 v #19115 > > US0_1, UH0_0)) / expected: UH0_1("Some", US0_0, UH0_1("None", US0_1, UH0_0)) 00:19:20 v #19116 > > │ 00:19:20 v #19117 > > │ .ts output: 00:19:20 v #19118 > > │ __assert_eq' / actual: UH0_1 (Some, US0_0, UH0_1 (None, 00:19:20 v #19119 > > US0_1, UH0_0)) / expected: UH0_1 (Some, US0_0, UH0_1 (None, US0_1, UH0_0)) 00:19:20 v #19120 > > │ 00:19:20 v #19121 > > │ .py output: 00:19:20 v #19122 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", 00:19:20 v #19123 > > US0_1, UH0_0)) / expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) 00:19:20 v #19124 > > │ 00:19:20 v #19125 > > │ 00:19:20 v #19126 > > 00:19:20 v #19127 > > ── [ 8.51s - stdout ] ────────────────────────────────────────────────────────── 00:19:20 v #19128 > > │ .fsx output: 00:19:20 v #19129 > > │ __assert_eq' / actual: UH0_1 ("Some", US0_0, UH0_1 ("None", 00:19:20 v #19130 > > US0_1, UH0_0)) / expected: UH0_1 ("Some", US0_0, UH0_1 ("None", US0_1, UH0_0)) 00:19:20 v #19131 > > │ 00:19:20 v #19132 > > 00:19:20 v #19133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:20 v #19134 > > │ ### union_try_pick 00:19:20 v #19135 > > 00:19:20 v #19136 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:20 v #19137 > > inl union_try_pick forall t. (key : string) : option t = 00:19:20 v #19138 > > real get_union_fields_untag `t () 00:19:20 v #19139 > > |> listm'.try_pick fun key', x => 00:19:20 v #19140 > > if key' = key 00:19:20 v #19141 > > then Some x 00:19:20 v #19142 > > else None 00:19:20 v #19143 > > 00:19:20 v #19144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:20 v #19145 > > │ ### union_to_string 00:19:20 v #19146 > > 00:19:20 v #19147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:20 v #19148 > > inl union_to_string forall t. (x : t) : string = 00:19:20 v #19149 > > real get_union_fields_untag `t () 00:19:20 v #19150 > > |> listm'.try_pick fun key, x' => 00:19:20 v #19151 > > if x' = x 00:19:20 v #19152 > > then Some key 00:19:20 v #19153 > > else 00:19:20 v #19154 > > inl has_case = 00:19:20 v #19155 > > real 00:19:20 v #19156 > > real_core.union_to_record 00:19:20 v #19157 > > `t 00:19:20 v #19158 > > forall union_record_type. => 00:19:20 v #19159 > > real_core.record_type_fold_back 00:19:20 v #19160 > > fun _key => 00:19:20 v #19161 > > forall value. acc => 00:19:20 v #19162 > > if acc 00:19:20 v #19163 > > then acc 00:19:20 v #19164 > > else 00:19:20 v #19165 > > typecase value with 00:19:20 v #19166 > > | () => false 00:19:20 v #19167 > > | _ => true 00:19:20 v #19168 > > `union_record_type 00:19:20 v #19169 > > false 00:19:20 v #19170 > > if has_case |> not 00:19:20 v #19171 > > then None 00:19:20 v #19172 > > else 00:19:20 v #19173 > > inl separator = 00:19:20 v #19174 > > backend_switch { 00:19:20 v #19175 > > Fsharp = fun () => 00:19:20 v #19176 > > run_target function 00:19:20 v #19177 > > | Rust _ => fun () => join "(" 00:19:20 v #19178 > > | _ => fun () => join " " 00:19:20 v #19179 > > Python = fun () => "(" 00:19:20 v #19180 > > } 00:19:20 v #19181 > > inl x' = x' |> sm'.format |> sm'.split separator |> 00:19:20 v #19182 > > am'.index_base 0 00:19:20 v #19183 > > if x |> sm'.format |> sm'.starts_with x' 00:19:20 v #19184 > > then Some key 00:19:20 v #19185 > > else None 00:19:20 v #19186 > > |> optionm.value 00:19:20 v #19187 > > 00:19:20 v #19188 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:20 v #19189 > > //// test 00:19:20 v #19190 > > ///! fsharp 00:19:20 v #19191 > > ///! cuda 00:19:20 v #19192 > > ///! rust 00:19:20 v #19193 > > ///! typescript 00:19:20 v #19194 > > ///! python 00:19:20 v #19195 > > 00:19:20 v #19196 > > Some true 00:19:20 v #19197 > > |> union_to_string 00:19:20 v #19198 > > |> _assert_eq' "Some" 00:19:30 v #19199 > > 00:19:30 v #19200 > > ── [ 9.28s - return value ] ──────────────────────────────────────────────────── 00:19:30 v #19201 > > │ .py output (Cuda): 00:19:30 v #19202 > > │ __assert_eq' / actual: Some / expected: Some 00:19:30 v #19203 > > │ 00:19:30 v #19204 > > │ .rs output: 00:19:30 v #19205 > > │ __assert_eq' / actual: "Some" / expected: "Some" 00:19:30 v #19206 > > │ 00:19:30 v #19207 > > │ .ts output: 00:19:30 v #19208 > > │ __assert_eq' / actual: Some / expected: Some 00:19:30 v #19209 > > │ 00:19:30 v #19210 > > │ .py output: 00:19:30 v #19211 > > │ __assert_eq' / actual: Some / expected: Some 00:19:30 v #19212 > > │ 00:19:30 v #19213 > > │ 00:19:30 v #19214 > > 00:19:30 v #19215 > > ── [ 9.28s - stdout ] ────────────────────────────────────────────────────────── 00:19:30 v #19216 > > │ .fsx output: 00:19:30 v #19217 > > │ __assert_eq' / actual: "Some" / expected: "Some" 00:19:30 v #19218 > > │ 00:19:30 v #19219 > > 00:19:30 v #19220 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:30 v #19221 > > │ ### nameof 00:19:30 v #19222 > > 00:19:30 v #19223 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19224 > > inl nameof forall t. (x : t) : string = 00:19:30 v #19225 > > real 00:19:30 v #19226 > > real_core.record_type_fold_back 00:19:30 v #19227 > > fun key => 00:19:30 v #19228 > > forall value. _ => 00:19:30 v #19229 > > sm'_real.symbol_to_string `(`key) 00:19:30 v #19230 > > `t 00:19:30 v #19231 > > "" 00:19:30 v #19232 > > 00:19:30 v #19233 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19234 > > //// test 00:19:30 v #19235 > > 00:19:30 v #19236 > > { test1 = ""; test2 = "" } 00:19:30 v #19237 > > |> nameof 00:19:30 v #19238 > > |> _assert_eq' "test1" 00:19:30 v #19239 > > 00:19:30 v #19240 > > ── [ 182.89ms - stdout ] ─────────────────────────────────────────────────────── 00:19:30 v #19241 > > │ __assert_eq' / actual: "test1" / expected: "test1" 00:19:30 v #19242 > > │ 00:19:30 v #19243 > > 00:19:30 v #19244 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:30 v #19245 > > │ ### get_record_fields 00:19:30 v #19246 > > 00:19:30 v #19247 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19248 > > inl get_record_fields forall t u. (x : t) : list (string * u) = 00:19:30 v #19249 > > real 00:19:30 v #19250 > > real_core.record_type_fold_back 00:19:30 v #19251 > > fun key => 00:19:30 v #19252 > > forall u'. acc => 00:19:30 v #19253 > > inl k = sm'_real.symbol_to_string `(`key) 00:19:30 v #19254 > > inl v = x key 00:19:30 v #19255 > > (::) `(string * u') (k, v) acc 00:19:30 v #19256 > > `t 00:19:30 v #19257 > > (Nil `(string * u)) 00:19:30 v #19258 > > 00:19:30 v #19259 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19260 > > //// test 00:19:30 v #19261 > > 00:19:30 v #19262 > > { a = "1"; b = "2" } 00:19:30 v #19263 > > |> get_record_fields 00:19:30 v #19264 > > |> _assert_eq' [[ "a", "1"; "b", "2" ]] 00:19:30 v #19265 > > 00:19:30 v #19266 > > ── [ 171.17ms - stdout ] ─────────────────────────────────────────────────────── 00:19:30 v #19267 > > │ __assert_eq' / actual: UH0_1 ("a", "1", UH0_1 ("b", "2", 00:19:30 v #19268 > > UH0_0)) / expected: UH0_1 ("a", "1", UH0_1 ("b", "2", UH0_0)) 00:19:30 v #19269 > > │ 00:19:30 v #19270 > > 00:19:30 v #19271 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:30 v #19272 > > │ ### get_functions_types 00:19:30 v #19273 > > 00:19:30 v #19274 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19275 > > inl get_functions_types forall t {record}. (fns : t) = 00:19:30 v #19276 > > real 00:19:30 v #19277 > > inl get_function_type forall t. = 00:19:30 v #19278 > > inl args forall t {record}. : list (string * string) = 00:19:30 v #19279 > > real_core.record_type_fold_back 00:19:30 v #19280 > > fun key => 00:19:30 v #19281 > > forall v. acc => 00:19:30 v #19282 > > inl k = sm'_real.symbol_to_string `(`key) 00:19:30 v #19283 > > inl v = $'"`v"' : string 00:19:30 v #19284 > > (::) `(string * string) (k, v) acc 00:19:30 v #19285 > > `t 00:19:30 v #19286 > > (Nil `(string * string)) 00:19:30 v #19287 > > 00:19:30 v #19288 > > typecase t with 00:19:30 v #19289 > > | ~t -> ~u => args `t, ($'"`u"' : string) 00:19:30 v #19290 > > 00:19:30 v #19291 > > real_core.record_type_fold_back 00:19:30 v #19292 > > fun key => 00:19:30 v #19293 > > forall v. acc => 00:19:30 v #19294 > > inl k = sm'_real.symbol_to_string `(`key) 00:19:30 v #19295 > > inl args, result = get_function_type `v 00:19:30 v #19296 > > (::) `(string * (list (string * string) * string)) (k, 00:19:30 v #19297 > > (args, result)) acc 00:19:30 v #19298 > > `(`fns) 00:19:30 v #19299 > > (Nil `(string * (list (string * string) * string))) 00:19:30 v #19300 > > |> fun x => x : list (string * (list (string * string) * string)) 00:19:30 v #19301 > > 00:19:30 v #19302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:30 v #19303 > > //// test 00:19:30 v #19304 > > 00:19:30 v #19305 > > inl one ({ a } : { a : i32 }) : i32 = a + 1 00:19:30 v #19306 > > inl two ({ a b } : { a : i32; b : i32 }) : i32 = a + b + 2 00:19:30 v #19307 > > inl fns = { one two } 00:19:30 v #19308 > > 00:19:30 v #19309 > > fns 00:19:30 v #19310 > > |> get_functions_types 00:19:30 v #19311 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:19:30 v #19312 > > listm'.to_array', result) 00:19:30 v #19313 > > |> listm'.box 00:19:30 v #19314 > > |> listm'.to_array' 00:19:30 v #19315 > > |> sm'.format 00:19:30 v #19316 > > |> _assert_eq' ( 00:19:30 v #19317 > > [[ 00:19:30 v #19318 > > "one", [["a", "int32"]], "int32" 00:19:30 v #19319 > > "two", [["a", "int32"; "b", "int32"]], "int32" 00:19:30 v #19320 > > ]] 00:19:30 v #19321 > > |> listm.map fun (name, args, result) => name, (args |> listm'.box |> 00:19:30 v #19322 > > listm'.to_array', result) 00:19:30 v #19323 > > |> listm'.box 00:19:30 v #19324 > > |> listm'.to_array' 00:19:30 v #19325 > > |> sm'.format 00:19:30 v #19326 > > ) 00:19:31 v #19327 > > 00:19:31 v #19328 > > ── [ 177.76ms - stdout ] ─────────────────────────────────────────────────────── 00:19:31 v #19329 > > │ __assert_eq' / actual: "[|struct ("one", [|struct ("a", 00:19:31 v #19330 > > "int32")|], "int32"); 00:19:31 v #19331 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", 00:19:31 v #19332 > > "int32")|], "int32")|]" / expected: "[|struct ("one", [|struct ("a", "int32")|], 00:19:31 v #19333 > > "int32"); 00:19:31 v #19334 > > │ struct ("two", [|struct ("a", "int32"); struct ("b", 00:19:31 v #19335 > > "int32")|], "int32")|]" 00:19:31 v #19336 > > │ 00:19:31 v #19337 > 00:00:50 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 18911 } 00:19:31 v #19338 > 00:00:50 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:31 v #19339 > 00:00:50 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.ipynb to html 00:19:31 v #19340 > 00:00:50 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:31 v #19341 > 00:00:50 v #7 ! validate(nb) 00:19:32 v #19342 > 00:00:51 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:32 v #19343 > 00:00:51 v #9 ! return _pygments_highlight( 00:19:32 v #19344 > 00:00:51 v #10 ! [NbConvertApp] Writing 327007 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html 00:19:32 v #19345 > 00:00:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:19:32 v #19346 > 00:00:51 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:19:32 v #19347 > 00:00:51 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/reflection.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:32 v #19348 > 00:00:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:32 v #19349 > 00:00:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:32 v #19350 > 00:00:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 19874 } 00:19:32 d #19351 runtime.execute_with_options_async / { exit_code = 0; output_length = 23479 } 00:19:32 d #25 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path reflection.dib --retries 3 00:19:32 d #19352 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path iter.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:32 v #19353 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "iter.dib", "--retries", "3"])) } 00:19:32 v #19354 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:34 v #19355 > > 00:19:34 v #19356 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:34 v #19357 > > │ # iter 00:19:36 v #19358 > > 00:19:36 v #19359 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:36 v #19360 > > open rust 00:19:36 v #19361 > > open rust_operators 00:19:37 v #19362 > > 00:19:37 v #19363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:37 v #19364 > > //// test 00:19:37 v #19365 > > 00:19:37 v #19366 > > open testing 00:19:37 v #19367 > > 00:19:37 v #19368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:37 v #19369 > > │ ## rust 00:19:37 v #19370 > > 00:19:37 v #19371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:37 v #19372 > > │ ### enumerate 00:19:37 v #19373 > > 00:19:37 v #19374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:37 v #19375 > > inl enumerate forall t. (iter : into_iterator t) : into_iterator (pair 00:19:37 v #19376 > > unativeint t) = 00:19:37 v #19377 > > !\($'"!iter.enumerate().map(std::sync::Arc::new)"') 00:19:37 v #19378 > > 00:19:37 v #19379 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:37 v #19380 > > │ ### into_iter 00:19:37 v #19381 > > 00:19:37 v #19382 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:37 v #19383 > > inl into_iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:19:37 v #19384 > > !\($'"!x.into_iter()"') 00:19:38 v #19385 > > 00:19:38 v #19386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19387 > > │ ### iter 00:19:38 v #19388 > > 00:19:38 v #19389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19390 > > inl iter forall (t : * -> *) u. (x : t u) : into_iterator u = 00:19:38 v #19391 > > !\\(x, $'"$0.iter()"') 00:19:38 v #19392 > > 00:19:38 v #19393 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19394 > > │ ### iter_ref 00:19:38 v #19395 > > 00:19:38 v #19396 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19397 > > inl iter_ref forall (t : * -> *) u. (x : t u) : into_iterator (rust.ref u) = 00:19:38 v #19398 > > !\\(x, $'"$0.iter()"') 00:19:38 v #19399 > > 00:19:38 v #19400 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19401 > > │ ### iter_ref' 00:19:38 v #19402 > > 00:19:38 v #19403 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19404 > > inl iter_ref' forall (t : * -> *) u. (x : rust.ref (t u)) : into_iterator 00:19:38 v #19405 > > (rust.ref u) = 00:19:38 v #19406 > > !\\(x, $'"$0.iter()"') 00:19:38 v #19407 > > 00:19:38 v #19408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19409 > > │ ### iter_ref'' 00:19:38 v #19410 > > 00:19:38 v #19411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19412 > > inl iter_ref'' forall (t : * -> *) u (v : * -> *). (x : v (t u)) : into_iterator 00:19:38 v #19413 > > (rust.ref u) = 00:19:38 v #19414 > > !\\(x, $'"$0.iter()"') 00:19:38 v #19415 > > 00:19:38 v #19416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19417 > > │ ### iter_ref''' 00:19:38 v #19418 > > 00:19:38 v #19419 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19420 > > inl iter_ref''' forall (t : * -> *) u (v : * -> *) (w : * -> *). (x : w (v (t 00:19:38 v #19421 > > u))) : into_iterator (rust.ref u) = 00:19:38 v #19422 > > !\\(x, $'"$0.iter()"') 00:19:38 v #19423 > > 00:19:38 v #19424 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:38 v #19425 > > │ ### map 00:19:38 v #19426 > > 00:19:38 v #19427 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:38 v #19428 > > inl map forall t u. (fn : t -> u) (iter : into_iterator t) : into_iterator u = 00:19:38 v #19429 > > !\\(fn, $'"!iter.map(|x| $0(x))"') 00:19:39 v #19430 > > 00:19:39 v #19431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #19432 > > │ ### cloned 00:19:39 v #19433 > > 00:19:39 v #19434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19435 > > inl cloned forall t. (iter : into_iterator (rust.ref t)) : into_iterator t = 00:19:39 v #19436 > > !\($'"!iter.cloned()"') 00:19:39 v #19437 > > 00:19:39 v #19438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #19439 > > │ ### for_each 00:19:39 v #19440 > > 00:19:39 v #19441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19442 > > inl for_each forall t. (fn : t -> ()) (iter : into_iterator t) : () = 00:19:39 v #19443 > > (!\\(fn, $'"true; !iter.for_each(|x| $0(x))"') : bool) |> ignore 00:19:39 v #19444 > > 00:19:39 v #19445 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #19446 > > │ ### try_for_each 00:19:39 v #19447 > > 00:19:39 v #19448 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19449 > > inl try_for_each forall t. (fn : t -> rust.try ()) x : resultm.result' () string 00:19:39 v #19450 > > = 00:19:39 v #19451 > > (!\($'"true; let mut !x = !x; let _iter_try_for_each = !x.try_for_each(|x| { 00:19:39 v #19452 > > //"') : bool) |> ignore 00:19:39 v #19453 > > (!\\(fn !\($'"x"'), $'"true; $0 }); //"') : bool) |> ignore 00:19:39 v #19454 > > !\($'"_iter_try_for_each.map_err(|x| x.into())"') 00:19:39 v #19455 > > 00:19:39 v #19456 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #19457 > > │ ### all 00:19:39 v #19458 > > 00:19:39 v #19459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19460 > > inl all forall t. (fn : t -> bool) (x : rust.mut' (into_iterator t)) : bool = 00:19:39 v #19461 > > x |> rust.to_mut 00:19:39 v #19462 > > !\\(fn, $'$"!x.all(|x| $0(x))"') 00:19:39 v #19463 > > 00:19:39 v #19464 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:39 v #19465 > > │ ### enumerate 00:19:39 v #19466 > > 00:19:39 v #19467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19468 > > inl enumerate forall dim {int; number} t. (ar : a dim t) : a dim (unativeint * 00:19:39 v #19469 > > t) = 00:19:39 v #19470 > > inl (a ar) = ar 00:19:39 v #19471 > > ar 00:19:39 v #19472 > > |> am'.to_vec 00:19:39 v #19473 > > |> into_iter 00:19:39 v #19474 > > |> enumerate 00:19:39 v #19475 > > |> iter_collect 00:19:39 v #19476 > > |> am'.vec_map' from_pair 00:19:39 v #19477 > > |> am'.from_vec 00:19:39 v #19478 > > 00:19:39 v #19479 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:39 v #19480 > > //// test 00:19:39 v #19481 > > ///! rust 00:19:39 v #19482 > > 00:19:39 v #19483 > > am'.init_series 0i32 2 1 00:19:39 v #19484 > > |> fun x => a x : _ int _ 00:19:39 v #19485 > > |> enumerate 00:19:39 v #19486 > > |> fun (a x : _ int _) => x 00:19:39 v #19487 > > |> _assert_eq' ;[[ convert 0i32, 0; convert 1i32, 1; convert 2i32, 2 ]] 00:19:45 v #19488 > > 00:19:45 v #19489 > > ── [ 6.06s - return value ] ──────────────────────────────────────────────────── 00:19:45 v #19490 > > │ __assert_eq' / actual: Array(MutCell([(0, 0), (1, 1), (2, 00:19:45 v #19491 > > 2)])) / expected: Array(MutCell([(0, 0), (1, 1), (2, 2)])) 00:19:45 v #19492 > > │ 00:19:45 v #19493 > 00:00:12 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 5913 } 00:19:45 v #19494 > 00:00:12 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:46 v #19495 > 00:00:13 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.ipynb to html 00:19:46 v #19496 > 00:00:13 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:46 v #19497 > 00:00:13 v #7 ! validate(nb) 00:19:47 v #19498 > 00:00:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:47 v #19499 > 00:00:14 v #9 ! return _pygments_highlight( 00:19:47 v #19500 > 00:00:14 v #10 ! [NbConvertApp] Writing 299042 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html 00:19:47 v #19501 > 00:00:14 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:19:47 v #19502 > 00:00:14 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:19:47 v #19503 > 00:00:14 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/iter.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:47 v #19504 > 00:00:14 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:47 v #19505 > 00:00:14 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:47 v #19506 > 00:00:14 d #16 spiral.run / dib / { exit_code = 0; result_length = 6864 } 00:19:47 d #19507 runtime.execute_with_options_async / { exit_code = 0; output_length = 9775 } 00:19:47 d #26 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path iter.dib --retries 3 00:19:47 d #19508 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path wasm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:47 v #19509 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "wasm.dib", "--retries", "3"])) } 00:19:47 v #19510 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:48 v #19511 > > 00:19:48 v #19512 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:48 v #19513 > > │ # wasm 00:19:51 v #19514 > > 00:19:51 v #19515 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:51 v #19516 > > open rust 00:19:51 v #19517 > > open rust_operators 00:19:52 v #19518 > > 00:19:52 v #19519 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #19520 > > │ ### rexie 00:19:52 v #19521 > > 00:19:52 v #19522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #19523 > > nominal rexie = 00:19:52 v #19524 > > `( 00:19:52 v #19525 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:52 v #19526 > > Fable.Core.Emit(\"rexie::Rexie\")>]]\n#endif\ntype rexie_Rexie = class end" 00:19:52 v #19527 > > $'' : $'rexie_Rexie' 00:19:52 v #19528 > > ) 00:19:52 v #19529 > > 00:19:52 v #19530 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #19531 > > │ ### rexie_store 00:19:52 v #19532 > > 00:19:52 v #19533 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #19534 > > nominal rexie_store = 00:19:52 v #19535 > > `( 00:19:52 v #19536 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:52 v #19537 > > Fable.Core.Emit(\"rexie::Store\")>]]\n#endif\ntype rexie_Store = class end" 00:19:52 v #19538 > > $'' : $'rexie_Store' 00:19:52 v #19539 > > ) 00:19:52 v #19540 > > 00:19:52 v #19541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #19542 > > │ ### rexie_transaction 00:19:52 v #19543 > > 00:19:52 v #19544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #19545 > > nominal rexie_transaction = 00:19:52 v #19546 > > `( 00:19:52 v #19547 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:52 v #19548 > > Fable.Core.Emit(\"rexie::Transaction\")>]]\n#endif\ntype rexie_Transaction = 00:19:52 v #19549 > > class end" 00:19:52 v #19550 > > $'' : $'rexie_Transaction' 00:19:52 v #19551 > > ) 00:19:52 v #19552 > > 00:19:52 v #19553 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #19554 > > │ ### rexie_error 00:19:52 v #19555 > > 00:19:52 v #19556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #19557 > > nominal rexie_error = 00:19:52 v #19558 > > `( 00:19:52 v #19559 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:52 v #19560 > > Fable.Core.Emit(\"rexie::Error\")>]]\n#endif\ntype rexie_Error = class end" 00:19:52 v #19561 > > $'' : $'rexie_Error' 00:19:52 v #19562 > > ) 00:19:52 v #19563 > > 00:19:52 v #19564 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:52 v #19565 > > │ ### js_value 00:19:52 v #19566 > > 00:19:52 v #19567 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:52 v #19568 > > nominal js_value = 00:19:52 v #19569 > > `( 00:19:52 v #19570 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:52 v #19571 > > Fable.Core.Emit(\"wasm_bindgen::JsValue\")>]]\n#endif\ntype wasm_bindgen_JsValue 00:19:52 v #19572 > > = class end" 00:19:52 v #19573 > > $'' : $'wasm_bindgen_JsValue' 00:19:52 v #19574 > > ) 00:19:53 v #19575 > > 00:19:53 v #19576 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19577 > > │ ### closure 00:19:53 v #19578 > > 00:19:53 v #19579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19580 > > nominal closure t = 00:19:53 v #19581 > > `( 00:19:53 v #19582 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19583 > > Fable.Core.Emit(\"wasm_bindgen::closure::Closure<$0>\")>]]\n#endif\ntype 00:19:53 v #19584 > > wasm_bindgen_closure_Closure<'T> = class end" 00:19:53 v #19585 > > $'' : $'wasm_bindgen_closure_Closure<`t>' 00:19:53 v #19586 > > ) 00:19:53 v #19587 > > 00:19:53 v #19588 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19589 > > │ ### js_function 00:19:53 v #19590 > > 00:19:53 v #19591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19592 > > nominal js_function = 00:19:53 v #19593 > > `( 00:19:53 v #19594 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19595 > > Fable.Core.Emit(\"js_sys::Function\")>]]\n#endif\ntype js_sys_Function = class 00:19:53 v #19596 > > end" 00:19:53 v #19597 > > $'' : $'js_sys_Function' 00:19:53 v #19598 > > ) 00:19:53 v #19599 > > 00:19:53 v #19600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19601 > > │ ### window 00:19:53 v #19602 > > 00:19:53 v #19603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19604 > > nominal window = 00:19:53 v #19605 > > `( 00:19:53 v #19606 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19607 > > Fable.Core.Emit(\"web_sys::Window\")>]]\n#endif\ntype web_sys_Window = class 00:19:53 v #19608 > > end" 00:19:53 v #19609 > > $'' : $'web_sys_Window' 00:19:53 v #19610 > > ) 00:19:53 v #19611 > > 00:19:53 v #19612 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19613 > > │ ### document 00:19:53 v #19614 > > 00:19:53 v #19615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19616 > > nominal document = 00:19:53 v #19617 > > `( 00:19:53 v #19618 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19619 > > Fable.Core.Emit(\"web_sys::Document\")>]]\n#endif\ntype web_sys_Document = class 00:19:53 v #19620 > > end" 00:19:53 v #19621 > > $'' : $'web_sys_Document' 00:19:53 v #19622 > > ) 00:19:53 v #19623 > > 00:19:53 v #19624 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19625 > > │ ### html_element 00:19:53 v #19626 > > 00:19:53 v #19627 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19628 > > nominal html_element = 00:19:53 v #19629 > > `( 00:19:53 v #19630 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19631 > > Fable.Core.Emit(\"web_sys::HtmlElement\")>]]\n#endif\ntype web_sys_HtmlElement = 00:19:53 v #19632 > > class end" 00:19:53 v #19633 > > $'' : $'web_sys_HtmlElement' 00:19:53 v #19634 > > ) 00:19:53 v #19635 > > 00:19:53 v #19636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19637 > > │ ### storage 00:19:53 v #19638 > > 00:19:53 v #19639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19640 > > nominal storage = 00:19:53 v #19641 > > `( 00:19:53 v #19642 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:19:53 v #19643 > > Fable.Core.Emit(\"web_sys::Storage\")>]]\n#endif\ntype web_sys_Storage = class 00:19:53 v #19644 > > end" 00:19:53 v #19645 > > $'' : $'web_sys_Storage' 00:19:53 v #19646 > > ) 00:19:53 v #19647 > > 00:19:53 v #19648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:53 v #19649 > > │ ### closure_wrap 00:19:53 v #19650 > > 00:19:53 v #19651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:53 v #19652 > > inl closure_wrap forall t. (x : rust.box t) : closure t = 00:19:53 v #19653 > > inl x = join x 00:19:53 v #19654 > > !\($'"wasm_bindgen::closure::Closure::wrap(!x)"') 00:19:54 v #19655 > > 00:19:54 v #19656 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #19657 > > │ ### closure_forget 00:19:54 v #19658 > > 00:19:54 v #19659 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #19660 > > inl closure_forget forall t. (closure : closure t) = 00:19:54 v #19661 > > !\($'"!closure.forget()"') : () 00:19:54 v #19662 > > 00:19:54 v #19663 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #19664 > > │ ### closure_as_ref 00:19:54 v #19665 > > 00:19:54 v #19666 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #19667 > > inl closure_as_ref forall t. (closure : closure t) : rust.ref js_value = 00:19:54 v #19668 > > !\($'"wasm_bindgen::closure::Closure::as_ref(&!closure)"') 00:19:54 v #19669 > > 00:19:54 v #19670 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #19671 > > │ ### unchecked_ref 00:19:54 v #19672 > > 00:19:54 v #19673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #19674 > > inl unchecked_ref (ref : rust.ref js_value) : rust.ref js_function = 00:19:54 v #19675 > > !\($'"wasm_bindgen::JsCast::unchecked_ref(!ref)"') 00:19:54 v #19676 > > 00:19:54 v #19677 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #19678 > > │ ### set_inner_html 00:19:54 v #19679 > > 00:19:54 v #19680 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #19681 > > inl set_inner_html (html : string) (el : html_element) = 00:19:54 v #19682 > > inl html = join html 00:19:54 v #19683 > > inl html = html |> sm'.as_str 00:19:54 v #19684 > > inl el = join el 00:19:54 v #19685 > > !\\(html, $'"!el.set_inner_html($0)"') 00:19:54 v #19686 > > 00:19:54 v #19687 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:54 v #19688 > > │ ### from_js_value 00:19:54 v #19689 > > 00:19:54 v #19690 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:19:54 v #19691 > > inl from_js_value (value : js_value) : resultm.result' (optionm'.option' 00:19:54 v #19692 > > sm'.json_value) sm'.std_string = 00:19:54 v #19693 > > inl value = join value 00:19:54 v #19694 > > !\($'"serde_wasm_bindgen::from_value(!value)"') 00:19:54 v #19695 > > |> resultm.map_error' fun (x : sm'.serde_wasm_bindgen_error) => x |> 00:19:54 v #19696 > > sm'.format' 00:19:54 v #19697 > 00:00:07 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 7526 } 00:19:54 v #19698 > 00:00:07 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:55 v #19699 > 00:00:08 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.ipynb to html 00:19:55 v #19700 > 00:00:08 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:19:55 v #19701 > 00:00:08 v #7 ! validate(nb) 00:19:56 v #19702 > 00:00:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:19:56 v #19703 > 00:00:08 v #9 ! return _pygments_highlight( 00:19:56 v #19704 > 00:00:08 v #10 ! [NbConvertApp] Writing 302414 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html 00:19:56 v #19705 > 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:19:56 v #19706 > 00:00:08 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:19:56 v #19707 > 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:56 v #19708 > 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:19:56 v #19709 > 00:00:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:19:56 v #19710 > 00:00:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 8477 } 00:19:56 d #19711 runtime.execute_with_options_async / { exit_code = 0; output_length = 11484 } 00:19:56 d #27 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path wasm.dib --retries 3 00:19:56 d #19712 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path leptos/leptos.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:56 v #19713 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "leptos/leptos.dib", "--retries", "3"])) } 00:19:56 v #19714 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:19:57 v #19715 > > 00:19:57 v #19716 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:19:57 v #19717 > > │ # leptos 00:20:00 v #19718 > > 00:20:00 v #19719 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:00 v #19720 > > open rust.rust_operators 00:20:00 v #19721 > > open rust 00:20:00 v #19722 > > open sm'_operators 00:20:01 v #19723 > > 00:20:01 v #19724 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19725 > > │ ### a' 00:20:01 v #19726 > > 00:20:01 v #19727 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19728 > > nominal a' = 00:20:01 v #19729 > > `( 00:20:01 v #19730 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19731 > > Fable.Core.Emit(\"leptos::html::A\")>]]\n#endif\ntype leptos_html_A = class end" 00:20:01 v #19732 > > $'' : $'leptos_html_A' 00:20:01 v #19733 > > ) 00:20:01 v #19734 > > 00:20:01 v #19735 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19736 > > │ ### event 00:20:01 v #19737 > > 00:20:01 v #19738 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19739 > > nominal event = 00:20:01 v #19740 > > `( 00:20:01 v #19741 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19742 > > Fable.Core.Emit(\"leptos::ev::Event\")>]]\n#endif\ntype leptos_ev_Event = class 00:20:01 v #19743 > > end" 00:20:01 v #19744 > > $'' : $'leptos_ev_Event' 00:20:01 v #19745 > > ) 00:20:01 v #19746 > > 00:20:01 v #19747 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19748 > > │ ### mouse_event 00:20:01 v #19749 > > 00:20:01 v #19750 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19751 > > nominal mouse_event = 00:20:01 v #19752 > > `( 00:20:01 v #19753 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19754 > > Fable.Core.Emit(\"leptos::ev::MouseEvent\")>]]\n#endif\ntype 00:20:01 v #19755 > > leptos_ev_MouseEvent = class end" 00:20:01 v #19756 > > $'' : $'leptos_ev_MouseEvent' 00:20:01 v #19757 > > ) 00:20:01 v #19758 > > 00:20:01 v #19759 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19760 > > │ ### button 00:20:01 v #19761 > > 00:20:01 v #19762 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19763 > > nominal button = 00:20:01 v #19764 > > `( 00:20:01 v #19765 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19766 > > Fable.Core.Emit(\"leptos::html::Button\")>]]\n#endif\ntype leptos_html_Button = 00:20:01 v #19767 > > class end" 00:20:01 v #19768 > > $'' : $'leptos_html_Button' 00:20:01 v #19769 > > ) 00:20:01 v #19770 > > 00:20:01 v #19771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19772 > > │ ### details 00:20:01 v #19773 > > 00:20:01 v #19774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19775 > > nominal details = 00:20:01 v #19776 > > `( 00:20:01 v #19777 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19778 > > Fable.Core.Emit(\"leptos::html::Details\")>]]\n#endif\ntype leptos_html_Details 00:20:01 v #19779 > > = class end" 00:20:01 v #19780 > > $'' : $'leptos_html_Details' 00:20:01 v #19781 > > ) 00:20:01 v #19782 > > 00:20:01 v #19783 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:01 v #19784 > > │ ### dd 00:20:01 v #19785 > > 00:20:01 v #19786 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:01 v #19787 > > nominal dd = 00:20:01 v #19788 > > `( 00:20:01 v #19789 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:01 v #19790 > > Fable.Core.Emit(\"leptos::html::Dd\")>]]\n#endif\ntype leptos_html_Dd = class 00:20:01 v #19791 > > end" 00:20:01 v #19792 > > $'' : $'leptos_html_Dd' 00:20:01 v #19793 > > ) 00:20:02 v #19794 > > 00:20:02 v #19795 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19796 > > │ ### div 00:20:02 v #19797 > > 00:20:02 v #19798 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19799 > > nominal div = 00:20:02 v #19800 > > `( 00:20:02 v #19801 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19802 > > Fable.Core.Emit(\"leptos::html::Div\")>]]\n#endif\ntype leptos_html_Div = class 00:20:02 v #19803 > > end" 00:20:02 v #19804 > > $'' : $'leptos_html_Div' 00:20:02 v #19805 > > ) 00:20:02 v #19806 > > 00:20:02 v #19807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19808 > > │ ### dl 00:20:02 v #19809 > > 00:20:02 v #19810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19811 > > nominal dl = 00:20:02 v #19812 > > `( 00:20:02 v #19813 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19814 > > Fable.Core.Emit(\"leptos::html::Dl\")>]]\n#endif\ntype leptos_html_Dl = class 00:20:02 v #19815 > > end" 00:20:02 v #19816 > > $'' : $'leptos_html_Dl' 00:20:02 v #19817 > > ) 00:20:02 v #19818 > > 00:20:02 v #19819 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19820 > > │ ### dt 00:20:02 v #19821 > > 00:20:02 v #19822 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19823 > > nominal dt = 00:20:02 v #19824 > > `( 00:20:02 v #19825 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19826 > > Fable.Core.Emit(\"leptos::html::Dt\")>]]\n#endif\ntype leptos_html_Dt = class 00:20:02 v #19827 > > end" 00:20:02 v #19828 > > $'' : $'leptos_html_Dt' 00:20:02 v #19829 > > ) 00:20:02 v #19830 > > 00:20:02 v #19831 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19832 > > │ ### footer 00:20:02 v #19833 > > 00:20:02 v #19834 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19835 > > nominal footer = 00:20:02 v #19836 > > `( 00:20:02 v #19837 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19838 > > Fable.Core.Emit(\"leptos::html::Footer\")>]]\n#endif\ntype leptos_html_Footer = 00:20:02 v #19839 > > class end" 00:20:02 v #19840 > > $'' : $'leptos_html_Footer' 00:20:02 v #19841 > > ) 00:20:02 v #19842 > > 00:20:02 v #19843 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19844 > > │ ### header 00:20:02 v #19845 > > 00:20:02 v #19846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19847 > > nominal header = 00:20:02 v #19848 > > `( 00:20:02 v #19849 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19850 > > Fable.Core.Emit(\"leptos::html::Header\")>]]\n#endif\ntype leptos_html_Header = 00:20:02 v #19851 > > class end" 00:20:02 v #19852 > > $'' : $'leptos_html_Header' 00:20:02 v #19853 > > ) 00:20:02 v #19854 > > 00:20:02 v #19855 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19856 > > │ ### input 00:20:02 v #19857 > > 00:20:02 v #19858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19859 > > nominal input = 00:20:02 v #19860 > > `( 00:20:02 v #19861 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19862 > > Fable.Core.Emit(\"leptos::html::Input\")>]]\n#endif\ntype leptos_html_Input = 00:20:02 v #19863 > > class end" 00:20:02 v #19864 > > $'' : $'leptos_html_Input' 00:20:02 v #19865 > > ) 00:20:02 v #19866 > > 00:20:02 v #19867 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:02 v #19868 > > │ ### label 00:20:02 v #19869 > > 00:20:02 v #19870 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:02 v #19871 > > nominal label = 00:20:02 v #19872 > > `( 00:20:02 v #19873 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:02 v #19874 > > Fable.Core.Emit(\"leptos::html::Label\")>]]\n#endif\ntype leptos_html_Label = 00:20:02 v #19875 > > class end" 00:20:02 v #19876 > > $'' : $'leptos_html_Label' 00:20:02 v #19877 > > ) 00:20:03 v #19878 > > 00:20:03 v #19879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19880 > > │ ### main 00:20:03 v #19881 > > 00:20:03 v #19882 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19883 > > nominal main = 00:20:03 v #19884 > > `( 00:20:03 v #19885 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19886 > > Fable.Core.Emit(\"leptos::html::Main\")>]]\n#endif\ntype leptos_html_Main = 00:20:03 v #19887 > > class end" 00:20:03 v #19888 > > $'' : $'leptos_html_Main' 00:20:03 v #19889 > > ) 00:20:03 v #19890 > > 00:20:03 v #19891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19892 > > │ ### nav 00:20:03 v #19893 > > 00:20:03 v #19894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19895 > > nominal nav = 00:20:03 v #19896 > > `( 00:20:03 v #19897 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19898 > > Fable.Core.Emit(\"leptos::html::Nav\")>]]\n#endif\ntype leptos_html_Nav = class 00:20:03 v #19899 > > end" 00:20:03 v #19900 > > $'' : $'leptos_html_Nav' 00:20:03 v #19901 > > ) 00:20:03 v #19902 > > 00:20:03 v #19903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19904 > > │ ### option' 00:20:03 v #19905 > > 00:20:03 v #19906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19907 > > nominal option' = 00:20:03 v #19908 > > `( 00:20:03 v #19909 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19910 > > Fable.Core.Emit(\"leptos::html::Option_\")>]]\n#endif\ntype leptos_html_Option = 00:20:03 v #19911 > > class end" 00:20:03 v #19912 > > $'' : $'leptos_html_Option' 00:20:03 v #19913 > > ) 00:20:03 v #19914 > > 00:20:03 v #19915 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19916 > > │ ### pre 00:20:03 v #19917 > > 00:20:03 v #19918 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19919 > > nominal pre = 00:20:03 v #19920 > > `( 00:20:03 v #19921 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19922 > > Fable.Core.Emit(\"leptos::html::Pre\")>]]\n#endif\ntype leptos_html_Pre = class 00:20:03 v #19923 > > end" 00:20:03 v #19924 > > $'' : $'leptos_html_Pre' 00:20:03 v #19925 > > ) 00:20:03 v #19926 > > 00:20:03 v #19927 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19928 > > │ ### select 00:20:03 v #19929 > > 00:20:03 v #19930 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19931 > > nominal select = 00:20:03 v #19932 > > `( 00:20:03 v #19933 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19934 > > Fable.Core.Emit(\"leptos::html::Select\")>]]\n#endif\ntype leptos_html_Select = 00:20:03 v #19935 > > class end" 00:20:03 v #19936 > > $'' : $'leptos_html_Select' 00:20:03 v #19937 > > ) 00:20:03 v #19938 > > 00:20:03 v #19939 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:03 v #19940 > > │ ### span 00:20:03 v #19941 > > 00:20:03 v #19942 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:03 v #19943 > > nominal span = 00:20:03 v #19944 > > `( 00:20:03 v #19945 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:03 v #19946 > > Fable.Core.Emit(\"leptos::html::Span\")>]]\n#endif\ntype leptos_html_Span = 00:20:03 v #19947 > > class end" 00:20:03 v #19948 > > $'' : $'leptos_html_Span' 00:20:03 v #19949 > > ) 00:20:04 v #19950 > > 00:20:04 v #19951 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #19952 > > │ ### summary 00:20:04 v #19953 > > 00:20:04 v #19954 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #19955 > > nominal summary = 00:20:04 v #19956 > > `( 00:20:04 v #19957 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #19958 > > Fable.Core.Emit(\"leptos::html::Summary\")>]]\n#endif\ntype leptos_html_Summary 00:20:04 v #19959 > > = class end" 00:20:04 v #19960 > > $'' : $'leptos_html_Summary' 00:20:04 v #19961 > > ) 00:20:04 v #19962 > > 00:20:04 v #19963 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #19964 > > │ ### table 00:20:04 v #19965 > > 00:20:04 v #19966 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #19967 > > nominal table = 00:20:04 v #19968 > > `( 00:20:04 v #19969 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #19970 > > Fable.Core.Emit(\"leptos::html::Table\")>]]\n#endif\ntype leptos_html_Table = 00:20:04 v #19971 > > class end" 00:20:04 v #19972 > > $'' : $'leptos_html_Table' 00:20:04 v #19973 > > ) 00:20:04 v #19974 > > 00:20:04 v #19975 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #19976 > > │ ### thead 00:20:04 v #19977 > > 00:20:04 v #19978 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #19979 > > nominal thead = 00:20:04 v #19980 > > `( 00:20:04 v #19981 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #19982 > > Fable.Core.Emit(\"leptos::html::Thead\")>]]\n#endif\ntype leptos_html_Thead = 00:20:04 v #19983 > > class end" 00:20:04 v #19984 > > $'' : $'leptos_html_Thead' 00:20:04 v #19985 > > ) 00:20:04 v #19986 > > 00:20:04 v #19987 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #19988 > > │ ### tbody 00:20:04 v #19989 > > 00:20:04 v #19990 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #19991 > > nominal tbody = 00:20:04 v #19992 > > `( 00:20:04 v #19993 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #19994 > > Fable.Core.Emit(\"leptos::html::Tbody\")>]]\n#endif\ntype leptos_html_Tbody = 00:20:04 v #19995 > > class end" 00:20:04 v #19996 > > $'' : $'leptos_html_Tbody' 00:20:04 v #19997 > > ) 00:20:04 v #19998 > > 00:20:04 v #19999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #20000 > > │ ### tr 00:20:04 v #20001 > > 00:20:04 v #20002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #20003 > > nominal tr = 00:20:04 v #20004 > > `( 00:20:04 v #20005 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #20006 > > Fable.Core.Emit(\"leptos::html::Tr\")>]]\n#endif\ntype leptos_html_Tr = class 00:20:04 v #20007 > > end" 00:20:04 v #20008 > > $'' : $'leptos_html_Tr' 00:20:04 v #20009 > > ) 00:20:04 v #20010 > > 00:20:04 v #20011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #20012 > > │ ### th 00:20:04 v #20013 > > 00:20:04 v #20014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #20015 > > nominal th = 00:20:04 v #20016 > > `( 00:20:04 v #20017 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #20018 > > Fable.Core.Emit(\"leptos::html::Th\")>]]\n#endif\ntype leptos_html_Th = class 00:20:04 v #20019 > > end" 00:20:04 v #20020 > > $'' : $'leptos_html_Th' 00:20:04 v #20021 > > ) 00:20:04 v #20022 > > 00:20:04 v #20023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:04 v #20024 > > │ ### td 00:20:04 v #20025 > > 00:20:04 v #20026 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:04 v #20027 > > nominal td = 00:20:04 v #20028 > > `( 00:20:04 v #20029 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:04 v #20030 > > Fable.Core.Emit(\"leptos::html::Td\")>]]\n#endif\ntype leptos_html_Td = class 00:20:04 v #20031 > > end" 00:20:04 v #20032 > > $'' : $'leptos_html_Td' 00:20:04 v #20033 > > ) 00:20:05 v #20034 > > 00:20:05 v #20035 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20036 > > │ ### svg 00:20:05 v #20037 > > 00:20:05 v #20038 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20039 > > nominal svg = 00:20:05 v #20040 > > `( 00:20:05 v #20041 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20042 > > Fable.Core.Emit(\"leptos::svg::Svg\")>]]\n#endif\ntype leptos_svg_Svg = class 00:20:05 v #20043 > > end" 00:20:05 v #20044 > > $'' : $'leptos_svg_Svg' 00:20:05 v #20045 > > ) 00:20:05 v #20046 > > 00:20:05 v #20047 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20048 > > │ ### path 00:20:05 v #20049 > > 00:20:05 v #20050 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20051 > > nominal path = 00:20:05 v #20052 > > `( 00:20:05 v #20053 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20054 > > Fable.Core.Emit(\"leptos::svg::Path\")>]]\n#endif\ntype leptos_svg_Path = class 00:20:05 v #20055 > > end" 00:20:05 v #20056 > > $'' : $'leptos_svg_Path' 00:20:05 v #20057 > > ) 00:20:05 v #20058 > > 00:20:05 v #20059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20060 > > │ ### circle 00:20:05 v #20061 > > 00:20:05 v #20062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20063 > > nominal circle = 00:20:05 v #20064 > > `( 00:20:05 v #20065 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20066 > > Fable.Core.Emit(\"leptos::svg::Circle\")>]]\n#endif\ntype leptos_svg_Circle = 00:20:05 v #20067 > > class end" 00:20:05 v #20068 > > $'' : $'leptos_svg_Circle' 00:20:05 v #20069 > > ) 00:20:05 v #20070 > > 00:20:05 v #20071 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20072 > > │ ### rect 00:20:05 v #20073 > > 00:20:05 v #20074 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20075 > > nominal rect = 00:20:05 v #20076 > > `( 00:20:05 v #20077 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20078 > > Fable.Core.Emit(\"leptos::svg::Rect\")>]]\n#endif\ntype leptos_svg_Rect = class 00:20:05 v #20079 > > end" 00:20:05 v #20080 > > $'' : $'leptos_svg_Rect' 00:20:05 v #20081 > > ) 00:20:05 v #20082 > > 00:20:05 v #20083 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20084 > > │ ### animate 00:20:05 v #20085 > > 00:20:05 v #20086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20087 > > nominal animate = 00:20:05 v #20088 > > `( 00:20:05 v #20089 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20090 > > Fable.Core.Emit(\"leptos::svg::Animate\")>]]\n#endif\ntype leptos_svg_Animate = 00:20:05 v #20091 > > class end" 00:20:05 v #20092 > > $'' : $'leptos_svg_Animate' 00:20:05 v #20093 > > ) 00:20:05 v #20094 > > 00:20:05 v #20095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20096 > > │ ### action 00:20:05 v #20097 > > 00:20:05 v #20098 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20099 > > nominal action t u = 00:20:05 v #20100 > > `( 00:20:05 v #20101 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20102 > > Fable.Core.Emit(\"leptos::prelude::Action<$0, $1>\")>]]\n#endif\ntype 00:20:05 v #20103 > > leptos_prelude_Action<'T, 'U> = class end" 00:20:05 v #20104 > > $'' : $'leptos_prelude_Action<`t, `u>' 00:20:05 v #20105 > > ) 00:20:05 v #20106 > > 00:20:05 v #20107 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:05 v #20108 > > │ ### arc_action 00:20:05 v #20109 > > 00:20:05 v #20110 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:05 v #20111 > > nominal arc_action t u = 00:20:05 v #20112 > > `( 00:20:05 v #20113 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:05 v #20114 > > Fable.Core.Emit(\"leptos::prelude::ArcAction<$0, $1>\")>]]\n#endif\ntype 00:20:05 v #20115 > > leptos_prelude_ArcAction<'T, 'U> = class end" 00:20:05 v #20116 > > $'' : $'leptos_prelude_ArcAction<`t, `u>' 00:20:05 v #20117 > > ) 00:20:06 v #20118 > > 00:20:06 v #20119 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20120 > > │ ### for 00:20:06 v #20121 > > 00:20:06 v #20122 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20123 > > nominal for = 00:20:06 v #20124 > > `( 00:20:06 v #20125 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20126 > > Fable.Core.Emit(\"leptos::prelude::For\")>]]\n#endif\ntype leptos_prelude_For = 00:20:06 v #20127 > > class end" 00:20:06 v #20128 > > $'' : $'leptos_prelude_For' 00:20:06 v #20129 > > ) 00:20:06 v #20130 > > 00:20:06 v #20131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20132 > > │ ### show 00:20:06 v #20133 > > 00:20:06 v #20134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20135 > > nominal show = 00:20:06 v #20136 > > `( 00:20:06 v #20137 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20138 > > Fable.Core.Emit(\"leptos::prelude::Show\")>]]\n#endif\ntype leptos_prelude_Show 00:20:06 v #20139 > > = class end" 00:20:06 v #20140 > > $'' : $'leptos_prelude_Show' 00:20:06 v #20141 > > ) 00:20:06 v #20142 > > 00:20:06 v #20143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20144 > > │ ### fragment 00:20:06 v #20145 > > 00:20:06 v #20146 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20147 > > nominal fragment = 00:20:06 v #20148 > > `( 00:20:06 v #20149 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20150 > > Fable.Core.Emit(\"leptos::prelude::Fragment\")>]]\n#endif\ntype 00:20:06 v #20151 > > leptos_dom_Fragment = class end" 00:20:06 v #20152 > > $'' : $'leptos_dom_Fragment' 00:20:06 v #20153 > > ) 00:20:06 v #20154 > > 00:20:06 v #20155 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20156 > > │ ### interval_handle 00:20:06 v #20157 > > 00:20:06 v #20158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20159 > > nominal interval_handle = 00:20:06 v #20160 > > `( 00:20:06 v #20161 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20162 > > Fable.Core.Emit(\"leptos::leptos_dom::helpers::IntervalHandle\")>]]\n#endif\ntyp 00:20:06 v #20163 > > e leptos_dom_IntervalHandle = class end" 00:20:06 v #20164 > > $'' : $'leptos_dom_IntervalHandle' 00:20:06 v #20165 > > ) 00:20:06 v #20166 > > 00:20:06 v #20167 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20168 > > │ ### text 00:20:06 v #20169 > > 00:20:06 v #20170 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20171 > > nominal text = 00:20:06 v #20172 > > `( 00:20:06 v #20173 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20174 > > Fable.Core.Emit(\"leptos::tachys::renderer::dom::Text\")>]]\n#endif\ntype 00:20:06 v #20175 > > leptos_dom_Text = class end" 00:20:06 v #20176 > > $'' : $'leptos_dom_Text' 00:20:06 v #20177 > > ) 00:20:06 v #20178 > > 00:20:06 v #20179 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:06 v #20180 > > │ ### transparent 00:20:06 v #20181 > > 00:20:06 v #20182 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:06 v #20183 > > nominal transparent = 00:20:06 v #20184 > > `( 00:20:06 v #20185 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:06 v #20186 > > Fable.Core.Emit(\"leptos::leptos_dom::Transparent\")>]]\n#endif\ntype 00:20:06 v #20187 > > leptos_dom_Transparent = class end" 00:20:06 v #20188 > > $'' : $'leptos_dom_Transparent' 00:20:06 v #20189 > > ) 00:20:07 v #20190 > > 00:20:07 v #20191 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20192 > > │ ### route 00:20:07 v #20193 > > 00:20:07 v #20194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20195 > > nominal route = 00:20:07 v #20196 > > `( 00:20:07 v #20197 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20198 > > Fable.Core.Emit(\"leptos_router::Route\")>]]\n#endif\ntype leptos_router_Route = 00:20:07 v #20199 > > class end" 00:20:07 v #20200 > > $'' : $'leptos_router_Route' 00:20:07 v #20201 > > ) 00:20:07 v #20202 > > 00:20:07 v #20203 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20204 > > │ ### nested_route 00:20:07 v #20205 > > 00:20:07 v #20206 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20207 > > nominal nested_route = 00:20:07 v #20208 > > `( 00:20:07 v #20209 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20210 > > Fable.Core.Emit(\"leptos_router::NestedRoute<_, _, _, _>\")>]]\n#endif\ntype 00:20:07 v #20211 > > leptos_router_NestedRoute = class end" 00:20:07 v #20212 > > $'' : $'leptos_router_NestedRoute' 00:20:07 v #20213 > > ) 00:20:07 v #20214 > > 00:20:07 v #20215 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20216 > > │ ### route_definition 00:20:07 v #20217 > > 00:20:07 v #20218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20219 > > nominal route_definition = 00:20:07 v #20220 > > `( 00:20:07 v #20221 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20222 > > Fable.Core.Emit(\"leptos_router::RouteDefinition\")>]]\n#endif\ntype 00:20:07 v #20223 > > leptos_router_RouteDefinition = class end" 00:20:07 v #20224 > > $'' : $'leptos_router_RouteDefinition' 00:20:07 v #20225 > > ) 00:20:07 v #20226 > > 00:20:07 v #20227 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20228 > > │ ### router 00:20:07 v #20229 > > 00:20:07 v #20230 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20231 > > nominal router = 00:20:07 v #20232 > > `( 00:20:07 v #20233 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20234 > > Fable.Core.Emit(\"leptos_router::Router\")>]]\n#endif\ntype leptos_router_Router 00:20:07 v #20235 > > = class end" 00:20:07 v #20236 > > $'' : $'leptos_router_Router' 00:20:07 v #20237 > > ) 00:20:07 v #20238 > > 00:20:07 v #20239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20240 > > │ ### routes 00:20:07 v #20241 > > 00:20:07 v #20242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20243 > > nominal routes = 00:20:07 v #20244 > > `( 00:20:07 v #20245 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20246 > > Fable.Core.Emit(\"leptos_router::Routes\")>]]\n#endif\ntype leptos_router_Routes 00:20:07 v #20247 > > = class end" 00:20:07 v #20248 > > $'' : $'leptos_router_Routes' 00:20:07 v #20249 > > ) 00:20:07 v #20250 > > 00:20:07 v #20251 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:07 v #20252 > > │ ### html_element 00:20:07 v #20253 > > 00:20:07 v #20254 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:07 v #20255 > > nominal html_element t = 00:20:07 v #20256 > > `( 00:20:07 v #20257 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:07 v #20258 > > Fable.Core.Emit(\"leptos::html::HtmlElement<$0, _, _>\")>]]\n#endif\ntype 00:20:07 v #20259 > > leptos_dom_html_HtmlElement<'T> = class end" 00:20:07 v #20260 > > $'' : $'leptos_dom_html_HtmlElement<`t>' 00:20:07 v #20261 > > ) 00:20:08 v #20262 > > 00:20:08 v #20263 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20264 > > │ ### into_view 00:20:08 v #20265 > > 00:20:08 v #20266 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20267 > > nominal into_view = 00:20:08 v #20268 > > `( 00:20:08 v #20269 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20270 > > Fable.Core.Emit(\"leptos::IntoView\")>]]\n#endif\ntype leptos_IntoView = class 00:20:08 v #20271 > > end" 00:20:08 v #20272 > > $'' : $'leptos_IntoView' 00:20:08 v #20273 > > ) 00:20:08 v #20274 > > 00:20:08 v #20275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20276 > > │ ### location 00:20:08 v #20277 > > 00:20:08 v #20278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20279 > > nominal location = 00:20:08 v #20280 > > `( 00:20:08 v #20281 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20282 > > Fable.Core.Emit(\"leptos_router::location::Location\")>]]\n#endif\ntype 00:20:08 v #20283 > > leptos_router_location_Location = class end" 00:20:08 v #20284 > > $'' : $'leptos_router_location_Location' 00:20:08 v #20285 > > ) 00:20:08 v #20286 > > 00:20:08 v #20287 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20288 > > │ ### navigate_options 00:20:08 v #20289 > > 00:20:08 v #20290 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20291 > > nominal navigate_options = 00:20:08 v #20292 > > `( 00:20:08 v #20293 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20294 > > Fable.Core.Emit(\"leptos_router::NavigateOptions\")>]]\n#endif\ntype 00:20:08 v #20295 > > leptos_router_NavigateOptions = class end" 00:20:08 v #20296 > > $'' : $'leptos_router_NavigateOptions' 00:20:08 v #20297 > > ) 00:20:08 v #20298 > > 00:20:08 v #20299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20300 > > │ ### url 00:20:08 v #20301 > > 00:20:08 v #20302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20303 > > nominal url = 00:20:08 v #20304 > > `( 00:20:08 v #20305 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20306 > > Fable.Core.Emit(\"leptos_router::location::Url\")>]]\n#endif\ntype 00:20:08 v #20307 > > leptos_router_Url = class end" 00:20:08 v #20308 > > $'' : $'leptos_router_Url' 00:20:08 v #20309 > > ) 00:20:08 v #20310 > > 00:20:08 v #20311 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20312 > > │ ### memo 00:20:08 v #20313 > > 00:20:08 v #20314 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20315 > > nominal memo t = 00:20:08 v #20316 > > `( 00:20:08 v #20317 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20318 > > Fable.Core.Emit(\"leptos::prelude::Memo<$0>\")>]]\n#endif\ntype 00:20:08 v #20319 > > leptos_prelude_Memo<'T> = class end" 00:20:08 v #20320 > > $'' : $'leptos_prelude_Memo<`t>' 00:20:08 v #20321 > > ) 00:20:08 v #20322 > > 00:20:08 v #20323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20324 > > │ ### arc_memo 00:20:08 v #20325 > > 00:20:08 v #20326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20327 > > nominal arc_memo t = 00:20:08 v #20328 > > `( 00:20:08 v #20329 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20330 > > Fable.Core.Emit(\"leptos::prelude::ArcMemo<$0>\")>]]\n#endif\ntype 00:20:08 v #20331 > > leptos_prelude_ArcMemo<'T> = class end" 00:20:08 v #20332 > > $'' : $'leptos_prelude_ArcMemo<`t>' 00:20:08 v #20333 > > ) 00:20:08 v #20334 > > 00:20:08 v #20335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:08 v #20336 > > │ ### rw_signal 00:20:08 v #20337 > > 00:20:08 v #20338 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:08 v #20339 > > nominal rw_signal t = 00:20:08 v #20340 > > `( 00:20:08 v #20341 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:08 v #20342 > > Fable.Core.Emit(\"leptos::prelude::RwSignal<$0>\")>]]\n#endif\ntype 00:20:08 v #20343 > > leptos_prelude_RwSignal<'T> = class end" 00:20:08 v #20344 > > $'' : $'leptos_prelude_RwSignal<`t>' 00:20:08 v #20345 > > ) 00:20:09 v #20346 > > 00:20:09 v #20347 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20348 > > │ ### arc_rw_signal 00:20:09 v #20349 > > 00:20:09 v #20350 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20351 > > nominal arc_rw_signal t = 00:20:09 v #20352 > > `( 00:20:09 v #20353 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20354 > > Fable.Core.Emit(\"leptos::prelude::ArcRwSignal<$0>\")>]]\n#endif\ntype 00:20:09 v #20355 > > leptos_prelude_ArcRwSignal<'T> = class end" 00:20:09 v #20356 > > $'' : $'leptos_prelude_ArcRwSignal<`t>' 00:20:09 v #20357 > > ) 00:20:09 v #20358 > > 00:20:09 v #20359 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20360 > > │ ### signal 00:20:09 v #20361 > > 00:20:09 v #20362 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20363 > > nominal signal t = 00:20:09 v #20364 > > `( 00:20:09 v #20365 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20366 > > Fable.Core.Emit(\"leptos::prelude::Signal<$0>\")>]]\n#endif\ntype 00:20:09 v #20367 > > leptos_prelude_Signal<'T> = class end" 00:20:09 v #20368 > > $'' : $'leptos_prelude_Signal<`t>' 00:20:09 v #20369 > > ) 00:20:09 v #20370 > > 00:20:09 v #20371 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20372 > > │ ### arc_signal 00:20:09 v #20373 > > 00:20:09 v #20374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20375 > > nominal arc_signal t = 00:20:09 v #20376 > > `( 00:20:09 v #20377 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20378 > > Fable.Core.Emit(\"leptos::prelude::ArcSignal<$0>\")>]]\n#endif\ntype 00:20:09 v #20379 > > leptos_prelude_ArcSignal<'T> = class end" 00:20:09 v #20380 > > $'' : $'leptos_prelude_ArcSignal<`t>' 00:20:09 v #20381 > > ) 00:20:09 v #20382 > > 00:20:09 v #20383 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20384 > > │ ### read_signal 00:20:09 v #20385 > > 00:20:09 v #20386 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20387 > > nominal read_signal t = 00:20:09 v #20388 > > `( 00:20:09 v #20389 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20390 > > Fable.Core.Emit(\"leptos::prelude::ReadSignal<$0>\")>]]\n#endif\ntype 00:20:09 v #20391 > > leptos_prelude_ReadSignal<'T> = class end" 00:20:09 v #20392 > > $'' : $'leptos_prelude_ReadSignal<`t>' 00:20:09 v #20393 > > ) 00:20:09 v #20394 > > 00:20:09 v #20395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20396 > > │ ### arc_read_signal 00:20:09 v #20397 > > 00:20:09 v #20398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20399 > > nominal arc_read_signal t = 00:20:09 v #20400 > > `( 00:20:09 v #20401 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20402 > > Fable.Core.Emit(\"leptos::prelude::ArcReadSignal<$0>\")>]]\n#endif\ntype 00:20:09 v #20403 > > leptos_prelude_ArcReadSignal<'T> = class end" 00:20:09 v #20404 > > $'' : $'leptos_prelude_ArcReadSignal<`t>' 00:20:09 v #20405 > > ) 00:20:09 v #20406 > > 00:20:09 v #20407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:09 v #20408 > > │ ### write_signal 00:20:09 v #20409 > > 00:20:09 v #20410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:09 v #20411 > > nominal write_signal t = 00:20:09 v #20412 > > `( 00:20:09 v #20413 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:09 v #20414 > > Fable.Core.Emit(\"leptos::prelude::WriteSignal<$0>\")>]]\n#endif\ntype 00:20:09 v #20415 > > leptos_prelude_WriteSignal<'T> = class end" 00:20:09 v #20416 > > $'' : $'leptos_prelude_WriteSignal<`t>' 00:20:09 v #20417 > > ) 00:20:10 v #20418 > > 00:20:10 v #20419 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20420 > > │ ### arc_write_signal 00:20:10 v #20421 > > 00:20:10 v #20422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20423 > > nominal arc_write_signal t = 00:20:10 v #20424 > > `( 00:20:10 v #20425 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20426 > > Fable.Core.Emit(\"leptos::prelude::ArcWriteSignal<$0>\")>]]\n#endif\ntype 00:20:10 v #20427 > > leptos_prelude_ArcWriteSignal<'T> = class end" 00:20:10 v #20428 > > $'' : $'leptos_prelude_ArcWriteSignal<`t>' 00:20:10 v #20429 > > ) 00:20:10 v #20430 > > 00:20:10 v #20431 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20432 > > │ ### resource 00:20:10 v #20433 > > 00:20:10 v #20434 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20435 > > nominal resource t u = 00:20:10 v #20436 > > `( 00:20:10 v #20437 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20438 > > Fable.Core.Emit(\"leptos::prelude::Resource<$0, $1>\")>]]\n#endif\ntype 00:20:10 v #20439 > > leptos_prelude_Resource<'T, 'U> = class end" 00:20:10 v #20440 > > $'' : $'leptos_prelude_Resource<`t, `u>' 00:20:10 v #20441 > > ) 00:20:10 v #20442 > > 00:20:10 v #20443 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20444 > > │ ### arc_resource 00:20:10 v #20445 > > 00:20:10 v #20446 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20447 > > nominal arc_resource t u = 00:20:10 v #20448 > > `( 00:20:10 v #20449 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20450 > > Fable.Core.Emit(\"leptos::prelude::ArcResource<$0, $1>\")>]]\n#endif\ntype 00:20:10 v #20451 > > leptos_prelude_ArcResource<'T, 'U> = class end" 00:20:10 v #20452 > > $'' : $'leptos_prelude_ArcResource<`t, `u>' 00:20:10 v #20453 > > ) 00:20:10 v #20454 > > 00:20:10 v #20455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20456 > > │ ### local_resource 00:20:10 v #20457 > > 00:20:10 v #20458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20459 > > nominal local_resource t u = 00:20:10 v #20460 > > `( 00:20:10 v #20461 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20462 > > Fable.Core.Emit(\"leptos::prelude::LocalResource<$0, $1>\")>]]\n#endif\ntype 00:20:10 v #20463 > > leptos_prelude_LocalResource<'T, 'U> = class end" 00:20:10 v #20464 > > $'' : $'leptos_prelude_LocalResource<`t, `u>' 00:20:10 v #20465 > > ) 00:20:10 v #20466 > > 00:20:10 v #20467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20468 > > │ ### arc_local_resource 00:20:10 v #20469 > > 00:20:10 v #20470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20471 > > nominal arc_local_resource t = 00:20:10 v #20472 > > `( 00:20:10 v #20473 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20474 > > Fable.Core.Emit(\"leptos::prelude::ArcLocalResource<$0>\")>]]\n#endif\ntype 00:20:10 v #20475 > > leptos_prelude_ArcLocalResource<'T> = class end" 00:20:10 v #20476 > > $'' : $'leptos_prelude_ArcLocalResource<`t>' 00:20:10 v #20477 > > ) 00:20:10 v #20478 > > 00:20:10 v #20479 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20480 > > │ ### any_view 00:20:10 v #20481 > > 00:20:10 v #20482 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20483 > > nominal any_view = 00:20:10 v #20484 > > `( 00:20:10 v #20485 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20486 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype 00:20:10 v #20487 > > leptos_prelude_AnyView = class end" 00:20:10 v #20488 > > $'' : $'leptos_prelude_AnyView' 00:20:10 v #20489 > > ) 00:20:10 v #20490 > > 00:20:10 v #20491 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:10 v #20492 > > │ ### view' 00:20:10 v #20493 > > 00:20:10 v #20494 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:10 v #20495 > > nominal view' t = 00:20:10 v #20496 > > `( 00:20:10 v #20497 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:10 v #20498 > > Fable.Core.Emit(\"leptos::prelude::View<$0>\")>]]\n#endif\ntype 00:20:10 v #20499 > > leptos_prelude_View<'T> = class end" 00:20:10 v #20500 > > $'' : $'leptos_prelude_View<`t>' 00:20:10 v #20501 > > ) 00:20:11 v #20502 > > 00:20:11 v #20503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20504 > > │ ### view 00:20:11 v #20505 > > 00:20:11 v #20506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20507 > > nominal view = 00:20:11 v #20508 > > `( 00:20:11 v #20509 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:20:11 v #20510 > > Fable.Core.Emit(\"leptos::prelude::AnyView\")>]]\n#endif\ntype 00:20:11 v #20511 > > leptos_prelude_AnyView_ = class end" 00:20:11 v #20512 > > $'' : $'leptos_prelude_AnyView_' 00:20:11 v #20513 > > ) 00:20:11 v #20514 > > 00:20:11 v #20515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20516 > > │ ### signal_get 00:20:11 v #20517 > > 00:20:11 v #20518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20519 > > prototype signal_get signal t : signal t -> t 00:20:11 v #20520 > > 00:20:11 v #20521 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20522 > > │ ### signal_get_untracked 00:20:11 v #20523 > > 00:20:11 v #20524 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20525 > > prototype signal_get_untracked signal t : signal t -> t 00:20:11 v #20526 > > 00:20:11 v #20527 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20528 > > │ ### signal_update 00:20:11 v #20529 > > 00:20:11 v #20530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20531 > > prototype signal_update signal t : (t -> t) -> signal t -> () 00:20:11 v #20532 > > 00:20:11 v #20533 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20534 > > │ ### signal_set 00:20:11 v #20535 > > 00:20:11 v #20536 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20537 > > prototype signal_set signal t : t -> signal t -> () 00:20:11 v #20538 > > 00:20:11 v #20539 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:11 v #20540 > > │ ### log_string 00:20:11 v #20541 > > 00:20:11 v #20542 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:11 v #20543 > > inl log_string (text : string) = 00:20:11 v #20544 > > (!\($'@@"true; leptos::logging::log\!(""" + !text + @@""");"') : bool) |> 00:20:11 v #20545 > > ignore 00:20:12 v #20546 > > 00:20:12 v #20547 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20548 > > │ ### log 00:20:12 v #20549 > > 00:20:12 v #20550 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20551 > > inl log (text : string) = 00:20:12 v #20552 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{}}"", $0)"') : bool) |> 00:20:12 v #20553 > > ignore 00:20:12 v #20554 > > 00:20:12 v #20555 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20556 > > │ ### log_debug 00:20:12 v #20557 > > 00:20:12 v #20558 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20559 > > inl log_debug (text : string) = 00:20:12 v #20560 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:?}}"", $0)"') : bool) |> 00:20:12 v #20561 > > ignore 00:20:12 v #20562 > > 00:20:12 v #20563 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20564 > > │ ### log_pretty 00:20:12 v #20565 > > 00:20:12 v #20566 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20567 > > inl log_pretty (text : string) = 00:20:12 v #20568 > > (!\\(text, $'@@$"true; leptos::logging::log\!(""{{:#?}}"", $0)"') : bool) |> 00:20:12 v #20569 > > ignore 00:20:12 v #20570 > > 00:20:12 v #20571 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20572 > > │ ### log_format 00:20:12 v #20573 > > 00:20:12 v #20574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20575 > > inl log_format fn obj = 00:20:12 v #20576 > > inl obj_log = obj |> sm'.format_debug 00:20:12 v #20577 > > inl text = fn obj_log |> sm'.ellipsis_end 200 00:20:12 v #20578 > > log text 00:20:12 v #20579 > > obj 00:20:12 v #20580 > > 00:20:12 v #20581 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20582 > > │ ### mount_to_body 00:20:12 v #20583 > > 00:20:12 v #20584 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20585 > > inl mount_to_body (view_fn : () -> rust.impl into_view) : () = 00:20:12 v #20586 > > (!\\(view_fn, $'"true; leptos::prelude::mount_to_body(|| $0()); //"') : 00:20:12 v #20587 > > bool) |> ignore 00:20:12 v #20588 > > 00:20:12 v #20589 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:12 v #20590 > > │ ### view_vec_to_fragment 00:20:12 v #20591 > > 00:20:12 v #20592 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:12 v #20593 > > inl view_vec_to_fragment (view : am'.vec view) : fragment = 00:20:12 v #20594 > > !\\(view, $'"leptos::prelude::Fragment::new($0)"') 00:20:13 v #20595 > > 00:20:13 v #20596 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20597 > > │ ### view_list_to_fragment 00:20:13 v #20598 > > 00:20:13 v #20599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20600 > > inl view_list_to_fragment (view : list view) : fragment = 00:20:13 v #20601 > > view 00:20:13 v #20602 > > |> am'.new_vec 00:20:13 v #20603 > > |> view_vec_to_fragment 00:20:13 v #20604 > > 00:20:13 v #20605 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20606 > > │ ### element_to_view 00:20:13 v #20607 > > 00:20:13 v #20608 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20609 > > inl element_to_view (view : view' (html_element _)) : view = 00:20:13 v #20610 > > !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"') 00:20:13 v #20611 > > 00:20:13 v #20612 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20613 > > │ ### view_to_fragment 00:20:13 v #20614 > > 00:20:13 v #20615 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20616 > > inl view_to_fragment (view : view) : fragment = 00:20:13 v #20617 > > [[ view ]] 00:20:13 v #20618 > > |> view_list_to_fragment 00:20:13 v #20619 > > 00:20:13 v #20620 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20621 > > │ ### fragment_to_view 00:20:13 v #20622 > > 00:20:13 v #20623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20624 > > inl fragment_to_view (fragment : fragment) : view = 00:20:13 v #20625 > > !\\(fragment, $'"leptos::prelude::AnyView::from($0)"') 00:20:13 v #20626 > > 00:20:13 v #20627 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20628 > > │ ### element_to_fragment 00:20:13 v #20629 > > 00:20:13 v #20630 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20631 > > inl element_to_fragment (view : view' (html_element _)) : fragment = 00:20:13 v #20632 > > view 00:20:13 v #20633 > > |> element_to_view 00:20:13 v #20634 > > |> view_to_fragment 00:20:13 v #20635 > > 00:20:13 v #20636 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:13 v #20637 > > │ ### (~:>) fragment 00:20:13 v #20638 > > 00:20:13 v #20639 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:13 v #20640 > > instance (~:>) fragment = fun x => 00:20:13 v #20641 > > real 00:20:13 v #20642 > > typecase t with 00:20:13 v #20643 > > | array_base (view' (html_element ~el)) => 00:20:13 v #20644 > > inl x = a x 00:20:13 v #20645 > > inl x = am.toList `a `int `(view' (html_element el)) x 00:20:13 v #20646 > > inl x = listm.map `(view' (html_element el)) `view (element_to_view 00:20:13 v #20647 > > `el) x 00:20:13 v #20648 > > view_list_to_fragment x 00:20:13 v #20649 > > | list (view' (html_element ~el)) => 00:20:13 v #20650 > > inl x = listm.map `(view' (html_element el)) `view (element_to_view 00:20:13 v #20651 > > `el) x 00:20:13 v #20652 > > view_list_to_fragment x 00:20:13 v #20653 > > | list view => 00:20:13 v #20654 > > view_list_to_fragment x 00:20:13 v #20655 > > | _ => x 00:20:14 v #20656 > > 00:20:14 v #20657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20658 > > │ ### (~:>) view 00:20:14 v #20659 > > 00:20:14 v #20660 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20661 > > instance (~:>) view = fun x => 00:20:14 v #20662 > > real 00:20:14 v #20663 > > typecase t with 00:20:14 v #20664 > > | view' (html_element _) => element_to_view x 00:20:14 v #20665 > > | _ => x 00:20:14 v #20666 > > 00:20:14 v #20667 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20668 > > │ ### view_trait_to_element 00:20:14 v #20669 > > 00:20:14 v #20670 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20671 > > inl view_trait_to_element (view : rust.impl into_view) : view' (html_element _) 00:20:14 v #20672 > > = 00:20:14 v #20673 > > $'!view |> unbox' 00:20:14 v #20674 > > 00:20:14 v #20675 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20676 > > │ ### view_trait_to_route_definition 00:20:14 v #20677 > > 00:20:14 v #20678 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20679 > > inl view_trait_to_route_definition (view : rust.impl into_view) : 00:20:14 v #20680 > > route_definition = 00:20:14 v #20681 > > $'!view |> unbox' 00:20:14 v #20682 > > 00:20:14 v #20683 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20684 > > │ ### to_element_view 00:20:14 v #20685 > > 00:20:14 v #20686 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20687 > > inl to_element_view (view : view' (html_element _)) : rust.impl into_view = 00:20:14 v #20688 > > $'!view |> unbox' 00:20:14 v #20689 > > 00:20:14 v #20690 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20691 > > │ ### to_view_trait 00:20:14 v #20692 > > 00:20:14 v #20693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20694 > > inl to_view_trait (view : view) : rust.impl into_view = 00:20:14 v #20695 > > $'!view |> unbox' 00:20:14 v #20696 > > 00:20:14 v #20697 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20698 > > │ ### to_fragment_unbox 00:20:14 v #20699 > > 00:20:14 v #20700 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20701 > > inl to_fragment_unbox view : fragment = 00:20:14 v #20702 > > $'!view |> unbox' 00:20:14 v #20703 > > 00:20:14 v #20704 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:14 v #20705 > > │ ### from_fragment_unbox 00:20:14 v #20706 > > 00:20:14 v #20707 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:14 v #20708 > > inl from_fragment_unbox (fragment : fragment) = 00:20:14 v #20709 > > $'!fragment |> unbox' 00:20:15 v #20710 > > 00:20:15 v #20711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20712 > > │ ### element_to_view_trait 00:20:15 v #20713 > > 00:20:15 v #20714 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20715 > > inl element_to_view_trait (macro : view' (html_element _)) : rust.impl into_view 00:20:15 v #20716 > > = 00:20:15 v #20717 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:15 v #20718 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:15 v #20719 > > !\($'"leptos::prelude::view\! { {!macro} }"') 00:20:15 v #20720 > > 00:20:15 v #20721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20722 > > │ ### macro_to_view_trait 00:20:15 v #20723 > > 00:20:15 v #20724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20725 > > inl macro_to_view_trait (macro : string) : rust.impl into_view = 00:20:15 v #20726 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:15 v #20727 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:15 v #20728 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:15 v #20729 > > leptos::prelude::ClassAttribute;\n//\"\n#endif" 00:20:15 v #20730 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:20:15 v #20731 > > 00:20:15 v #20732 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20733 > > │ ### macro_to_fragment 00:20:15 v #20734 > > 00:20:15 v #20735 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20736 > > inl macro_to_fragment (macro : string) : fragment = 00:20:15 v #20737 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:15 v #20738 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:15 v #20739 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:20:15 v #20740 > > 00:20:15 v #20741 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20742 > > │ ### new_transparent 00:20:15 v #20743 > > 00:20:15 v #20744 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20745 > > inl new_transparent x : transparent = 00:20:15 v #20746 > > !\\(x, $'"leptos::leptos_dom::Transparent::new($0)"') 00:20:15 v #20747 > > 00:20:15 v #20748 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20749 > > │ ### closure_to_view 00:20:15 v #20750 > > 00:20:15 v #20751 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20752 > > inl closure_to_view (closure : rust.func0 view) : view = 00:20:15 v #20753 > > !\($'"leptos::prelude::IntoAny::into_any(move || !closure())"') 00:20:15 v #20754 > > 00:20:15 v #20755 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:15 v #20756 > > │ ### vec_to_view 00:20:15 v #20757 > > 00:20:15 v #20758 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:15 v #20759 > > inl vec_to_view (views : am'.vec view) : view = 00:20:15 v #20760 > > !\\(views, $'"leptos::prelude::IntoAny::into_any($0)"') 00:20:16 v #20761 > > 00:20:16 v #20762 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20763 > > │ ### view_list_to_view 00:20:16 v #20764 > > 00:20:16 v #20765 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20766 > > inl view_list_to_view (views : list view) : view = 00:20:16 v #20767 > > views 00:20:16 v #20768 > > |> am'.new_vec 00:20:16 v #20769 > > |> vec_to_view 00:20:16 v #20770 > > 00:20:16 v #20771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20772 > > │ ### to_fragment 00:20:16 v #20773 > > 00:20:16 v #20774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20775 > > inl to_fragment x : fragment = 00:20:16 v #20776 > > $'!x |> unbox' 00:20:16 v #20777 > > 00:20:16 v #20778 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20779 > > │ ### text_to_view 00:20:16 v #20780 > > 00:20:16 v #20781 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20782 > > inl text_to_view (text : string) : view = 00:20:16 v #20783 > > inl text = text |> sm'.to_std_string 00:20:16 v #20784 > > !\\(text, 00:20:16 v #20785 > > $'"leptos::prelude::IntoAny::into_any(leptos::prelude::IntoView::into_view($0))" 00:20:16 v #20786 > > ') 00:20:16 v #20787 > > 00:20:16 v #20788 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20789 > > │ ### text_to_fragment 00:20:16 v #20790 > > 00:20:16 v #20791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20792 > > inl text_to_fragment (text : string) : fragment = 00:20:16 v #20793 > > text 00:20:16 v #20794 > > |> text_to_view 00:20:16 v #20795 > > |> view_to_fragment 00:20:16 v #20796 > > 00:20:16 v #20797 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20798 > > │ ### macro_to_view 00:20:16 v #20799 > > 00:20:16 v #20800 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20801 > > inl macro_to_view (macro : string) : view = 00:20:16 v #20802 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:16 v #20803 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:16 v #20804 > > !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " + 00:20:16 v #20805 > > !macro + " })"') 00:20:16 v #20806 > > 00:20:16 v #20807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:16 v #20808 > > │ ### macro_to_view' 00:20:16 v #20809 > > 00:20:16 v #20810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:16 v #20811 > > inl macro_to_view' (macro : string) : view' infer = 00:20:16 v #20812 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:16 v #20813 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:16 v #20814 > > !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + " 00:20:16 v #20815 > > })"') 00:20:17 v #20816 > > 00:20:17 v #20817 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20818 > > │ ### macro_to_view'' 00:20:17 v #20819 > > 00:20:17 v #20820 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20821 > > inl macro_to_view'' (macro : string) : view' infer = 00:20:17 v #20822 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:17 v #20823 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:17 v #20824 > > !\($'"leptos::prelude::view\! { " + !macro + " }"') 00:20:17 v #20825 > > 00:20:17 v #20826 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20827 > > │ ### macro_to_view''' 00:20:17 v #20828 > > 00:20:17 v #20829 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20830 > > inl macro_to_view''' (macro : string) : view' _ = 00:20:17 v #20831 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:17 v #20832 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:17 v #20833 > > !\($'"leptos::IntoView::into_view(leptos::prelude::view\! { " + !macro + " 00:20:17 v #20834 > > })"') 00:20:17 v #20835 > > 00:20:17 v #20836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20837 > > │ ### into_any_view 00:20:17 v #20838 > > 00:20:17 v #20839 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20840 > > inl into_any_view (view : view' _) : view = 00:20:17 v #20841 > > !\\(view, $'"leptos::prelude::IntoAny::into_any($0)"') 00:20:17 v #20842 > > 00:20:17 v #20843 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20844 > > │ ### into_any_view' 00:20:17 v #20845 > > 00:20:17 v #20846 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20847 > > inl into_any_view' (view : view' _) : view = 00:20:17 v #20848 > > !\\(view, $'"&leptos::prelude::IntoAny::into_any($0)"') 00:20:17 v #20849 > > 00:20:17 v #20850 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20851 > > │ ### transparent_to_view 00:20:17 v #20852 > > 00:20:17 v #20853 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20854 > > inl transparent_to_view (transparent : transparent) : view = 00:20:17 v #20855 > > !\\(transparent, $'"leptos::prelude::IntoAny::into_any($0)"') 00:20:17 v #20856 > > 00:20:17 v #20857 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20858 > > │ ### transparent_to_fragment 00:20:17 v #20859 > > 00:20:17 v #20860 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20861 > > inl transparent_to_fragment (transparent : transparent) : fragment = 00:20:17 v #20862 > > transparent 00:20:17 v #20863 > > |> transparent_to_view 00:20:17 v #20864 > > |> view_to_fragment 00:20:17 v #20865 > > 00:20:17 v #20866 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:17 v #20867 > > │ ### macro_to_element 00:20:17 v #20868 > > 00:20:17 v #20869 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:17 v #20870 > > inl macro_to_element (view : string) : view' (html_element _) = 00:20:17 v #20871 > > view |> macro_to_view_trait |> view_trait_to_element 00:20:18 v #20872 > > 00:20:18 v #20873 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20874 > > │ ### transparents_fragment 00:20:18 v #20875 > > 00:20:18 v #20876 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20877 > > inl transparents_fragment (items : array_base transparent) : fragment = 00:20:18 v #20878 > > inl items = items |> am'.to_vec 00:20:18 v #20879 > > !\\((items, transparent_to_view), $'"$0.iter().map(|x| 00:20:18 v #20880 > > $1(x.clone())).collect::<Fragment>()"') 00:20:18 v #20881 > > 00:20:18 v #20882 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20883 > > │ ### new_text 00:20:18 v #20884 > > 00:20:18 v #20885 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20886 > > inl new_text (text : string) : text = 00:20:18 v #20887 > > !\\(text, $'"leptos::tachys::renderer::dom::Dom::create_text_node(&*$0)"') 00:20:18 v #20888 > > 00:20:18 v #20889 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20890 > > │ ### text_view 00:20:18 v #20891 > > 00:20:18 v #20892 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20893 > > inl text_view (text : string) : view = 00:20:18 v #20894 > > text 00:20:18 v #20895 > > |> text_to_view 00:20:18 v #20896 > > 00:20:18 v #20897 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20898 > > │ ### text_fragment 00:20:18 v #20899 > > 00:20:18 v #20900 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20901 > > inl text_fragment (text : string) : fragment = 00:20:18 v #20902 > > text 00:20:18 v #20903 > > |> text_view 00:20:18 v #20904 > > |> view_to_fragment 00:20:18 v #20905 > > 00:20:18 v #20906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20907 > > │ ### provide_meta_context 00:20:18 v #20908 > > 00:20:18 v #20909 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20910 > > inl provide_meta_context () = 00:20:18 v #20911 > > (!\($'"true; leptos_meta::provide_meta_context()"') : bool) |> ignore 00:20:18 v #20912 > > 00:20:18 v #20913 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:18 v #20914 > > │ ### provide_context 00:20:18 v #20915 > > 00:20:18 v #20916 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:18 v #20917 > > inl provide_context forall t. (x : t) = 00:20:18 v #20918 > > (!\\(x, $'$"true; 00:20:18 v #20919 > > leptos::context::provide_context::<std::sync::Arc<`t>>($0)"') : bool) |> ignore 00:20:19 v #20920 > > 00:20:19 v #20921 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20922 > > │ ### create_signal 00:20:19 v #20923 > > 00:20:19 v #20924 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20925 > > inl create_signal forall t. (value : t) : read_signal t * write_signal t = 00:20:19 v #20926 > > !\\(value, $'$"leptos::prelude::signal($0)"') 00:20:19 v #20927 > > 00:20:19 v #20928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20929 > > │ ### new_rw_signal 00:20:19 v #20930 > > 00:20:19 v #20931 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20932 > > inl new_rw_signal forall t. (value : t) : rw_signal t = 00:20:19 v #20933 > > !\\(value, $'$"leptos::prelude::RwSignal::new($0)"') 00:20:19 v #20934 > > 00:20:19 v #20935 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20936 > > │ ### new_arc_rw_signal 00:20:19 v #20937 > > 00:20:19 v #20938 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20939 > > inl new_arc_rw_signal forall t. (value : t) : arc_rw_signal t = 00:20:19 v #20940 > > !\\(value, $'$"leptos::prelude::ArcRwSignal::new($0)"') 00:20:19 v #20941 > > 00:20:19 v #20942 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20943 > > │ ### read_only 00:20:19 v #20944 > > 00:20:19 v #20945 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20946 > > inl read_only forall t. (value : rw_signal t) : read_signal t = 00:20:19 v #20947 > > !\\(value, $'$"leptos::prelude::RwSignal::read_only(&$0)"') 00:20:19 v #20948 > > 00:20:19 v #20949 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20950 > > │ ### write_only 00:20:19 v #20951 > > 00:20:19 v #20952 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20953 > > inl write_only forall t. (value : rw_signal t) : write_signal t = 00:20:19 v #20954 > > !\\(value, $'$"leptos::prelude::RwSignal::write_only(&$0)"') 00:20:19 v #20955 > > 00:20:19 v #20956 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:19 v #20957 > > │ ### typecheck_signal 00:20:19 v #20958 > > 00:20:19 v #20959 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:19 v #20960 > > inl typecheck_signal forall (t : * -> *) u. (signal : t u) : () = 00:20:19 v #20961 > > real 00:20:19 v #20962 > > typecase t with 00:20:19 v #20963 > > | signal => () 00:20:19 v #20964 > > | arc_signal => () 00:20:19 v #20965 > > | rw_signal => () 00:20:19 v #20966 > > | arc_rw_signal => () 00:20:19 v #20967 > > | read_signal => () 00:20:19 v #20968 > > | arc_read_signal => () 00:20:19 v #20969 > > | write_signal => () 00:20:19 v #20970 > > | arc_write_signal => () 00:20:19 v #20971 > > | memo => () 00:20:19 v #20972 > > | arc_memo => () 00:20:19 v #20973 > > | _ => error_type `(()) ("invalid signal", ``(t u)) 00:20:20 v #20974 > > 00:20:20 v #20975 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #20976 > > │ ### memo_get' 00:20:20 v #20977 > > 00:20:20 v #20978 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #20979 > > inl memo_get' forall t. (memo : memo t) : t = 00:20:20 v #20980 > > !\\(memo, $'$"$0()"') 00:20:20 v #20981 > > 00:20:20 v #20982 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #20983 > > │ ### signal_get' 00:20:20 v #20984 > > 00:20:20 v #20985 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #20986 > > inl signal_get' forall (t : * -> *) u. (signal : t u) : u = 00:20:20 v #20987 > > signal |> typecheck_signal 00:20:20 v #20988 > > inl code = 00:20:20 v #20989 > > real 00:20:20 v #20990 > > typecase t with 00:20:20 v #20991 > > | signal => $'$"leptos::prelude::Signal::get(&$0)"' : string 00:20:20 v #20992 > > | arc_signal => $'$"leptos::prelude::ArcSignal::get(&$0)"' : string 00:20:20 v #20993 > > | rw_signal => $'$"leptos::prelude::RwSignal::get(&$0)"' : string 00:20:20 v #20994 > > | arc_rw_signal => $'$"leptos::prelude::ArcRwSignal::get(&$0)"' : 00:20:20 v #20995 > > string 00:20:20 v #20996 > > | read_signal => $'$"leptos::prelude::ReadSignal::get(&$0)"' : 00:20:20 v #20997 > > string 00:20:20 v #20998 > > | arc_read_signal => $'$"leptos::prelude::ArcReadSignal::get(&$0)"' 00:20:20 v #20999 > > : string 00:20:20 v #21000 > > | write_signal => $'$"leptos::prelude::WriteSignal::get(&$0)"' : 00:20:20 v #21001 > > string 00:20:20 v #21002 > > | arc_write_signal => 00:20:20 v #21003 > > $'$"leptos::prelude::ArcWriteSignal::get(&$0)"' : string 00:20:20 v #21004 > > | memo => $'$"leptos::prelude::Memo::get(&$0)"' : string 00:20:20 v #21005 > > | arc_memo => $'$"leptos::prelude::ArcMemo::get(&$0)"' : string 00:20:20 v #21006 > > !\\(signal, code) : u 00:20:20 v #21007 > > 00:20:20 v #21008 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #21009 > > │ ### signal_get signal 00:20:20 v #21010 > > 00:20:20 v #21011 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #21012 > > instance signal_get signal = signal_get' 00:20:20 v #21013 > > instance signal_get arc_signal = signal_get' 00:20:20 v #21014 > > 00:20:20 v #21015 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #21016 > > │ ### signal_get rw_signal 00:20:20 v #21017 > > 00:20:20 v #21018 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #21019 > > instance signal_get rw_signal = signal_get' 00:20:20 v #21020 > > instance signal_get arc_rw_signal = signal_get' 00:20:20 v #21021 > > 00:20:20 v #21022 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #21023 > > │ ### signal_get read_signal 00:20:20 v #21024 > > 00:20:20 v #21025 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #21026 > > instance signal_get read_signal = signal_get' 00:20:20 v #21027 > > instance signal_get arc_read_signal = signal_get' 00:20:20 v #21028 > > 00:20:20 v #21029 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:20 v #21030 > > │ ### signal_get memo 00:20:20 v #21031 > > 00:20:20 v #21032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:20 v #21033 > > instance signal_get memo = signal_get' 00:20:20 v #21034 > > instance signal_get arc_memo = signal_get' 00:20:21 v #21035 > > 00:20:21 v #21036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21037 > > │ ### signal_update' 00:20:21 v #21038 > > 00:20:21 v #21039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21040 > > inl signal_update' forall (t : * -> *) u. (fn : u -> u) (signal : t u) : () = 00:20:21 v #21041 > > signal |> typecheck_signal 00:20:21 v #21042 > > inl code = 00:20:21 v #21043 > > real 00:20:21 v #21044 > > typecase t with 00:20:21 v #21045 > > | signal => $'$"true; leptos::prelude::Signal::update(&$0, |x: &mut 00:20:21 v #21046 > > /*"' : string 00:20:21 v #21047 > > | arc_signal => $'$"true; leptos::prelude::ArcSignal::update(&$0, 00:20:21 v #21048 > > |x: &mut /*"' : string 00:20:21 v #21049 > > | rw_signal => $'$"true; leptos::prelude::RwSignal::update(&$0, |x: 00:20:21 v #21050 > > &mut /*"' : string 00:20:21 v #21051 > > | arc_rw_signal => $'$"true; 00:20:21 v #21052 > > leptos::prelude::ArcRwSignal::update(&$0, |x: &mut /*"' : string 00:20:21 v #21053 > > | read_signal => $'$"true; leptos::prelude::ReadSignal::update(&$0, 00:20:21 v #21054 > > |x: &mut /*"' : string 00:20:21 v #21055 > > | arc_read_signal => $'$"true; 00:20:21 v #21056 > > leptos::prelude::ArcReadSignal::update(&$0, |x: &mut /*"' : string 00:20:21 v #21057 > > | write_signal => $'$"true; 00:20:21 v #21058 > > leptos::prelude::WriteSignal::update(&$0, |x: &mut /*"' : string 00:20:21 v #21059 > > | arc_write_signal => $'$"true; 00:20:21 v #21060 > > leptos::prelude::ArcWriteSignal::update(&$0, |x: &mut /*"' : string 00:20:21 v #21061 > > | memo => $'$"true; leptos::prelude::Memo::update(&$0, |x: &mut /*"' 00:20:21 v #21062 > > : string 00:20:21 v #21063 > > | arc_memo => $'$"true; leptos::prelude::ArcMemo::update(&$0, |x: 00:20:21 v #21064 > > &mut /*"' : string 00:20:21 v #21065 > > (!\\(signal, code) : bool) |> ignore 00:20:21 v #21066 > > (null () : rust.type_emit u) |> ignore 00:20:21 v #21067 > > (!\\(fn, $'"*/ | { *x = $0(x.clone()) }); //"') : bool) |> ignore 00:20:21 v #21068 > > 00:20:21 v #21069 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21070 > > │ ### signal_update rw_signal 00:20:21 v #21071 > > 00:20:21 v #21072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21073 > > instance signal_update rw_signal = signal_update' 00:20:21 v #21074 > > instance signal_update arc_rw_signal = signal_update' 00:20:21 v #21075 > > 00:20:21 v #21076 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21077 > > │ ### signal_update write_signal 00:20:21 v #21078 > > 00:20:21 v #21079 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21080 > > instance signal_update write_signal = signal_update' 00:20:21 v #21081 > > instance signal_update arc_write_signal = signal_update' 00:20:21 v #21082 > > 00:20:21 v #21083 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21084 > > │ ### signal_get_untracked' 00:20:21 v #21085 > > 00:20:21 v #21086 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21087 > > inl signal_get_untracked' forall (t : * -> *) u. (signal : t u) : u = 00:20:21 v #21088 > > signal |> typecheck_signal 00:20:21 v #21089 > > inl signal = signal |> rust.box_pin 00:20:21 v #21090 > > inl code = 00:20:21 v #21091 > > real 00:20:21 v #21092 > > typecase t with 00:20:21 v #21093 > > | signal => $'$"leptos::prelude::Signal::get_untracked(&$0)"' : 00:20:21 v #21094 > > string 00:20:21 v #21095 > > | arc_signal => $'$"leptos::prelude::ArcSignal::get_untracked(&$0)"' 00:20:21 v #21096 > > : string 00:20:21 v #21097 > > | rw_signal => $'$"leptos::prelude::RwSignal::get_untracked(&$0)"' : 00:20:21 v #21098 > > string 00:20:21 v #21099 > > | arc_rw_signal => 00:20:21 v #21100 > > $'$"leptos::prelude::ArcRwSignal::get_untracked(&$0)"' : string 00:20:21 v #21101 > > | read_signal => 00:20:21 v #21102 > > $'$"leptos::prelude::ReadSignal::get_untracked(&$0)"' : string 00:20:21 v #21103 > > | arc_read_signal => 00:20:21 v #21104 > > $'$"leptos::prelude::ArcReadSignal::get_untracked(&$0)"' : string 00:20:21 v #21105 > > | write_signal => 00:20:21 v #21106 > > $'$"leptos::prelude::WriteSignal::get_untracked(&$0)"' : string 00:20:21 v #21107 > > | arc_write_signal => 00:20:21 v #21108 > > $'$"leptos::prelude::ArcWriteSignal::get_untracked(&$0)"' : string 00:20:21 v #21109 > > | memo => $'$"leptos::prelude::Memo::get_untracked(&$0)"' : string 00:20:21 v #21110 > > | arc_memo => $'$"leptos::prelude::ArcMemo::get_untracked(&$0)"' : 00:20:21 v #21111 > > string 00:20:21 v #21112 > > !\\(signal, code) : u 00:20:21 v #21113 > > 00:20:21 v #21114 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21115 > > │ ### signal_get_untracked rw_signal 00:20:21 v #21116 > > 00:20:21 v #21117 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21118 > > instance signal_get_untracked rw_signal = signal_get_untracked' 00:20:21 v #21119 > > instance signal_get_untracked arc_rw_signal = signal_get_untracked' 00:20:21 v #21120 > > 00:20:21 v #21121 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:21 v #21122 > > │ ### signal_get_untracked read_signal 00:20:21 v #21123 > > 00:20:21 v #21124 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:21 v #21125 > > instance signal_get_untracked read_signal = signal_get_untracked' 00:20:21 v #21126 > > instance signal_get_untracked arc_read_signal = signal_get_untracked' 00:20:22 v #21127 > > 00:20:22 v #21128 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21129 > > │ ### signal_get_untracked memo 00:20:22 v #21130 > > 00:20:22 v #21131 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21132 > > instance signal_get_untracked memo = signal_get_untracked' 00:20:22 v #21133 > > instance signal_get_untracked arc_memo = signal_get_untracked' 00:20:22 v #21134 > > 00:20:22 v #21135 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21136 > > │ ### signal_set' 00:20:22 v #21137 > > 00:20:22 v #21138 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21139 > > inl signal_set' forall (t : * -> *) u. (value : u) (signal : t u) = 00:20:22 v #21140 > > signal |> typecheck_signal 00:20:22 v #21141 > > inl code = 00:20:22 v #21142 > > real 00:20:22 v #21143 > > typecase t with 00:20:22 v #21144 > > | signal => $'$"true; leptos::prelude::Signal::set(&$0, $1); //"' : 00:20:22 v #21145 > > string 00:20:22 v #21146 > > | arc_signal => $'$"true; leptos::prelude::ArcSignal::set(&$0, $1); 00:20:22 v #21147 > > //"' : string 00:20:22 v #21148 > > | rw_signal => $'$"true; leptos::prelude::RwSignal::set(&$0, $1); 00:20:22 v #21149 > > //"' : string 00:20:22 v #21150 > > | arc_rw_signal => $'$"true; leptos::prelude::ArcRwSignal::set(&$0, 00:20:22 v #21151 > > $1); //"' : string 00:20:22 v #21152 > > | read_signal => $'$"true; leptos::prelude::ReadSignal::set(&$0, 00:20:22 v #21153 > > $1); //"' : string 00:20:22 v #21154 > > | arc_read_signal => $'$"true; 00:20:22 v #21155 > > leptos::prelude::ArcReadSignal::set(&$0, $1); //"' : string 00:20:22 v #21156 > > | write_signal => $'$"true; leptos::prelude::WriteSignal::set(&$0, 00:20:22 v #21157 > > $1); //"' : string 00:20:22 v #21158 > > | arc_write_signal => $'$"true; 00:20:22 v #21159 > > leptos::prelude::ArcWriteSignal::set(&$0, $1); //"' : string 00:20:22 v #21160 > > | memo => $'$"true; leptos::prelude::Memo::set(&$0, $1); //"' : 00:20:22 v #21161 > > string 00:20:22 v #21162 > > | arc_memo => $'$"true; leptos::prelude::ArcMemo::set(&$0, $1); //"' 00:20:22 v #21163 > > : string 00:20:22 v #21164 > > (!\\((signal, value), code) : bool) |> ignore 00:20:22 v #21165 > > 00:20:22 v #21166 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21167 > > │ ### signal_set rw_signal 00:20:22 v #21168 > > 00:20:22 v #21169 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21170 > > instance signal_set rw_signal = signal_set' 00:20:22 v #21171 > > instance signal_set arc_rw_signal = signal_set' 00:20:22 v #21172 > > 00:20:22 v #21173 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21174 > > │ ### signal_set write_signal 00:20:22 v #21175 > > 00:20:22 v #21176 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21177 > > instance signal_set write_signal = signal_set' 00:20:22 v #21178 > > instance signal_set arc_write_signal = signal_set' 00:20:22 v #21179 > > 00:20:22 v #21180 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21181 > > │ ### new_local_resource 00:20:22 v #21182 > > 00:20:22 v #21183 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21184 > > inl new_local_resource forall t u. 00:20:22 v #21185 > > (source : () -> t) 00:20:22 v #21186 > > (fetcher : t -> async.future_pin u) 00:20:22 v #21187 > > : local_resource t u 00:20:22 v #21188 > > = 00:20:22 v #21189 > > // inl fetcher x = rust.move fun () => 00:20:22 v #21190 > > // fetcher x 00:20:22 v #21191 > > // inl fetcher = join fetcher 00:20:22 v #21192 > > // !\($'"leptos::create_local_resource(move || !source(), move |x| async 00:20:22 v #21193 > > move { !fetcher(x)().await })"') 00:20:22 v #21194 > > 00:20:22 v #21195 > > // --- 00:20:22 v #21196 > > 00:20:22 v #21197 > > // inl fn x = async.new_future fun () => 00:20:22 v #21198 > > // inl x' = fetcher x 00:20:22 v #21199 > > // x' |> async.await 00:20:22 v #21200 > > 00:20:22 v #21201 > > // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x| 00:20:22 v #21202 > > async move { $1(x).await })"') 00:20:22 v #21203 > > 00:20:22 v #21204 > > inl fetcher = fetcher |> rust.func1_from 00:20:22 v #21205 > > inl fetcher x = 00:20:22 v #21206 > > fetcher |> rust.func1_move x 00:20:22 v #21207 > > 00:20:22 v #21208 > > !\\((source, fetcher), $'"leptos::prelude::LocalResource::new(move || $0(), 00:20:22 v #21209 > > |x| async move { $1(x).await })"') 00:20:22 v #21210 > > 00:20:22 v #21211 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:22 v #21212 > > │ ### new_arc_local_resource 00:20:22 v #21213 > > 00:20:22 v #21214 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:22 v #21215 > > inl new_arc_local_resource forall t. 00:20:22 v #21216 > > (fetcher : () -> async.future_pin t) 00:20:22 v #21217 > > : arc_local_resource t 00:20:22 v #21218 > > = 00:20:22 v #21219 > > // inl fetcher x = rust.move fun () => 00:20:22 v #21220 > > // fetcher x 00:20:22 v #21221 > > // inl fetcher = join fetcher 00:20:22 v #21222 > > // !\($'"leptos::create_local_resource(move || !source(), move |x| async 00:20:22 v #21223 > > move { !fetcher(x)().await })"') 00:20:22 v #21224 > > 00:20:22 v #21225 > > // --- 00:20:22 v #21226 > > 00:20:22 v #21227 > > // inl fn x = async.new_future fun () => 00:20:22 v #21228 > > // inl x' = fetcher x 00:20:22 v #21229 > > // x' |> async.await 00:20:22 v #21230 > > 00:20:22 v #21231 > > // !\\((source, fn), $'"leptos::create_local_resource(move || $0(), |x| 00:20:22 v #21232 > > async move { $1(x).await })"') 00:20:22 v #21233 > > 00:20:22 v #21234 > > inl fetcher = fetcher |> rust.func0_from 00:20:22 v #21235 > > 00:20:22 v #21236 > > !\\(fetcher, $'"leptos::prelude::ArcLocalResource::new(|| async move { 00:20:22 v #21237 > > $0().await })"') 00:20:23 v #21238 > > 00:20:23 v #21239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:23 v #21240 > > │ ### new_resource 00:20:23 v #21241 > > 00:20:23 v #21242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:23 v #21243 > > // inl new_resource forall t u. (source : () -> t) (fetcher : t -> 00:20:23 v #21244 > > async.future_pin u) : resource t u = 00:20:23 v #21245 > > // inl source = join source 00:20:23 v #21246 > > // !\\(fetcher, $'"leptos::Resource::new(move || !source(), |x| async move { 00:20:23 v #21247 > > $0(x).await })"') 00:20:23 v #21248 > > 00:20:23 v #21249 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:23 v #21250 > > │ ### new_action 00:20:23 v #21251 > > 00:20:23 v #21252 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:23 v #21253 > > inl new_action forall t u. (action_fn : t -> async.future_pin u) : action t u = 00:20:23 v #21254 > > inl action_fn = action_fn |> rust.func1_from 00:20:23 v #21255 > > inl action_fn x = 00:20:23 v #21256 > > action_fn |> rust.func1_move x 00:20:23 v #21257 > > !\\(action_fn, $'"leptos::prelude::Action::new(move |value: 00:20:23 v #21258 > > &std::sync::Arc<`t>| $0(value.clone()))"') 00:20:23 v #21259 > > 00:20:23 v #21260 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:23 v #21261 > > │ ### new_arc_action 00:20:23 v #21262 > > 00:20:23 v #21263 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:23 v #21264 > > inl new_arc_action forall t u. (action_fn : t -> async.future_pin u) : 00:20:23 v #21265 > > arc_action t u = 00:20:23 v #21266 > > // inl action_fn = action_fn |> rust.func1_from 00:20:23 v #21267 > > inl action_fn = action_fn |> rust.func1_from 00:20:23 v #21268 > > inl action_fn x = 00:20:23 v #21269 > > action_fn |> rust.func1_move x 00:20:23 v #21270 > > !\\(action_fn, $'"leptos::prelude::ArcAction::new(move |value: 00:20:23 v #21271 > > &std::sync::Arc<`t>| $0(value.clone()))"') 00:20:23 v #21272 > > 00:20:23 v #21273 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:23 v #21274 > > │ ### action_dispatch 00:20:23 v #21275 > > 00:20:23 v #21276 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:23 v #21277 > > inl action_dispatch forall t u. (value : heap t) (action : action (heap t) u) : 00:20:23 v #21278 > > () = 00:20:23 v #21279 > > (!\\((action, value), $'"true; leptos::prelude::Action::dispatch(&$0, 00:20:23 v #21280 > > $1.clone())"') : bool) |> ignore 00:20:23 v #21281 > > 00:20:23 v #21282 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:23 v #21283 > > │ ### arc_action_dispatch 00:20:23 v #21284 > > 00:20:23 v #21285 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:23 v #21286 > > inl arc_action_dispatch forall t u. (value : heap t) (action : arc_action (heap 00:20:23 v #21287 > > t) u) : () = 00:20:23 v #21288 > > (!\\((action, value), $'"true; leptos::prelude::ArcAction::dispatch(&$0, 00:20:23 v #21289 > > $1.clone())"') : bool) |> ignore 00:20:24 v #21290 > > 00:20:24 v #21291 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21292 > > │ ### action_input 00:20:24 v #21293 > > 00:20:24 v #21294 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21295 > > inl action_input forall t u. (action : action (heap t) u) : rw_signal 00:20:24 v #21296 > > (optionm'.option' t) = 00:20:24 v #21297 > > !\\(action, $'"leptos::prelude::Action::input(&$0)"') 00:20:24 v #21298 > > 00:20:24 v #21299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21300 > > │ ### action_pending 00:20:24 v #21301 > > 00:20:24 v #21302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21303 > > inl action_pending forall t u. (action : action (heap t) u) : memo bool = 00:20:24 v #21304 > > !\\(action, $'"leptos::prelude::Action::pending(&$0)"') 00:20:24 v #21305 > > 00:20:24 v #21306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21307 > > │ ### arc_action_pending 00:20:24 v #21308 > > 00:20:24 v #21309 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21310 > > inl arc_action_pending forall t u. (action : arc_action (heap t) u) : arc_memo 00:20:24 v #21311 > > bool = 00:20:24 v #21312 > > !\\(action, $'"leptos::prelude::ArcAction::pending(&$0)"') 00:20:24 v #21313 > > 00:20:24 v #21314 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21315 > > │ ### action_value 00:20:24 v #21316 > > 00:20:24 v #21317 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21318 > > inl action_value forall t u. (action : action (heap t) u) : rw_signal 00:20:24 v #21319 > > (optionm'.option' u) = 00:20:24 v #21320 > > !\\(action, $'"leptos::prelude::Action::value(&$0)"') 00:20:24 v #21321 > > 00:20:24 v #21322 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21323 > > │ ### arc_action_value 00:20:24 v #21324 > > 00:20:24 v #21325 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21326 > > inl arc_action_value forall t u. (action : arc_action (heap t) u) : 00:20:24 v #21327 > > arc_rw_signal (optionm'.option' u) = 00:20:24 v #21328 > > !\\(action, $'"leptos::prelude::ArcAction::value(&$0)"') 00:20:24 v #21329 > > 00:20:24 v #21330 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:24 v #21331 > > │ ### use_context 00:20:24 v #21332 > > 00:20:24 v #21333 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:24 v #21334 > > inl use_context forall t. () : optionm'.option' t = 00:20:24 v #21335 > > !\($'"leptos::context::use_context::<std::sync::Arc<`t>>()"') 00:20:25 v #21336 > > 00:20:25 v #21337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 v #21338 > > │ ### local_resource_loading 00:20:25 v #21339 > > 00:20:25 v #21340 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 v #21341 > > inl local_resource_loading forall t u. (resource : local_resource t u) : signal 00:20:25 v #21342 > > bool = 00:20:25 v #21343 > > !\\(resource, $'$"leptos::prelude::pending(&$0).into()"') 00:20:25 v #21344 > > 00:20:25 v #21345 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 v #21346 > > │ ### arc_local_resource_loading 00:20:25 v #21347 > > 00:20:25 v #21348 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 v #21349 > > inl arc_local_resource_loading forall t. (resource : arc_local_resource t) : 00:20:25 v #21350 > > arc_signal bool = 00:20:25 v #21351 > > !\\(resource, $'$"leptos::prelude::Submission::pending(&$0.into()).into()"') 00:20:25 v #21352 > > 00:20:25 v #21353 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 v #21354 > > │ ### resource_get 00:20:25 v #21355 > > 00:20:25 v #21356 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 v #21357 > > inl resource_get forall t u. (resource : resource t u) : optionm'.option' u = 00:20:25 v #21358 > > !\\(resource, $'$"leptos::prelude::Resource::get(&$0)"') 00:20:25 v #21359 > > 00:20:25 v #21360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 v #21361 > > │ ### local_resource_get 00:20:25 v #21362 > > 00:20:25 v #21363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 v #21364 > > inl local_resource_get forall t u. (resource : local_resource t u) : 00:20:25 v #21365 > > optionm'.option' u = 00:20:25 v #21366 > > !\\(resource, $'$"leptos::prelude::LocalResource::get(&$0)"') 00:20:25 v #21367 > > 00:20:25 v #21368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:25 v #21369 > > │ ### arc_local_resource_get 00:20:25 v #21370 > > 00:20:25 v #21371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:25 v #21372 > > inl arc_local_resource_get forall t. (resource : arc_local_resource t) : 00:20:25 v #21373 > > optionm'.option' t = 00:20:25 v #21374 > > !\\(resource, $'$"Option::map(leptos::prelude::ArcLocalResource::get(&$0), 00:20:25 v #21375 > > |x| *x)"') 00:20:26 v #21376 > > 00:20:26 v #21377 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21378 > > │ ### resource_with 00:20:26 v #21379 > > 00:20:26 v #21380 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21381 > > inl resource_with forall t u v. (resource : resource t u) (fn : optionm'.option' 00:20:26 v #21382 > > u -> v) : v = 00:20:26 v #21383 > > !\\((resource, fn), $'$"leptos::prelude::SignalWith::with(&$0, |x| 00:20:26 v #21384 > > $1(x.clone()))"') 00:20:26 v #21385 > > 00:20:26 v #21386 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21387 > > │ ### new_effect 00:20:26 v #21388 > > 00:20:26 v #21389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21390 > > inl new_effect (fn : () -> ()) : () = 00:20:26 v #21391 > > inl fn = fn |> rust.func0_from 00:20:26 v #21392 > > (!\($'"true; leptos::prelude::Effect::new(move |_| { !fn() })"') : bool) |> 00:20:26 v #21393 > > ignore 00:20:26 v #21394 > > 00:20:26 v #21395 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21396 > > │ ### interval_handle_clear 00:20:26 v #21397 > > 00:20:26 v #21398 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21399 > > inl interval_handle_clear (interval_handle : interval_handle) = 00:20:26 v #21400 > > (!\\(interval_handle, $'$"true; 00:20:26 v #21401 > > leptos::leptos_dom::helpers::IntervalHandle::clear(&$0)"') : bool) |> ignore 00:20:26 v #21402 > > 00:20:26 v #21403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21404 > > │ ### set_interval_with_handle 00:20:26 v #21405 > > 00:20:26 v #21406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21407 > > inl set_interval_with_handle 00:20:26 v #21408 > > (fn : () -> ()) 00:20:26 v #21409 > > (interval_millis : date_time.duration) 00:20:26 v #21410 > > : resultm.result' interval_handle wasm.js_value 00:20:26 v #21411 > > = 00:20:26 v #21412 > > inl fn = fn |> rust.func0_from 00:20:26 v #21413 > > !\\((fn, interval_millis), $'$"leptos::set_interval_with_handle(move || 00:20:26 v #21414 > > $0(), $1)"') 00:20:26 v #21415 > > 00:20:26 v #21416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21417 > > │ ### new_memo 00:20:26 v #21418 > > 00:20:26 v #21419 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21420 > > inl new_memo forall t. (fn : () -> t) : memo t = 00:20:26 v #21421 > > // inl fn = fn |> rust.func0_from 00:20:26 v #21422 > > !\\(fn, $'"leptos::prelude::Memo::new(move |_| { $0() })"') 00:20:26 v #21423 > > 00:20:26 v #21424 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:26 v #21425 > > │ ### new_arc_memo 00:20:26 v #21426 > > 00:20:26 v #21427 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:26 v #21428 > > inl new_arc_memo forall t. (fn : () -> t) : arc_memo t = 00:20:26 v #21429 > > // inl fn = fn |> rust.func0_from 00:20:26 v #21430 > > !\\(fn, $'"leptos::prelude::ArcMemo::new(move |_| { $0() })"') 00:20:27 v #21431 > > 00:20:27 v #21432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:27 v #21433 > > │ ### window 00:20:27 v #21434 > > 00:20:27 v #21435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 v #21436 > > let window () : wasm.window = 00:20:27 v #21437 > > !\($'"leptos::prelude::window()"') 00:20:27 v #21438 > > 00:20:27 v #21439 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:27 v #21440 > > │ ### bool_prop 00:20:27 v #21441 > > 00:20:27 v #21442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 v #21443 > > inl bool_prop (prop : string) (fn : () -> bool) : string = 00:20:27 v #21444 > > inl fn = join fn 00:20:27 v #21445 > > $'"" + !prop + "={move || !fn()}"' 00:20:27 v #21446 > > 00:20:27 v #21447 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:27 v #21448 > > │ ### concat_props 00:20:27 v #21449 > > 00:20:27 v #21450 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 v #21451 > > inl concat_props props = 00:20:27 v #21452 > > ("", props) 00:20:27 v #21453 > > ||> listm.fold fun acc (x : string) => 00:20:27 v #21454 > > $'" " + !x + !acc + ""' 00:20:27 v #21455 > > 00:20:27 v #21456 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:27 v #21457 > > │ ### move_to_fragment 00:20:27 v #21458 > > 00:20:27 v #21459 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 v #21460 > > inl move_to_fragment fn = 00:20:27 v #21461 > > fn 00:20:27 v #21462 > > |> rust.move 00:20:27 v #21463 > > |> rust.func0_move 00:20:27 v #21464 > > 00:20:27 v #21465 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:27 v #21466 > > │ ### tag_raw 00:20:27 v #21467 > > 00:20:27 v #21468 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:27 v #21469 > > inl tag_raw tag props children = 00:20:27 v #21470 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:27 v #21471 > > leptos::prelude::*;\n//\"\n#endif" 00:20:27 v #21472 > > inl tag : string = tag 00:20:27 v #21473 > > inl props = props |> concat_props 00:20:27 v #21474 > > inl children = 00:20:27 v #21475 > > children () 00:20:27 v #21476 > > |> fragment_to_view 00:20:27 v #21477 > > // inl children = children |> rust.box_pin 00:20:27 v #21478 > > // inl children = join children 00:20:27 v #21479 > > // inl children = join children 00:20:27 v #21480 > > // inl children = join children 00:20:27 v #21481 > > // inl children = children >> fragment_to_view 00:20:27 v #21482 > > // inl children : rust.func0 view = !\\(children, $'$"(|| $0)()"') 00:20:27 v #21483 > > $'"<" + !tag + " " + !props + ">move || { !children }</" + !tag + ">"' 00:20:28 v #21484 > > 00:20:28 v #21485 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21486 > > │ ### tag_element 00:20:28 v #21487 > > 00:20:28 v #21488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21489 > > inl tag_element tag props children : view' (html_element _) = 00:20:28 v #21490 > > tag_raw tag props children 00:20:28 v #21491 > > |> macro_to_element 00:20:28 v #21492 > > 00:20:28 v #21493 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21494 > > │ ### tag_closed_raw 00:20:28 v #21495 > > 00:20:28 v #21496 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21497 > > inl tag_closed_raw tag props = 00:20:28 v #21498 > > inl tag : string = tag 00:20:28 v #21499 > > inl props = props |> concat_props 00:20:28 v #21500 > > $'"<" + !tag + " " + !props + " />"' 00:20:28 v #21501 > > 00:20:28 v #21502 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21503 > > │ ### tag_closed 00:20:28 v #21504 > > 00:20:28 v #21505 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21506 > > inl tag_closed tag props : view' (html_element _) = 00:20:28 v #21507 > > tag_closed_raw tag props 00:20:28 v #21508 > > |> macro_to_element 00:20:28 v #21509 > > 00:20:28 v #21510 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21511 > > │ ### for 00:20:28 v #21512 > > 00:20:28 v #21513 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21514 > > inl for props : view = 00:20:28 v #21515 > > tag_closed_raw "leptos::prelude::For" props 00:20:28 v #21516 > > |> macro_to_view 00:20:28 v #21517 > > 00:20:28 v #21518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21519 > > │ ### for 00:20:28 v #21520 > > 00:20:28 v #21521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21522 > > inl for forall t u (signal : * -> *). 00:20:28 v #21523 > > (signal : signal (am'.vec t)) 00:20:28 v #21524 > > (key_fn : t -> u) 00:20:28 v #21525 > > (children' : t -> fragment) 00:20:28 v #21526 > > : view 00:20:28 v #21527 > > = 00:20:28 v #21528 > > signal |> typecheck_signal 00:20:28 v #21529 > > inl signal = signal |> rust.emit 00:20:28 v #21530 > > inl key_fn = key_fn |> rust.func1_from 00:20:28 v #21531 > > inl key_fn x = 00:20:28 v #21532 > > key_fn |> rust.func1_move x 00:20:28 v #21533 > > inl children' = (children' >> fragment_to_view) |> rust.func1_from 00:20:28 v #21534 > > inl children' x = 00:20:28 v #21535 > > children' |> rust.func1_move x 00:20:28 v #21536 > > for [[ 00:20:28 v #21537 > > $'"each=!signal"' 00:20:28 v #21538 > > $'"key=move |x| !key_fn(x.to_owned())"' 00:20:28 v #21539 > > $'"let:x"' 00:20:28 v #21540 > > $'"children=move |x| !children'(x)"' 00:20:28 v #21541 > > ]] 00:20:28 v #21542 > > 00:20:28 v #21543 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:28 v #21544 > > │ ### show 00:20:28 v #21545 > > 00:20:28 v #21546 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:28 v #21547 > > inl show props : view = 00:20:28 v #21548 > > tag_closed_raw "leptos::prelude::Show" props 00:20:28 v #21549 > > |> macro_to_view 00:20:29 v #21550 > > 00:20:29 v #21551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:29 v #21552 > > │ ### show 00:20:29 v #21553 > > 00:20:29 v #21554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:29 v #21555 > > inl show (when_fn : () -> bool) (fallback : () -> view) (children : () -> 00:20:29 v #21556 > > fragment) : view = 00:20:29 v #21557 > > inl when_fn = join when_fn 00:20:29 v #21558 > > inl when_fn = join when_fn 00:20:29 v #21559 > > inl fallback = join fallback 00:20:29 v #21560 > > inl children = join children 00:20:29 v #21561 > > show [[ 00:20:29 v #21562 > > $'"when=move || !when_fn()"' 00:20:29 v #21563 > > $'"fallback=move || !fallback()"' 00:20:29 v #21564 > > $'"children=std::rc::Rc::new(move || !children())"' 00:20:29 v #21565 > > ]] 00:20:29 v #21566 > > 00:20:29 v #21567 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:29 v #21568 > > │ ### use_location 00:20:29 v #21569 > > 00:20:29 v #21570 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:29 v #21571 > > inl use_location () : location = 00:20:29 v #21572 > > !\($'"leptos_router::hooks::use_location()"') 00:20:29 v #21573 > > 00:20:29 v #21574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:29 v #21575 > > │ ### use_navigate 00:20:29 v #21576 > > 00:20:29 v #21577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:29 v #21578 > > inl use_navigate () : string -> () = 00:20:29 v #21579 > > inl navigate : threading.arc (rust.dyn' (rust.action_fn2 (rust.ref sm'.str) 00:20:29 v #21580 > > navigate_options)) = 00:20:29 v #21581 > > !\($'"std::sync::Arc::new(leptos_router::hooks::use_navigate())"') 00:20:29 v #21582 > > fun url => 00:20:29 v #21583 > > inl url = url |> sm'.as_str 00:20:29 v #21584 > > !\\((navigate, url), $'"$0($1, Default::default())"') 00:20:29 v #21585 > > 00:20:29 v #21586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:29 v #21587 > > │ ### location_hash 00:20:29 v #21588 > > 00:20:29 v #21589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:29 v #21590 > > inl location_hash (location : location) : memo sm'.std_string = 00:20:29 v #21591 > > !\\(location, $'"$0.hash"') 00:20:29 v #21592 > > 00:20:29 v #21593 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:29 v #21594 > > │ ### location_pathname 00:20:29 v #21595 > > 00:20:29 v #21596 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:29 v #21597 > > inl location_pathname (location : location) : memo sm'.std_string = 00:20:29 v #21598 > > !\\(location, $'"$0.pathname"') 00:20:30 v #21599 > > 00:20:30 v #21600 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #21601 > > │ ### location_search 00:20:30 v #21602 > > 00:20:30 v #21603 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #21604 > > inl location_search (location : location) : memo sm'.std_string = 00:20:30 v #21605 > > !\\(location, $'"$0.search"') 00:20:30 v #21606 > > 00:20:30 v #21607 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #21608 > > │ ### url_try_from 00:20:30 v #21609 > > 00:20:30 v #21610 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #21611 > > inl url_try_from (s : rust.ref sm'.str) : resultm.result' url sm'.std_string = 00:20:30 v #21612 > > !\\(s, $'"leptos_router::location::Url::try_from($0)"') 00:20:30 v #21613 > > 00:20:30 v #21614 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #21615 > > │ ### url_pathname 00:20:30 v #21616 > > 00:20:30 v #21617 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #21618 > > inl url_pathname (url : url) : sm'.std_string = 00:20:30 v #21619 > > !\\(url, $'"$0.pathname"') 00:20:30 v #21620 > > 00:20:30 v #21621 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #21622 > > │ ### use_url 00:20:30 v #21623 > > 00:20:30 v #21624 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #21625 > > inl use_url () = 00:20:30 v #21626 > > inl location = use_location () 00:20:30 v #21627 > > 00:20:30 v #21628 > > fun () => 00:20:30 v #21629 > > inl url_pathname = location |> location_pathname |> signal_get |> 00:20:30 v #21630 > > sm'.from_std_string 00:20:30 v #21631 > > inl url_search = location |> location_search |> signal_get |> 00:20:30 v #21632 > > sm'.from_std_string 00:20:30 v #21633 > > inl url_search = 00:20:30 v #21634 > > if url_search = "" 00:20:30 v #21635 > > then "" 00:20:30 v #21636 > > else $'$"?{!url_search}"' 00:20:30 v #21637 > > url_pathname +. url_search 00:20:30 v #21638 > > |> new_arc_memo 00:20:30 v #21639 > > 00:20:30 v #21640 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:30 v #21641 > > │ ### route 00:20:30 v #21642 > > 00:20:30 v #21643 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:30 v #21644 > > inl route path view children : view' nested_route = 00:20:30 v #21645 > > inl path = path |> sm'.to_std_string 00:20:30 v #21646 > > inl path = join path 00:20:30 v #21647 > > // inl view = view |> rust.move 00:20:30 v #21648 > > inl view () = 00:20:30 v #21649 > > view () |> fragment_to_view 00:20:30 v #21650 > > inl view = join view 00:20:30 v #21651 > > tag_closed_raw "leptos_router::components::ParentRoute" [[ 00:20:30 v #21652 > > $'"path=leptos_router::path\!(!path)"' 00:20:30 v #21653 > > $'"view= move || !view()"' 00:20:30 v #21654 > > $'"children=Box::new(move || !children())"' 00:20:30 v #21655 > > ]] 00:20:30 v #21656 > > |> macro_to_view''' 00:20:31 v #21657 > > 00:20:31 v #21658 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:31 v #21659 > > │ ### macro_to_view 00:20:31 v #21660 > > 00:20:31 v #21661 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:31 v #21662 > > inl macro_to_view (macro : string) : view = 00:20:31 v #21663 > > global "#if FABLE_COMPILER\nFable.Core.RustInterop.emitRustExpr () \");\nuse 00:20:31 v #21664 > > leptos::prelude::ElementChild;\n//\"\n#endif" 00:20:31 v #21665 > > !\($'"leptos::prelude::IntoAny::into_any(leptos::prelude::view\! { " + 00:20:31 v #21666 > > !macro + " })"') 00:20:31 v #21667 > > 00:20:31 v #21668 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:31 v #21669 > > │ ### router 00:20:31 v #21670 > > 00:20:31 v #21671 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:31 v #21672 > > inl router children : view = 00:20:31 v #21673 > > // inl children : () -> fragment = join children 00:20:31 v #21674 > > tag_closed_raw "leptos_router::components::Router" [[ 00:20:31 v #21675 > > $'"children=Box::new(move || !children())"' 00:20:31 v #21676 > > ]] 00:20:31 v #21677 > > |> macro_to_view' 00:20:31 v #21678 > > |> into_any_view 00:20:31 v #21679 > > 00:20:31 v #21680 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:31 v #21681 > > │ ### routes 00:20:31 v #21682 > > 00:20:31 v #21683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:31 v #21684 > > inl routes children : view = 00:20:31 v #21685 > > inl children : () -> am'.vec (view' nested_route) = join children 00:20:31 v #21686 > > inl children = join children 00:20:31 v #21687 > > inl fallback = "leptos.routes / fallback" |> text_view 00:20:31 v #21688 > > tag_closed_raw "leptos_router::components::Routes" [[ 00:20:31 v #21689 > > $'"fallback=move || !fallback"' 00:20:31 v #21690 > > $'"children=leptos::children::ToChildren::to_children(move || 00:20:31 v #21691 > > !children())"' 00:20:31 v #21692 > > ]] 00:20:31 v #21693 > > |> macro_to_view' 00:20:31 v #21694 > > |> into_any_view 00:20:31 v #21695 > > 00:20:31 v #21696 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:31 v #21697 > > │ ### a' 00:20:31 v #21698 > > 00:20:31 v #21699 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:31 v #21700 > > inl a' props children : _ (_ a') = 00:20:31 v #21701 > > tag_element "a" props children 00:20:31 v #21702 > > 00:20:31 v #21703 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:31 v #21704 > > │ ### button 00:20:31 v #21705 > > 00:20:31 v #21706 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:31 v #21707 > > inl button props children : _ (_ button) = 00:20:31 v #21708 > > tag_element "button" props children 00:20:32 v #21709 > > 00:20:32 v #21710 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:32 v #21711 > > │ ### details 00:20:32 v #21712 > > 00:20:32 v #21713 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:32 v #21714 > > inl details props children : _ (_ details) = 00:20:32 v #21715 > > tag_element "details" props children 00:20:32 v #21716 > > 00:20:32 v #21717 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:32 v #21718 > > │ ### div 00:20:32 v #21719 > > 00:20:32 v #21720 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:32 v #21721 > > inl div props children : _ (_ div) = 00:20:32 v #21722 > > tag_element "div" props children 00:20:32 v #21723 > > 00:20:32 v #21724 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:32 v #21725 > > │ ### footer 00:20:32 v #21726 > > 00:20:32 v #21727 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:32 v #21728 > > inl footer props children : _ (_ footer) = 00:20:32 v #21729 > > tag_element "footer" props children 00:20:32 v #21730 > > 00:20:32 v #21731 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:32 v #21732 > > │ ### header 00:20:32 v #21733 > > 00:20:32 v #21734 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:32 v #21735 > > inl header props children : _ (_ header) = 00:20:32 v #21736 > > tag_element "header" props children 00:20:32 v #21737 > > 00:20:32 v #21738 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:32 v #21739 > > │ ### label 00:20:32 v #21740 > > 00:20:32 v #21741 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:32 v #21742 > > inl label props children : _ (_ label) = 00:20:32 v #21743 > > tag_element "label" props children 00:20:33 v #21744 > > 00:20:33 v #21745 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21746 > > │ ### main 00:20:33 v #21747 > > 00:20:33 v #21748 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21749 > > inl main props children : _ (_ main) = 00:20:33 v #21750 > > tag_element "main" props children 00:20:33 v #21751 > > 00:20:33 v #21752 > > inl main' () = () 00:20:33 v #21753 > > 00:20:33 v #21754 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21755 > > │ ### nav 00:20:33 v #21756 > > 00:20:33 v #21757 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21758 > > inl nav props children : _ (_ nav) = 00:20:33 v #21759 > > tag_element "nav" props children 00:20:33 v #21760 > > 00:20:33 v #21761 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21762 > > │ ### option' 00:20:33 v #21763 > > 00:20:33 v #21764 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21765 > > inl option' props children : _ (_ option') = 00:20:33 v #21766 > > tag_element "option" props children 00:20:33 v #21767 > > 00:20:33 v #21768 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21769 > > │ ### option' 00:20:33 v #21770 > > 00:20:33 v #21771 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21772 > > inl option' selected children : _ (_ option') = 00:20:33 v #21773 > > inl selected : () -> bool = join selected 00:20:33 v #21774 > > option' [[ 00:20:33 v #21775 > > $'"selected=!selected()"' 00:20:33 v #21776 > > ]] fun () => 00:20:33 v #21777 > > children |> text_to_fragment 00:20:33 v #21778 > > 00:20:33 v #21779 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21780 > > │ ### pre 00:20:33 v #21781 > > 00:20:33 v #21782 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21783 > > inl pre props children : _ (_ pre) = 00:20:33 v #21784 > > tag_element "pre" props children 00:20:33 v #21785 > > 00:20:33 v #21786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:33 v #21787 > > │ ### select 00:20:33 v #21788 > > 00:20:33 v #21789 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:33 v #21790 > > inl select props children : _ (_ select) = 00:20:33 v #21791 > > tag_element "select" props children 00:20:34 v #21792 > > 00:20:34 v #21793 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 v #21794 > > │ ### span 00:20:34 v #21795 > > 00:20:34 v #21796 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 v #21797 > > inl span props children : _ (_ span) = 00:20:34 v #21798 > > tag_element "span" props children 00:20:34 v #21799 > > 00:20:34 v #21800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 v #21801 > > │ ### summary 00:20:34 v #21802 > > 00:20:34 v #21803 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 v #21804 > > inl summary props children : _ (_ summary) = 00:20:34 v #21805 > > tag_element "summary" props children 00:20:34 v #21806 > > 00:20:34 v #21807 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 v #21808 > > │ ### table 00:20:34 v #21809 > > 00:20:34 v #21810 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 v #21811 > > inl table props children : _ (_ table) = 00:20:34 v #21812 > > tag_element "table" props children 00:20:34 v #21813 > > 00:20:34 v #21814 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 v #21815 > > │ ### thead 00:20:34 v #21816 > > 00:20:34 v #21817 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 v #21818 > > inl thead props children : _ (_ thead) = 00:20:34 v #21819 > > tag_element "thead" props children 00:20:34 v #21820 > > 00:20:34 v #21821 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:34 v #21822 > > │ ### tbody 00:20:34 v #21823 > > 00:20:34 v #21824 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:34 v #21825 > > inl tbody props children : _ (_ tbody) = 00:20:34 v #21826 > > tag_element "tbody" props children 00:20:35 v #21827 > > 00:20:35 v #21828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 v #21829 > > │ ### tr 00:20:35 v #21830 > > 00:20:35 v #21831 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 v #21832 > > inl tr props children : _ (_ tr) = 00:20:35 v #21833 > > tag_element "tr" props children 00:20:35 v #21834 > > 00:20:35 v #21835 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 v #21836 > > │ ### th 00:20:35 v #21837 > > 00:20:35 v #21838 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 v #21839 > > inl th props children : _ (_ th) = 00:20:35 v #21840 > > tag_element "th" props children 00:20:35 v #21841 > > 00:20:35 v #21842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 v #21843 > > │ ### td 00:20:35 v #21844 > > 00:20:35 v #21845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 v #21846 > > inl td props children : _ (_ td) = 00:20:35 v #21847 > > tag_element "td" props children 00:20:35 v #21848 > > 00:20:35 v #21849 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 v #21850 > > │ ### svg 00:20:35 v #21851 > > 00:20:35 v #21852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 v #21853 > > inl svg props children : _ (_ svg) = 00:20:35 v #21854 > > tag_element "svg" props children 00:20:35 v #21855 > > 00:20:35 v #21856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:35 v #21857 > > │ ### path 00:20:35 v #21858 > > 00:20:35 v #21859 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:35 v #21860 > > inl path props : _ (_ path) = 00:20:35 v #21861 > > tag_element "path" props (fun () => [[]] |> view_list_to_fragment) 00:20:36 v #21862 > > 00:20:36 v #21863 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21864 > > │ ### circle 00:20:36 v #21865 > > 00:20:36 v #21866 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21867 > > inl circle props : _ (_ circle) = 00:20:36 v #21868 > > tag_element "circle" props (fun () => [[]] |> view_list_to_fragment) 00:20:36 v #21869 > > 00:20:36 v #21870 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21871 > > │ ### rect 00:20:36 v #21872 > > 00:20:36 v #21873 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21874 > > inl rect props children : _ (_ rect) = 00:20:36 v #21875 > > tag_element "rect" props children 00:20:36 v #21876 > > 00:20:36 v #21877 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21878 > > │ ### animate 00:20:36 v #21879 > > 00:20:36 v #21880 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21881 > > inl animate props : _ (_ animate) = 00:20:36 v #21882 > > tag_element "animate" props (fun () => [[]] |> view_list_to_fragment) 00:20:36 v #21883 > > 00:20:36 v #21884 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21885 > > │ ### input 00:20:36 v #21886 > > 00:20:36 v #21887 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21888 > > inl input props : _ (_ input) = 00:20:36 v #21889 > > tag_closed "input" props 00:20:36 v #21890 > > 00:20:36 v #21891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21892 > > │ ### dd 00:20:36 v #21893 > > 00:20:36 v #21894 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21895 > > inl dd props children : _ (_ dd) = 00:20:36 v #21896 > > tag_element "dd" props children 00:20:36 v #21897 > > 00:20:36 v #21898 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:36 v #21899 > > │ ### dl 00:20:36 v #21900 > > 00:20:36 v #21901 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:36 v #21902 > > inl dl props children : _ (_ dl) = 00:20:36 v #21903 > > tag_element "dl" props children 00:20:37 v #21904 > > 00:20:37 v #21905 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:37 v #21906 > > │ ### dt 00:20:37 v #21907 > > 00:20:37 v #21908 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:37 v #21909 > > inl dt props children : _ (_ dt) = 00:20:37 v #21910 > > tag_element "dt" props children 00:20:37 v #21911 > 00:00:40 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 93011 } 00:20:37 v #21912 > 00:00:40 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:38 v #21913 > 00:00:41 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.ipynb to html 00:20:38 v #21914 > 00:00:41 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:38 v #21915 > 00:00:41 v #7 ! validate(nb) 00:20:38 v #21916 > 00:00:42 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:38 v #21917 > 00:00:42 v #9 ! return _pygments_highlight( 00:20:40 v #21918 > 00:00:43 v #10 ! [NbConvertApp] Writing 665974 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html 00:20:40 v #21919 > 00:00:43 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 910 } 00:20:40 v #21920 > 00:00:43 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 910 } 00:20:40 v #21921 > 00:00:43 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/leptos/leptos.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:40 v #21922 > 00:00:43 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:40 v #21923 > 00:00:43 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:40 v #21924 > 00:00:43 d #16 spiral.run / dib / { exit_code = 0; result_length = 93980 } 00:20:40 d #21925 runtime.execute_with_options_async / { exit_code = 0; output_length = 101090 } 00:20:40 d #28 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path leptos/leptos.dib --retries 3 00:20:40 d #21926 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path util.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:40 v #21927 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "util.dib", "--retries", "3"])) } 00:20:40 v #21928 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:41 v #21929 > > 00:20:41 v #21930 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:41 v #21931 > > │ # util 00:20:44 v #21932 > > 00:20:44 v #21933 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:44 v #21934 > > //// test 00:20:44 v #21935 > > 00:20:44 v #21936 > > open testing 00:20:45 v #21937 > > 00:20:45 v #21938 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:45 v #21939 > > │ ### ski 00:20:45 v #21940 > > 00:20:45 v #21941 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:45 v #21942 > > union rec ski = 00:20:45 v #21943 > > | I 00:20:45 v #21944 > > | K 00:20:45 v #21945 > > | S 00:20:45 v #21946 > > | App : ski * ski 00:20:45 v #21947 > > 00:20:45 v #21948 > > inl rec eval ski = 00:20:45 v #21949 > > match ski with 00:20:45 v #21950 > > | App (App (K, x), y) => x |> eval 00:20:45 v #21951 > > | App (App (App (S, x), y), z) => App (App (x, z), App (y, z)) |> eval 00:20:45 v #21952 > > | App (I, x) => x |> eval 00:20:45 v #21953 > > | App (K, x) => App (K, eval x) 00:20:45 v #21954 > > | App (f, x) => App (eval f, x) |> eval 00:20:45 v #21955 > > | _ => ski 00:20:45 v #21956 > > 00:20:45 v #21957 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:45 v #21958 > > //// test 00:20:45 v #21959 > > 00:20:45 v #21960 > > eval I 00:20:45 v #21961 > > |> _assert_eq I 00:20:45 v #21962 > > 00:20:45 v #21963 > > App (I, I) 00:20:45 v #21964 > > |> eval 00:20:45 v #21965 > > |> _assert_eq I 00:20:45 v #21966 > > 00:20:45 v #21967 > > App (I, App (I, I)) 00:20:45 v #21968 > > |> eval 00:20:45 v #21969 > > |> _assert_eq I 00:20:45 v #21970 > > 00:20:45 v #21971 > > App (App (I, I), I) 00:20:45 v #21972 > > |> eval 00:20:45 v #21973 > > |> _assert_eq I 00:20:45 v #21974 > > 00:20:45 v #21975 > > App (App (App (I, I), I), I) 00:20:45 v #21976 > > |> eval 00:20:45 v #21977 > > |> _assert_eq I 00:20:45 v #21978 > > 00:20:45 v #21979 > > eval K 00:20:45 v #21980 > > |> _assert_eq K 00:20:45 v #21981 > > 00:20:45 v #21982 > > App (K, I) 00:20:45 v #21983 > > |> eval 00:20:45 v #21984 > > |> _assert_eq (App (K, I)) 00:20:45 v #21985 > > 00:20:45 v #21986 > > App (K, K) 00:20:45 v #21987 > > |> eval 00:20:45 v #21988 > > |> _assert_eq (App (K, K)) 00:20:45 v #21989 > > 00:20:45 v #21990 > > App (App (K, I), K) 00:20:45 v #21991 > > |> eval 00:20:45 v #21992 > > |> _assert_eq I 00:20:45 v #21993 > > 00:20:45 v #21994 > > App (App (K, K), I) 00:20:45 v #21995 > > |> eval 00:20:45 v #21996 > > |> _assert_eq K 00:20:45 v #21997 > > 00:20:45 v #21998 > > App (App (App (App (K, K), I), S), K) 00:20:45 v #21999 > > |> eval 00:20:45 v #22000 > > |> _assert_eq S 00:20:45 v #22001 > > 00:20:45 v #22002 > > eval S 00:20:45 v #22003 > > |> _assert_eq S 00:20:45 v #22004 > > 00:20:45 v #22005 > > App (App (App (S, I), I), I) 00:20:45 v #22006 > > |> eval 00:20:45 v #22007 > > |> _assert_eq I 00:20:45 v #22008 > > 00:20:45 v #22009 > > App (App (App (S, K), K), I) 00:20:45 v #22010 > > |> eval 00:20:45 v #22011 > > |> _assert_eq I 00:20:45 v #22012 > > 00:20:45 v #22013 > > App (App (App (S, K), I), (App (App (K, I), S))) 00:20:45 v #22014 > > |> eval 00:20:45 v #22015 > > |> _assert_eq I 00:20:45 v #22016 > > 00:20:45 v #22017 > > App (App (K, S), App (I, App (App (App (S, K), S), I))) 00:20:45 v #22018 > > |> eval 00:20:45 v #22019 > > |> _assert_eq S 00:20:45 v #22020 > > 00:20:45 v #22021 > > App (App (App (S, K), I), K) 00:20:45 v #22022 > > |> eval 00:20:45 v #22023 > > |> _assert_eq K 00:20:46 v #22024 > > 00:20:46 v #22025 > > ── [ 968.49ms - stdout ] ─────────────────────────────────────────────────────── 00:20:46 v #22026 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22027 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22028 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22029 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22030 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22031 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 00:20:46 v #22032 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_0) / expected: UH0_3 00:20:46 v #22033 > > (UH0_1, UH0_0) 00:20:46 v #22034 > > │ __assert_eq / actual: UH0_3 (UH0_1, UH0_1) / expected: UH0_3 00:20:46 v #22035 > > (UH0_1, UH0_1) 00:20:46 v #22036 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22037 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 00:20:46 v #22038 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 00:20:46 v #22039 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 00:20:46 v #22040 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22041 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22042 > > │ __assert_eq / actual: UH0_0 / expected: UH0_0 00:20:46 v #22043 > > │ __assert_eq / actual: UH0_2 / expected: UH0_2 00:20:46 v #22044 > > │ __assert_eq / actual: UH0_1 / expected: UH0_1 00:20:46 v #22045 > > │ 00:20:46 v #22046 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3093 } 00:20:46 v #22047 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:46 v #22048 > 00:00:06 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.ipynb to html 00:20:46 v #22049 > 00:00:06 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:46 v #22050 > 00:00:06 v #7 ! validate(nb) 00:20:47 v #22051 > 00:00:07 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:47 v #22052 > 00:00:07 v #9 ! return _pygments_highlight( 00:20:47 v #22053 > 00:00:07 v #10 ! [NbConvertApp] Writing 284368 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html 00:20:47 v #22054 > 00:00:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:20:47 v #22055 > 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:20:47 v #22056 > 00:00:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/util.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:47 v #22057 > 00:00:07 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:47 v #22058 > 00:00:07 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:47 v #22059 > 00:00:07 d #16 spiral.run / dib / { exit_code = 0; result_length = 4044 } 00:20:47 d #22060 runtime.execute_with_options_async / { exit_code = 0; output_length = 6913 } 00:20:47 d #29 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path util.dib --retries 3 00:20:47 d #22061 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path platform.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:47 v #22062 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "platform.dib", "--retries", "3"])) } 00:20:47 v #22063 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:49 v #22064 > > 00:20:49 v #22065 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:49 v #22066 > > │ # platform 00:20:51 v #22067 > > 00:20:51 v #22068 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:51 v #22069 > > open rust.rust_operators 00:20:52 v #22070 > > 00:20:52 v #22071 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:52 v #22072 > > //// test 00:20:52 v #22073 > > 00:20:52 v #22074 > > open testing 00:20:52 v #22075 > > 00:20:52 v #22076 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:52 v #22077 > > │ ## fsharp 00:20:52 v #22078 > > 00:20:52 v #22079 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:52 v #22080 > > │ ### os_platform 00:20:52 v #22081 > > 00:20:52 v #22082 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:52 v #22083 > > nominal os_platform' = $'System.Runtime.InteropServices.OSPlatform' 00:20:52 v #22084 > > 00:20:52 v #22085 > > union os_platform = 00:20:52 v #22086 > > | FreeBSD 00:20:52 v #22087 > > | Linux 00:20:52 v #22088 > > | OSX 00:20:52 v #22089 > > | Windows 00:20:52 v #22090 > > 00:20:52 v #22091 > > inl os_platform = function 00:20:52 v #22092 > > | FreeBSD => $'`os_platform'.FreeBSD' : os_platform' 00:20:52 v #22093 > > | Linux => $'`os_platform'.Linux' : os_platform' 00:20:52 v #22094 > > | OSX => $'`os_platform'.OSX' : os_platform' 00:20:52 v #22095 > > | Windows => $'`os_platform'.Windows' : os_platform' 00:20:52 v #22096 > > 00:20:52 v #22097 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:52 v #22098 > > │ ### run_platform 00:20:52 v #22099 > > 00:20:52 v #22100 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:52 v #22101 > > inl run_platform forall t. (fn : os_platform -> (() -> t)) : t = 00:20:52 v #22102 > > inl result = dyn true 00:20:52 v #22103 > > $'let mutable _run_platform_!result : `t option = None ' 00:20:52 v #22104 > > $'\n#if _FREEBSD' 00:20:52 v #22105 > > fn FreeBSD () |> emit_unit 00:20:52 v #22106 > > $'#endif\n#if _LINUX' 00:20:52 v #22107 > > fn Linux () |> emit_unit 00:20:52 v #22108 > > $'#endif\n#if _OSX' 00:20:52 v #22109 > > fn OSX () |> emit_unit 00:20:52 v #22110 > > $'#endif\n#if _WINDOWS' 00:20:52 v #22111 > > fn Windows () |> emit_unit 00:20:52 v #22112 > > $'#endif' 00:20:52 v #22113 > > $'|> fun x -> _run_platform_!result <- Some x' 00:20:52 v #22114 > > $'match _run_platform_!result with Some x -> x | None -> failwith 00:20:52 v #22115 > > "runtime.run_platform / _run_platform_!result=None"' 00:20:52 v #22116 > > 00:20:52 v #22117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:52 v #22118 > > │ ### is_os_platform 00:20:52 v #22119 > > 00:20:52 v #22120 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:52 v #22121 > > inl is_os_platform (x : os_platform') : bool = 00:20:52 v #22122 > > x |> $'System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform' 00:20:53 v #22123 > > 00:20:53 v #22124 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:53 v #22125 > > │ ### is_windows' 00:20:53 v #22126 > > 00:20:53 v #22127 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:53 v #22128 > > inl is_windows' () : bool = 00:20:53 v #22129 > > run_platform function 00:20:53 v #22130 > > | Windows => fun () => true 00:20:53 v #22131 > > | _ => fun () => false 00:20:53 v #22132 > > 00:20:53 v #22133 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:53 v #22134 > > │ ## platform 00:20:53 v #22135 > > 00:20:53 v #22136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:53 v #22137 > > │ ### is_windows 00:20:53 v #22138 > > 00:20:53 v #22139 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:53 v #22140 > > inl is_windows () : bool = 00:20:53 v #22141 > > run_target function 00:20:53 v #22142 > > | Rust _ => fun () => 00:20:53 v #22143 > > !\($'"cfg\!(windows)"') 00:20:53 v #22144 > > | Fsharp _ => fun () => 00:20:53 v #22145 > > Windows |> os_platform |> is_os_platform 00:20:53 v #22146 > > | target => fun () => failwith $'$"platform.is_windows / target: 00:20:53 v #22147 > > {!target}"' 00:20:53 v #22148 > > 00:20:53 v #22149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:53 v #22150 > > │ ### get_executable_suffix 00:20:53 v #22151 > > 00:20:53 v #22152 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:53 v #22153 > > inl get_executable_suffix () = 00:20:53 v #22154 > > if is_windows () 00:20:53 v #22155 > > then ".exe" 00:20:53 v #22156 > > else "" 00:20:53 v #22157 > > 00:20:53 v #22158 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:53 v #22159 > > //// test 00:20:53 v #22160 > > 00:20:53 v #22161 > > get_executable_suffix () 00:20:54 v #22162 > > 00:20:54 v #22163 > > 00:20:54 v #22164 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:54 v #22165 > > │ ## main 00:20:54 v #22166 > > 00:20:54 v #22167 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:20:54 v #22168 > > inl main () = 00:20:54 v #22169 > > $'let is_windows () = !is_windows ()' : () 00:20:54 v #22170 > > $'let get_executable_suffix () = !get_executable_suffix ()' : () 00:20:54 v #22171 > 00:00:06 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 4108 } 00:20:54 v #22172 > 00:00:06 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:55 v #22173 > 00:00:07 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.ipynb to html 00:20:55 v #22174 > 00:00:07 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:20:55 v #22175 > 00:00:07 v #7 ! validate(nb) 00:20:56 v #22176 > 00:00:08 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:20:56 v #22177 > 00:00:08 v #9 ! return _pygments_highlight( 00:20:56 v #22178 > 00:00:08 v #10 ! [NbConvertApp] Writing 288114 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html 00:20:56 v #22179 > 00:00:08 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:20:56 v #22180 > 00:00:08 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:20:56 v #22181 > 00:00:08 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/platform.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:56 v #22182 > 00:00:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:20:56 v #22183 > 00:00:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:20:56 v #22184 > 00:00:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 5067 } 00:20:56 d #22185 runtime.execute_with_options_async / { exit_code = 0; output_length = 7952 } 00:20:56 d #30 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path platform.dib --retries 3 00:20:56 d #22186 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path stream.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:56 v #22187 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "stream.dib", "--retries", "3"])) } 00:20:56 v #22188 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:20:57 v #22189 > > 00:20:57 v #22190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:20:57 v #22191 > > │ # stream 00:21:00 v #22192 > > 00:21:00 v #22193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:00 v #22194 > > open rust.rust_operators 00:21:01 v #22195 > > 00:21:01 v #22196 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22197 > > //// test 00:21:01 v #22198 > > 00:21:01 v #22199 > > open testing 00:21:01 v #22200 > > 00:21:01 v #22201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22202 > > │ ## stream 00:21:01 v #22203 > > 00:21:01 v #22204 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22205 > > │ ### stream 00:21:01 v #22206 > > 00:21:01 v #22207 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22208 > > union rec stream t = 00:21:01 v #22209 > > | StreamCons : t * (() -> stream t) 00:21:01 v #22210 > > | StreamNil 00:21:01 v #22211 > > 00:21:01 v #22212 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22213 > > │ ### fold 00:21:01 v #22214 > > 00:21:01 v #22215 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22216 > > inl fold fn init s = 00:21:01 v #22217 > > inl rec body acc = function 00:21:01 v #22218 > > | StreamCons (st, fn') => loop (fn acc st) (fn' ()) 00:21:01 v #22219 > > | StreamNil => acc 00:21:01 v #22220 > > and inl loop acc = join_body body acc 00:21:01 v #22221 > > loop init s 00:21:01 v #22222 > > 00:21:01 v #22223 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22224 > > │ ### fold_back 00:21:01 v #22225 > > 00:21:01 v #22226 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22227 > > inl fold_back fn s init = 00:21:01 v #22228 > > inl rec body acc = function 00:21:01 v #22229 > > | StreamCons (st, fn') => fn st (loop acc (fn' ())) 00:21:01 v #22230 > > | StreamNil => acc 00:21:01 v #22231 > > and inl loop acc = join_body body acc 00:21:01 v #22232 > > loop init s 00:21:01 v #22233 > > 00:21:01 v #22234 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22235 > > │ ### to_list 00:21:01 v #22236 > > 00:21:01 v #22237 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22238 > > inl to_list s = 00:21:01 v #22239 > > (s, [[]]) 00:21:01 v #22240 > > ||> fold_back fun x acc => 00:21:01 v #22241 > > x :: acc 00:21:01 v #22242 > > 00:21:01 v #22243 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:01 v #22244 > > │ ### rev 00:21:01 v #22245 > > 00:21:01 v #22246 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:01 v #22247 > > inl rev s = 00:21:01 v #22248 > > (StreamNil, s) 00:21:01 v #22249 > > ||> fold fun s x => 00:21:01 v #22250 > > StreamCons (x, fun () => s) 00:21:02 v #22251 > > 00:21:02 v #22252 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:02 v #22253 > > │ ### from_list 00:21:02 v #22254 > > 00:21:02 v #22255 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 v #22256 > > inl from_list list = 00:21:02 v #22257 > > (list, StreamNil) 00:21:02 v #22258 > > ||> listm.foldBack fun x acc => 00:21:02 v #22259 > > StreamCons (x, fun () => acc) 00:21:02 v #22260 > > 00:21:02 v #22261 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:02 v #22262 > > //// test 00:21:02 v #22263 > > 00:21:02 v #22264 > > listm.init 3i32 id 00:21:02 v #22265 > > |> from_list 00:21:02 v #22266 > > |> rev 00:21:02 v #22267 > > |> to_list 00:21:02 v #22268 > > |> _assert_eq [[ 2; 1; 0 ]] 00:21:03 v #22269 > > 00:21:03 v #22270 > > ── [ 896.02ms - stdout ] ─────────────────────────────────────────────────────── 00:21:03 v #22271 > > │ __assert_eq / actual: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) 00:21:03 v #22272 > > / expected: UH0_1 (2, UH0_1 (1, UH0_1 (0, UH0_0))) 00:21:03 v #22273 > > │ 00:21:03 v #22274 > > 00:21:03 v #22275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:03 v #22276 > > │ ### try_item 00:21:03 v #22277 > > 00:21:03 v #22278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22279 > > inl try_item i s = 00:21:03 v #22280 > > inl rec body i = function 00:21:03 v #22281 > > | StreamCons (x, _) when i <= 0 => Some x 00:21:03 v #22282 > > | StreamCons (_, fn) => loop (i - 1) (fn ()) 00:21:03 v #22283 > > | StreamNil => None 00:21:03 v #22284 > > and inl loop acc s' = 00:21:03 v #22285 > > match var_is acc, var_is s' with 00:21:03 v #22286 > > | false, false => body acc s' 00:21:03 v #22287 > > | _ => 00:21:03 v #22288 > > inl acc = dyn acc 00:21:03 v #22289 > > inl s' = dyn s' 00:21:03 v #22290 > > join body acc s' 00:21:03 v #22291 > > loop i s 00:21:03 v #22292 > > 00:21:03 v #22293 > > inl item i = 00:21:03 v #22294 > > try_item i >> optionm.value 00:21:03 v #22295 > > 00:21:03 v #22296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22297 > > //// test 00:21:03 v #22298 > > 00:21:03 v #22299 > > listm.init 10i32 id 00:21:03 v #22300 > > |> from_list 00:21:03 v #22301 > > |> item 9i32 00:21:03 v #22302 > > |> _assert_eq 9 00:21:03 v #22303 > > 00:21:03 v #22304 > > ── [ 137.95ms - stdout ] ─────────────────────────────────────────────────────── 00:21:03 v #22305 > > │ __assert_eq / actual: 9 / expected: 9 00:21:03 v #22306 > > │ 00:21:03 v #22307 > > 00:21:03 v #22308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:03 v #22309 > > │ ### new_infinite_stream 00:21:03 v #22310 > > 00:21:03 v #22311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22312 > > inl new_infinite_stream fn = 00:21:03 v #22313 > > inl rec loop n = 00:21:03 v #22314 > > StreamCons (fn n, fun () => loop (n + 1)) 00:21:03 v #22315 > > loop 0 00:21:03 v #22316 > > 00:21:03 v #22317 > > inl new_infinite_stream_ fn = 00:21:03 v #22318 > > let rec loop n = 00:21:03 v #22319 > > StreamCons (fn n, fun () => loop (n + 1)) 00:21:03 v #22320 > > loop 0 00:21:03 v #22321 > > 00:21:03 v #22322 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22323 > > //// test 00:21:03 v #22324 > > 00:21:03 v #22325 > > new_infinite_stream print_and_return 00:21:03 v #22326 > > |> item 4i32 00:21:03 v #22327 > > |> _assert_eq 4i32 00:21:03 v #22328 > > 00:21:03 v #22329 > > ── [ 190.14ms - stdout ] ─────────────────────────────────────────────────────── 00:21:03 v #22330 > > │ print_and_return / x: 0 00:21:03 v #22331 > > │ print_and_return / x: 1 00:21:03 v #22332 > > │ print_and_return / x: 2 00:21:03 v #22333 > > │ print_and_return / x: 3 00:21:03 v #22334 > > │ print_and_return / x: 4 00:21:03 v #22335 > > │ __assert_eq / actual: 4 / expected: 4 00:21:03 v #22336 > > │ 00:21:03 v #22337 > > 00:21:03 v #22338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:03 v #22339 > > │ ### new_finite_stream 00:21:03 v #22340 > > 00:21:03 v #22341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22342 > > inl new_finite_stream fn max = 00:21:03 v #22343 > > inl rec loop n = 00:21:03 v #22344 > > if n >= max 00:21:03 v #22345 > > then StreamNil 00:21:03 v #22346 > > else StreamCons (fn n, fun () => loop (n + 1)) 00:21:03 v #22347 > > loop 0 00:21:03 v #22348 > > 00:21:03 v #22349 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:03 v #22350 > > │ ### memoize 00:21:03 v #22351 > > 00:21:03 v #22352 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:03 v #22353 > > union memoized_stream t = 00:21:03 v #22354 > > | NotComputed : () -> stream t 00:21:03 v #22355 > > | Computed : stream t 00:21:03 v #22356 > > 00:21:03 v #22357 > > inl memoize s = 00:21:03 v #22358 > > inl rec body s = 00:21:03 v #22359 > > inl state = mut (NotComputed s) 00:21:03 v #22360 > > fun () => 00:21:03 v #22361 > > match *state with 00:21:03 v #22362 > > | Computed x => x 00:21:03 v #22363 > > | NotComputed fn => 00:21:03 v #22364 > > inl new_state = 00:21:03 v #22365 > > match fn () with 00:21:03 v #22366 > > | StreamNil => StreamNil 00:21:03 v #22367 > > | StreamCons (x, fn) => StreamCons (x, loop fn) 00:21:03 v #22368 > > state <- Computed new_state 00:21:03 v #22369 > > new_state 00:21:03 v #22370 > > and inl loop s' = join_body_unit body s s' 00:21:03 v #22371 > > loop (fun () => s) 00:21:04 v #22372 > > 00:21:04 v #22373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #22374 > > //// test 00:21:04 v #22375 > > 00:21:04 v #22376 > > inl memo_stream = new_finite_stream print_and_return 10 |> memoize 00:21:04 v #22377 > > 00:21:04 v #22378 > > memo_stream () 00:21:04 v #22379 > > |> item 3i32 00:21:04 v #22380 > > |> _assert_eq 3i32 00:21:04 v #22381 > > 00:21:04 v #22382 > > memo_stream () 00:21:04 v #22383 > > |> item 5i32 00:21:04 v #22384 > > |> _assert_eq 5i32 00:21:04 v #22385 > > 00:21:04 v #22386 > > ── [ 470.14ms - stdout ] ─────────────────────────────────────────────────────── 00:21:04 v #22387 > > │ print_and_return / x: 0 00:21:04 v #22388 > > │ print_and_return / x: 1 00:21:04 v #22389 > > │ print_and_return / x: 2 00:21:04 v #22390 > > │ print_and_return / x: 3 00:21:04 v #22391 > > │ __assert_eq / actual: 3 / expected: 3 00:21:04 v #22392 > > │ print_and_return / x: 4 00:21:04 v #22393 > > │ print_and_return / x: 5 00:21:04 v #22394 > > │ __assert_eq / actual: 5 / expected: 5 00:21:04 v #22395 > > │ 00:21:04 v #22396 > > 00:21:04 v #22397 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #22398 > > //// test 00:21:04 v #22399 > > 00:21:04 v #22400 > > inl memo_stream = new_infinite_stream_ print_and_return |> memoize 00:21:04 v #22401 > > 00:21:04 v #22402 > > memo_stream () 00:21:04 v #22403 > > |> item 3i32 00:21:04 v #22404 > > |> _assert_eq 3i32 00:21:04 v #22405 > > 00:21:04 v #22406 > > memo_stream () 00:21:04 v #22407 > > |> item 5i32 00:21:04 v #22408 > > |> _assert_eq 5i32 00:21:04 v #22409 > > 00:21:04 v #22410 > > ── [ 214.56ms - stdout ] ─────────────────────────────────────────────────────── 00:21:04 v #22411 > > │ print_and_return / x: 0 00:21:04 v #22412 > > │ print_and_return / x: 1 00:21:04 v #22413 > > │ print_and_return / x: 2 00:21:04 v #22414 > > │ print_and_return / x: 3 00:21:04 v #22415 > > │ __assert_eq / actual: 3 / expected: 3 00:21:04 v #22416 > > │ print_and_return / x: 4 00:21:04 v #22417 > > │ print_and_return / x: 5 00:21:04 v #22418 > > │ __assert_eq / actual: 5 / expected: 5 00:21:04 v #22419 > > │ 00:21:04 v #22420 > > 00:21:04 v #22421 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:04 v #22422 > > │ ### unfold 00:21:04 v #22423 > > 00:21:04 v #22424 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #22425 > > inl unfold f x0 = 00:21:04 v #22426 > > inl rec body x = 00:21:04 v #22427 > > match f x with 00:21:04 v #22428 > > | Some (x', y) => StreamCons (x', fun () => loop y) 00:21:04 v #22429 > > | None => StreamNil 00:21:04 v #22430 > > and inl loop x = join_body_unit body x0 x 00:21:04 v #22431 > > loop x0 00:21:04 v #22432 > > 00:21:04 v #22433 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:04 v #22434 > > │ ### iterate 00:21:04 v #22435 > > 00:21:04 v #22436 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:04 v #22437 > > inl iterate f = 00:21:04 v #22438 > > fun x => Some (x, f x) 00:21:04 v #22439 > > |> unfold 00:21:05 v #22440 > > 00:21:05 v #22441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22442 > > //// test 00:21:05 v #22443 > > 00:21:05 v #22444 > > iterate ((*) 2) 1i32 00:21:05 v #22445 > > |> item 10i32 00:21:05 v #22446 > > |> _assert_eq 1024 00:21:05 v #22447 > > 00:21:05 v #22448 > > ── [ 135.33ms - stdout ] ─────────────────────────────────────────────────────── 00:21:05 v #22449 > > │ __assert_eq / actual: 1024 / expected: 1024 00:21:05 v #22450 > > │ 00:21:05 v #22451 > > 00:21:05 v #22452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:05 v #22453 > > │ ### iterate' 00:21:05 v #22454 > > 00:21:05 v #22455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22456 > > inl iterate_map f m = 00:21:05 v #22457 > > fun x => 00:21:05 v #22458 > > m x 00:21:05 v #22459 > > |> optionm.map fun x => 00:21:05 v #22460 > > x, f x 00:21:05 v #22461 > > |> unfold 00:21:05 v #22462 > > 00:21:05 v #22463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22464 > > //// test 00:21:05 v #22465 > > 00:21:05 v #22466 > > iterate_map ((*) 2) Some 1i32 00:21:05 v #22467 > > |> item 10i32 00:21:05 v #22468 > > |> _assert_eq 1024 00:21:05 v #22469 > > 00:21:05 v #22470 > > ── [ 161.65ms - stdout ] ─────────────────────────────────────────────────────── 00:21:05 v #22471 > > │ __assert_eq / actual: 1024 / expected: 1024 00:21:05 v #22472 > > │ 00:21:05 v #22473 > > 00:21:05 v #22474 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:05 v #22475 > > │ ### take_while 00:21:05 v #22476 > > 00:21:05 v #22477 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22478 > > inl take_while cond s = 00:21:05 v #22479 > > inl rec body i = function 00:21:05 v #22480 > > | StreamCons (st, fn) when cond st i => StreamCons (st, fun () => loop 00:21:05 v #22481 > > (i + 1) (fn ())) 00:21:05 v #22482 > > | _ => StreamNil 00:21:05 v #22483 > > and inl loop i = join_body body i 00:21:05 v #22484 > > loop 0 s 00:21:05 v #22485 > > 00:21:05 v #22486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:05 v #22487 > > │ ### sum 00:21:05 v #22488 > > 00:21:05 v #22489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22490 > > inl sum seq = 00:21:05 v #22491 > > seq |> fold (+) 0 00:21:05 v #22492 > > 00:21:05 v #22493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:05 v #22494 > > //// test 00:21:05 v #22495 > > 00:21:05 v #22496 > > listm.init 10i32 id 00:21:05 v #22497 > > |> from_list 00:21:05 v #22498 > > |> sum 00:21:05 v #22499 > > |> _assert_eq 45 00:21:06 v #22500 > > 00:21:06 v #22501 > > ── [ 165.27ms - stdout ] ─────────────────────────────────────────────────────── 00:21:06 v #22502 > > │ __assert_eq / actual: 45 / expected: 45 00:21:06 v #22503 > > │ 00:21:06 v #22504 > > 00:21:06 v #22505 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22506 > > //// test 00:21:06 v #22507 > > 00:21:06 v #22508 > > new_finite_stream print_and_return 10i32 00:21:06 v #22509 > > |> take_while (fun n (_ : i32) => n < 5) 00:21:06 v #22510 > > |> sum 00:21:06 v #22511 > > |> _assert_eq 10 00:21:06 v #22512 > > 00:21:06 v #22513 > > ── [ 182.53ms - stdout ] ─────────────────────────────────────────────────────── 00:21:06 v #22514 > > │ print_and_return / x: 0 00:21:06 v #22515 > > │ print_and_return / x: 1 00:21:06 v #22516 > > │ print_and_return / x: 2 00:21:06 v #22517 > > │ print_and_return / x: 3 00:21:06 v #22518 > > │ print_and_return / x: 4 00:21:06 v #22519 > > │ print_and_return / x: 5 00:21:06 v #22520 > > │ __assert_eq / actual: 10 / expected: 10 00:21:06 v #22521 > > │ 00:21:06 v #22522 > > 00:21:06 v #22523 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22524 > > //// test 00:21:06 v #22525 > > 00:21:06 v #22526 > > new_infinite_stream print_and_return 00:21:06 v #22527 > > |> take_while (fun n (_ : i32) => n < 5i32) 00:21:06 v #22528 > > |> sum 00:21:06 v #22529 > > |> _assert_eq 10 00:21:06 v #22530 > > 00:21:06 v #22531 > > ── [ 200.75ms - stdout ] ─────────────────────────────────────────────────────── 00:21:06 v #22532 > > │ print_and_return / x: 0 00:21:06 v #22533 > > │ print_and_return / x: 1 00:21:06 v #22534 > > │ print_and_return / x: 2 00:21:06 v #22535 > > │ print_and_return / x: 3 00:21:06 v #22536 > > │ print_and_return / x: 4 00:21:06 v #22537 > > │ print_and_return / x: 5 00:21:06 v #22538 > > │ __assert_eq / actual: 10 / expected: 10 00:21:06 v #22539 > > │ 00:21:06 v #22540 > > 00:21:06 v #22541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22542 > > //// test 00:21:06 v #22543 > > 00:21:06 v #22544 > > iterate ((*) 6) 1i32 00:21:06 v #22545 > > |> take_while (fun _ i => i <= 7i32) 00:21:06 v #22546 > > |> to_list 00:21:06 v #22547 > > |> _assert_eq [[ 1i32; 6; 36; 216; 1296; 7776; 46656; 279936 ]] 00:21:06 v #22548 > > 00:21:06 v #22549 > > ── [ 191.07ms - stdout ] ─────────────────────────────────────────────────────── 00:21:06 v #22550 > > │ __assert_eq / actual: UH0_1 00:21:06 v #22551 > > │ (1, 00:21:06 v #22552 > > │ UH0_1 00:21:06 v #22553 > > │ (6, 00:21:06 v #22554 > > │ UH0_1 00:21:06 v #22555 > > │ (36, 00:21:06 v #22556 > > │ UH0_1 00:21:06 v #22557 > > │ (216, 00:21:06 v #22558 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 00:21:06 v #22559 > > (279936, UH0_0)))))))) / expected: UH0_1 00:21:06 v #22560 > > │ (1, 00:21:06 v #22561 > > │ UH0_1 00:21:06 v #22562 > > │ (6, 00:21:06 v #22563 > > │ UH0_1 00:21:06 v #22564 > > │ (36, 00:21:06 v #22565 > > │ UH0_1 00:21:06 v #22566 > > │ (216, 00:21:06 v #22567 > > │ UH0_1 (1296, UH0_1 (7776, UH0_1 (46656, UH0_1 00:21:06 v #22568 > > (279936, UH0_0)))))))) 00:21:06 v #22569 > > │ 00:21:06 v #22570 > > 00:21:06 v #22571 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:06 v #22572 > > │ ### indexed 00:21:06 v #22573 > > 00:21:06 v #22574 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22575 > > inl indexed s = 00:21:06 v #22576 > > ((StreamNil, 0), s) 00:21:06 v #22577 > > ||> fold fun (acc, i) x => 00:21:06 v #22578 > > StreamCons ((i, x), fun () => acc), i + 1 00:21:06 v #22579 > > |> fst 00:21:06 v #22580 > > |> rev 00:21:06 v #22581 > > 00:21:06 v #22582 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22583 > > //// test 00:21:06 v #22584 > > 00:21:06 v #22585 > > listm.init 10i32 ((*) 2) 00:21:06 v #22586 > > |> from_list 00:21:06 v #22587 > > |> indexed 00:21:06 v #22588 > > |> item 5i32 00:21:06 v #22589 > > |> _assert_eq (5i32, 10i32) 00:21:06 v #22590 > > 00:21:06 v #22591 > > ── [ 179.87ms - stdout ] ─────────────────────────────────────────────────────── 00:21:06 v #22592 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 00:21:06 v #22593 > > 10) 00:21:06 v #22594 > > │ 00:21:06 v #22595 > > 00:21:06 v #22596 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:06 v #22597 > > │ ### map 00:21:06 v #22598 > > 00:21:06 v #22599 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:06 v #22600 > > inl map fn s = 00:21:06 v #22601 > > (s, StreamNil) 00:21:06 v #22602 > > ||> fold_back fun x acc => 00:21:06 v #22603 > > StreamCons (fn x, fun () => acc) 00:21:07 v #22604 > > 00:21:07 v #22605 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22606 > > //// test 00:21:07 v #22607 > > 00:21:07 v #22608 > > listm.init 10i32 id 00:21:07 v #22609 > > |> from_list 00:21:07 v #22610 > > |> map ((*) 2) 00:21:07 v #22611 > > |> item 5i32 00:21:07 v #22612 > > |> _assert_eq 10i32 00:21:07 v #22613 > > 00:21:07 v #22614 > > ── [ 180.75ms - stdout ] ─────────────────────────────────────────────────────── 00:21:07 v #22615 > > │ __assert_eq / actual: 10 / expected: 10 00:21:07 v #22616 > > │ 00:21:07 v #22617 > > 00:21:07 v #22618 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:07 v #22619 > > │ ### zip_with 00:21:07 v #22620 > > 00:21:07 v #22621 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22622 > > inl zip_with fn s1 s2 = 00:21:07 v #22623 > > inl rec loop s1 s2 = 00:21:07 v #22624 > > match s1, s2 with 00:21:07 v #22625 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:21:07 v #22626 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:21:07 v #22627 > > | StreamNil, _ | _, StreamNil => StreamNil 00:21:07 v #22628 > > loop s1 s2 00:21:07 v #22629 > > 00:21:07 v #22630 > > inl zip_with_ fn s1 s2 = 00:21:07 v #22631 > > let rec loop s1 s2 = 00:21:07 v #22632 > > match s1, s2 with 00:21:07 v #22633 > > | StreamCons (st1, fn1), StreamCons (st2, fn2) => 00:21:07 v #22634 > > StreamCons (fn st1 st2, fun () => loop (fn1 ()) (fn2 ())) 00:21:07 v #22635 > > | StreamNil, _ | _, StreamNil => StreamNil 00:21:07 v #22636 > > loop s1 s2 00:21:07 v #22637 > > 00:21:07 v #22638 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22639 > > //// test 00:21:07 v #22640 > > 00:21:07 v #22641 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:21:07 v #22642 > > ||> zip_with (+) 00:21:07 v #22643 > > |> item 2i32 00:21:07 v #22644 > > |> _assert_eq 6 00:21:07 v #22645 > > 00:21:07 v #22646 > > ── [ 159.70ms - stdout ] ─────────────────────────────────────────────────────── 00:21:07 v #22647 > > │ __assert_eq / actual: 6 / expected: 6 00:21:07 v #22648 > > │ 00:21:07 v #22649 > > 00:21:07 v #22650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:07 v #22651 > > │ ### zip 00:21:07 v #22652 > > 00:21:07 v #22653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22654 > > inl zip s1 s2 = 00:21:07 v #22655 > > zip_with pair s1 s2 00:21:07 v #22656 > > 00:21:07 v #22657 > > inl zip_ s1 s2 = 00:21:07 v #22658 > > zip_with_ pair s1 s2 00:21:07 v #22659 > > 00:21:07 v #22660 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22661 > > //// test 00:21:07 v #22662 > > 00:21:07 v #22663 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:21:07 v #22664 > > ||> zip 00:21:07 v #22665 > > |> item 5i32 00:21:07 v #22666 > > |> _assert_eq (5, 10) 00:21:07 v #22667 > > 00:21:07 v #22668 > > ── [ 174.00ms - stdout ] ─────────────────────────────────────────────────────── 00:21:07 v #22669 > > │ __assert_eq / actual: struct (5, 10) / expected: struct (5, 00:21:07 v #22670 > > 10) 00:21:07 v #22671 > > │ 00:21:07 v #22672 > > 00:21:07 v #22673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:07 v #22674 > > │ ### unzip 00:21:07 v #22675 > > 00:21:07 v #22676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:07 v #22677 > > inl unzip s = 00:21:07 v #22678 > > inl rec body s = 00:21:07 v #22679 > > match s with 00:21:07 v #22680 > > | StreamCons ((x, y), fn) => 00:21:07 v #22681 > > inl xs, ys = loop (fn ()) 00:21:07 v #22682 > > StreamCons (x, fun () => xs), StreamCons (y, fun () => ys) 00:21:07 v #22683 > > | StreamNil => pair StreamNil StreamNil 00:21:07 v #22684 > > and inl loop x = 00:21:07 v #22685 > > if var_is x |> not 00:21:07 v #22686 > > then body x 00:21:07 v #22687 > > else 00:21:07 v #22688 > > inl x = dyn x 00:21:07 v #22689 > > join body x 00:21:07 v #22690 > > loop s 00:21:08 v #22691 > > 00:21:08 v #22692 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22693 > > //// test 00:21:08 v #22694 > > 00:21:08 v #22695 > > listm.init 10i32 id 00:21:08 v #22696 > > |> listm.map (fun x => x, x) 00:21:08 v #22697 > > |> from_list 00:21:08 v #22698 > > |> unzip 00:21:08 v #22699 > > |> fun x, y => 00:21:08 v #22700 > > x |> sum 00:21:08 v #22701 > > |> _assert_eq 45 00:21:08 v #22702 > > 00:21:08 v #22703 > > y |> sum 00:21:08 v #22704 > > |> _assert_eq 45 00:21:08 v #22705 > > 00:21:08 v #22706 > > ── [ 165.39ms - stdout ] ─────────────────────────────────────────────────────── 00:21:08 v #22707 > > │ __assert_eq / actual: 45 / expected: 45 00:21:08 v #22708 > > │ __assert_eq / actual: 45 / expected: 45 00:21:08 v #22709 > > │ 00:21:08 v #22710 > > 00:21:08 v #22711 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22712 > > │ ## rust 00:21:08 v #22713 > > 00:21:08 v #22714 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22715 > > │ ### io_error 00:21:08 v #22716 > > 00:21:08 v #22717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22718 > > nominal io_error = 00:21:08 v #22719 > > `( 00:21:08 v #22720 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:08 v #22721 > > Fable.Core.Emit(\"std::io::Error\")>]]\ntype std_io_Error = class 00:21:08 v #22722 > > end\n#else\ntype std_io_Error = string\n#endif\n" 00:21:08 v #22723 > > $'' : $'std_io_Error' 00:21:08 v #22724 > > ) 00:21:08 v #22725 > > 00:21:08 v #22726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22727 > > │ ### new_io_error 00:21:08 v #22728 > > 00:21:08 v #22729 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22730 > > inl new_io_error (text : string) : io_error = 00:21:08 v #22731 > > run_target_args (fun () => text) function 00:21:08 v #22732 > > | Rust _ => fun text => 00:21:08 v #22733 > > !\\(text, $'"std::io::Error::new(std::io::ErrorKind::Other, &*$0)"') 00:21:08 v #22734 > > | _ => fun text => text |> unbox 00:21:08 v #22735 > > 00:21:08 v #22736 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22737 > > │ ### buf_reader 00:21:08 v #22738 > > 00:21:08 v #22739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22740 > > nominal buf_reader t = 00:21:08 v #22741 > > `( 00:21:08 v #22742 > > backend_switch `(()) `({}) { 00:21:08 v #22743 > > Fsharp = 00:21:08 v #22744 > > (fun () => 00:21:08 v #22745 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:08 v #22746 > > Fable.Core.Emit(\"std::io::BufReader<$0>\")>]]\n#endif\ntype 00:21:08 v #22747 > > std_io_BufReader<'T> = class end" 00:21:08 v #22748 > > ) : () -> () 00:21:08 v #22749 > > } 00:21:08 v #22750 > > $'' : $'std_io_BufReader<`t>' 00:21:08 v #22751 > > ) 00:21:08 v #22752 > > 00:21:08 v #22753 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22754 > > │ ### cursor 00:21:08 v #22755 > > 00:21:08 v #22756 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22757 > > nominal cursor t = 00:21:08 v #22758 > > `( 00:21:08 v #22759 > > backend_switch `(()) `({}) { 00:21:08 v #22760 > > Fsharp = 00:21:08 v #22761 > > (fun () => 00:21:08 v #22762 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:08 v #22763 > > Fable.Core.Emit(\"std::io::Cursor<$0>\")>]]\n#endif\ntype std_io_Cursor<'T> = 00:21:08 v #22764 > > class end" 00:21:08 v #22765 > > ) : () -> () 00:21:08 v #22766 > > } 00:21:08 v #22767 > > $'' : $'std_io_Cursor<`t>' 00:21:08 v #22768 > > ) 00:21:08 v #22769 > > 00:21:08 v #22770 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22771 > > │ ### buf_reader_tokio 00:21:08 v #22772 > > 00:21:08 v #22773 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22774 > > nominal buf_reader_tokio t = 00:21:08 v #22775 > > `( 00:21:08 v #22776 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:08 v #22777 > > Fable.Core.Emit(\"tokio::io::BufReader<$0>\")>]]\n#endif\ntype 00:21:08 v #22778 > > tokio_io_BufReader<'T> = class end" 00:21:08 v #22779 > > $'' : $'tokio_io_BufReader<`t>' 00:21:08 v #22780 > > ) 00:21:08 v #22781 > > 00:21:08 v #22782 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:08 v #22783 > > │ ### new_buf_reader 00:21:08 v #22784 > > 00:21:08 v #22785 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:08 v #22786 > > inl new_buf_reader forall t. (x : t) : buf_reader t = 00:21:08 v #22787 > > !\\(x, $'"std::io::BufReader::new($0)"') 00:21:09 v #22788 > > 00:21:09 v #22789 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22790 > > │ ### new_cursor 00:21:09 v #22791 > > 00:21:09 v #22792 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22793 > > inl new_cursor forall t. (x : t) : cursor t = 00:21:09 v #22794 > > !\($'"std::io::Cursor::new(!x)"') 00:21:09 v #22795 > > 00:21:09 v #22796 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22797 > > │ ### lines 00:21:09 v #22798 > > 00:21:09 v #22799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22800 > > nominal lines t = 00:21:09 v #22801 > > `( 00:21:09 v #22802 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:09 v #22803 > > Fable.Core.Emit(\"std::io::Lines<$0>\")>]]\n#endif\ntype std_io_Lines<'T> = 00:21:09 v #22804 > > class end" 00:21:09 v #22805 > > $'' : $'std_io_Lines<`t>' 00:21:09 v #22806 > > ) 00:21:09 v #22807 > > 00:21:09 v #22808 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22809 > > │ ### buf_read_lines 00:21:09 v #22810 > > 00:21:09 v #22811 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22812 > > inl buf_read_lines forall t. (buf_reader : buf_reader t) : lines (buf_reader t) 00:21:09 v #22813 > > = 00:21:09 v #22814 > > !\($'"std::io::BufRead::lines(!buf_reader)"') 00:21:09 v #22815 > > 00:21:09 v #22816 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22817 > > │ ### decode_reader_bytes 00:21:09 v #22818 > > 00:21:09 v #22819 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22820 > > nominal decode_reader_bytes t u = 00:21:09 v #22821 > > `( 00:21:09 v #22822 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:09 v #22823 > > Fable.Core.Emit(\"encoding_rs_io::DecodeReaderBytes<$0, $1>\")>]]\n#endif\ntype 00:21:09 v #22824 > > encoding_rs_io_DecodeReaderBytes<'T, 'U> = class end" 00:21:09 v #22825 > > $'' : $'encoding_rs_io_DecodeReaderBytes<`t, `u>' 00:21:09 v #22826 > > ) 00:21:09 v #22827 > > 00:21:09 v #22828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22829 > > │ ### decode_reader_bytes_build 00:21:09 v #22830 > > 00:21:09 v #22831 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22832 > > inl decode_reader_bytes_build forall t. (x : t) : decode_reader_bytes t (am'.vec 00:21:09 v #22833 > > u8) = 00:21:09 v #22834 > > 00:21:09 v #22835 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:21:09 v #22836 > > :UTF_8)).build(!x)"') 00:21:09 v #22837 > > 00:21:09 v #22838 > > !\($'"encoding_rs_io::DecodeReaderBytesBuilder::new().encoding(Some(encoding_rs: 00:21:09 v #22839 > > :UTF_8)).utf8_passthru(true).build(!x)"') 00:21:09 v #22840 > > !\\(x, 00:21:09 v #22841 > > $'"encoding_rs_io::DecodeReaderBytesBuilder::new().utf8_passthru(true).build($0) 00:21:09 v #22842 > > "') 00:21:09 v #22843 > > // !\($'"encoding_rs_io::DecodeReaderBytes::new(!x)"') 00:21:09 v #22844 > > 00:21:09 v #22845 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:09 v #22846 > > │ ### buf_reader_read 00:21:09 v #22847 > > 00:21:09 v #22848 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:09 v #22849 > > inl buf_reader_read forall el dim. (slice : am'.slice' el dim) (buf_reader : 00:21:09 v #22850 > > buf_reader el) : resultm.result' unativeint io_error = 00:21:09 v #22851 > > (!\($'"true; let mut !slice = !slice"') : bool) |> ignore 00:21:09 v #22852 > > !\($'"std::io::Read::read(&mut !buf_reader, &mut !slice)"') 00:21:10 v #22853 > > 00:21:10 v #22854 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:10 v #22855 > > │ ### io_read_by_ref 00:21:10 v #22856 > > 00:21:10 v #22857 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:10 v #22858 > > inl io_read_by_ref forall t. (lines : lines t) : lines t = 00:21:10 v #22859 > > !\\(lines, $'"std::io::Read::by_ref($0)"') 00:21:10 v #22860 > 00:00:13 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 24186 } 00:21:10 v #22861 > 00:00:13 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:10 v #22862 > 00:00:14 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.ipynb to html 00:21:10 v #22863 > 00:00:14 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:10 v #22864 > 00:00:14 v #7 ! validate(nb) 00:21:11 v #22865 > 00:00:14 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:11 v #22866 > 00:00:14 v #9 ! return _pygments_highlight( 00:21:11 v #22867 > 00:00:15 v #10 ! [NbConvertApp] Writing 372356 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html 00:21:11 v #22868 > 00:00:15 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:21:11 v #22869 > 00:00:15 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:21:11 v #22870 > 00:00:15 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/stream.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:12 v #22871 > 00:00:15 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:12 v #22872 > 00:00:15 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:12 v #22873 > 00:00:15 d #16 spiral.run / dib / { exit_code = 0; result_length = 25141 } 00:21:12 d #22874 runtime.execute_with_options_async / { exit_code = 0; output_length = 29138 } 00:21:12 d #31 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path stream.dib --retries 3 00:21:12 d #22875 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path threading.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:12 v #22876 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "threading.dib", "--retries", "3"])) } 00:21:12 v #22877 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:13 v #22878 > > 00:21:13 v #22879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:13 v #22880 > > │ # threading 00:21:16 v #22881 > > 00:21:16 v #22882 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 v #22883 > > open rust 00:21:16 v #22884 > > open rust_operators 00:21:16 v #22885 > > 00:21:16 v #22886 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:16 v #22887 > > //// test 00:21:16 v #22888 > > 00:21:16 v #22889 > > open testing 00:21:17 v #22890 > > 00:21:17 v #22891 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22892 > > │ ## rust 00:21:17 v #22893 > > 00:21:17 v #22894 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22895 > > │ ### sleep 00:21:17 v #22896 > > 00:21:17 v #22897 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22898 > > inl sleep (duration : date_time.duration) : () = 00:21:17 v #22899 > > inl duration = join duration 00:21:17 v #22900 > > !\($'"std::thread::sleep(!duration)"') 00:21:17 v #22901 > > 00:21:17 v #22902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22903 > > │ ### join_handle 00:21:17 v #22904 > > 00:21:17 v #22905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22906 > > nominal join_handle t = 00:21:17 v #22907 > > `( 00:21:17 v #22908 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:17 v #22909 > > Fable.Core.Emit(\"std::thread::JoinHandle<$0>\")>]]\n#endif\ntype 00:21:17 v #22910 > > std_thread_JoinHandle<'T> = class end" 00:21:17 v #22911 > > $'' : $'std_thread_JoinHandle<`t>' 00:21:17 v #22912 > > ) 00:21:17 v #22913 > > 00:21:17 v #22914 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22915 > > │ ### spawn 00:21:17 v #22916 > > 00:21:17 v #22917 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22918 > > inl spawn forall t. depth flag (x : () -> t) : join_handle t = 00:21:17 v #22919 > > if flag = 1u8 00:21:17 v #22920 > > then (!\($'"true; let __spawn = std::thread::spawn(move || { //"') : bool) 00:21:17 v #22921 > > |> ignore 00:21:17 v #22922 > > else (!\($'"true; let __spawn = std::thread::spawn(|| { //"') : bool) |> 00:21:17 v #22923 > > ignore 00:21:17 v #22924 > > 00:21:17 v #22925 > > let x' = x () 00:21:17 v #22926 > > inl x' = join x' 00:21:17 v #22927 > > 00:21:17 v #22928 > > x' |> rust.fix_closure depth 00:21:17 v #22929 > > 00:21:17 v #22930 > > !\($'"__spawn"') 00:21:17 v #22931 > > 00:21:17 v #22932 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22933 > > │ ### join' 00:21:17 v #22934 > > 00:21:17 v #22935 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22936 > > inl join' forall t. 00:21:17 v #22937 > > (x : join_handle t) 00:21:17 v #22938 > > : resultm.result' 00:21:17 v #22939 > > t 00:21:17 v #22940 > > ( 00:21:17 v #22941 > > rust.box ( 00:21:17 v #22942 > > rust.lifetime_ref 00:21:17 v #22943 > > rust.dyn' 00:21:17 v #22944 > > ( 00:21:17 v #22945 > > rust.lifetime_join 00:21:17 v #22946 > > rust.any 00:21:17 v #22947 > > ( 00:21:17 v #22948 > > rust.lifetime_ref 00:21:17 v #22949 > > rust.send 00:21:17 v #22950 > > rust.static_lifetime 00:21:17 v #22951 > > ) 00:21:17 v #22952 > > ) 00:21:17 v #22953 > > ) 00:21:17 v #22954 > > ) = 00:21:17 v #22955 > > !\\(x, $'"std::thread::JoinHandle::join($0)"') 00:21:17 v #22956 > > 00:21:17 v #22957 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22958 > > │ ### arc 00:21:17 v #22959 > > 00:21:17 v #22960 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22961 > > nominal arc t = 00:21:17 v #22962 > > `( 00:21:17 v #22963 > > backend_switch `(()) `({}) { 00:21:17 v #22964 > > Fsharp = (fun () => global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:17 v #22965 > > Fable.Core.Emit(\"std::sync::Arc<$0>\")>]]\n#endif\ntype std_sync_Arc<'T> = 00:21:17 v #22966 > > class end") : () -> () 00:21:17 v #22967 > > } 00:21:17 v #22968 > > $'' : $'std_sync_Arc<`t>' 00:21:17 v #22969 > > ) 00:21:17 v #22970 > > 00:21:17 v #22971 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22972 > > │ ### new_arc 00:21:17 v #22973 > > 00:21:17 v #22974 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22975 > > inl new_arc forall t. (x : t) : arc t = 00:21:17 v #22976 > > !\($'"std::sync::Arc::new(!x)"') 00:21:17 v #22977 > > 00:21:17 v #22978 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:17 v #22979 > > │ ### mutex 00:21:17 v #22980 > > 00:21:17 v #22981 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:17 v #22982 > > nominal mutex t = 00:21:17 v #22983 > > `( 00:21:17 v #22984 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:17 v #22985 > > Fable.Core.Emit(\"std::sync::Mutex<$0>\")>]]\n#endif\ntype std_sync_Mutex<'T> = 00:21:17 v #22986 > > class end" 00:21:17 v #22987 > > $'' : $'std_sync_Mutex<`t>' 00:21:17 v #22988 > > ) 00:21:18 v #22989 > > 00:21:18 v #22990 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #22991 > > │ ### new_mutex 00:21:18 v #22992 > > 00:21:18 v #22993 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #22994 > > inl new_mutex forall t. (x : t) : mutex t = 00:21:18 v #22995 > > !\($'"std::sync::Mutex::new(!x)"') 00:21:18 v #22996 > > 00:21:18 v #22997 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #22998 > > │ ### new_mutex_mut 00:21:18 v #22999 > > 00:21:18 v #23000 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #23001 > > inl new_mutex_mut forall t. (x : rust.ref (rust.mut' t)) : mutex t = 00:21:18 v #23002 > > !\($'"std::sync::Mutex::new(!x)"') 00:21:18 v #23003 > > 00:21:18 v #23004 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #23005 > > │ ### rw_lock 00:21:18 v #23006 > > 00:21:18 v #23007 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #23008 > > nominal rw_lock t = 00:21:18 v #23009 > > `( 00:21:18 v #23010 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:18 v #23011 > > Fable.Core.Emit(\"std::sync::RwLock<$0>\")>]]\n#endif\ntype std_sync_RwLock<'T> 00:21:18 v #23012 > > = class end" 00:21:18 v #23013 > > $'' : $'std_sync_RwLock<`t>' 00:21:18 v #23014 > > ) 00:21:18 v #23015 > > 00:21:18 v #23016 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #23017 > > │ ### new_rw_lock 00:21:18 v #23018 > > 00:21:18 v #23019 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #23020 > > inl new_rw_lock forall t. (x : t) : rw_lock t = 00:21:18 v #23021 > > !\\(x, $'"std::sync::RwLock::new($0)"') 00:21:18 v #23022 > > 00:21:18 v #23023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #23024 > > │ ### new_arc_mutex 00:21:18 v #23025 > > 00:21:18 v #23026 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #23027 > > inl new_arc_mutex forall t. (x : t) : arc (mutex t) = 00:21:18 v #23028 > > x |> new_mutex |> new_arc 00:21:18 v #23029 > > 00:21:18 v #23030 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:18 v #23031 > > │ ### new_arc_rw_lock 00:21:18 v #23032 > > 00:21:18 v #23033 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:18 v #23034 > > inl new_arc_rw_lock forall t. (x : t) : arc (rw_lock t) = 00:21:18 v #23035 > > x |> new_rw_lock |> new_arc 00:21:19 v #23036 > > 00:21:19 v #23037 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23038 > > │ ### arc_clone 00:21:19 v #23039 > > 00:21:19 v #23040 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23041 > > inl arc_clone forall t. (x : arc t) : arc t = 00:21:19 v #23042 > > inl x = join x 00:21:19 v #23043 > > !\($'"std::sync::Arc::clone(&!x)"') 00:21:19 v #23044 > > 00:21:19 v #23045 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23046 > > │ ### arc_ptr_eq 00:21:19 v #23047 > > 00:21:19 v #23048 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23049 > > inl arc_ptr_eq forall t. (a : rust.ref (arc t)) (b : rust.ref (arc t)) : bool = 00:21:19 v #23050 > > !\\((a, b), $'"std::sync::Arc::ptr_eq($0, $1)"') 00:21:19 v #23051 > > 00:21:19 v #23052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23053 > > │ ### arc_try_unwrap 00:21:19 v #23054 > > 00:21:19 v #23055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23056 > > inl arc_try_unwrap forall t. (x : arc t) : resultm.result' t (arc t) = 00:21:19 v #23057 > > !\\(x, $'"std::sync::Arc::try_unwrap($0)"') 00:21:19 v #23058 > > 00:21:19 v #23059 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23060 > > │ ### arc_into_raw 00:21:19 v #23061 > > 00:21:19 v #23062 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23063 > > inl arc_into_raw forall t. (x : arc t) : rust.ptr t = 00:21:19 v #23064 > > !\\(x, $'"std::sync::Arc::into_raw($0)"') 00:21:19 v #23065 > > 00:21:19 v #23066 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23067 > > │ ### arc_from_raw 00:21:19 v #23068 > > 00:21:19 v #23069 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23070 > > inl arc_from_raw forall t. (x : rust.ptr t) : arc t = 00:21:19 v #23071 > > !\\(x, $'"std::sync::Arc::from_raw($0)"') 00:21:19 v #23072 > > 00:21:19 v #23073 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23074 > > │ ### partial_eq_wrapper_arc_eq 00:21:19 v #23075 > > 00:21:19 v #23076 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23077 > > inl partial_eq_wrapper_arc_eq forall t. 00:21:19 v #23078 > > (self : rust.ref (rust.partial_eq_wrapper (arc t))) 00:21:19 v #23079 > > (other : rust.ref (rust.partial_eq_wrapper (arc t))) 00:21:19 v #23080 > > = 00:21:19 v #23081 > > self 00:21:19 v #23082 > > |> rust.unwrap_0_ref 00:21:19 v #23083 > > |> arc_ptr_eq ( 00:21:19 v #23084 > > other 00:21:19 v #23085 > > |> rust.unwrap_0_ref 00:21:19 v #23086 > > ) 00:21:19 v #23087 > > 00:21:19 v #23088 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:19 v #23089 > > │ ### new_partial_eq_wrapper_arc 00:21:19 v #23090 > > 00:21:19 v #23091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:19 v #23092 > > inl new_partial_eq_wrapper_arc forall t. (x : arc t) : rust.partial_eq_wrapper 00:21:19 v #23093 > > (arc t) = 00:21:19 v #23094 > > x |> rust.new_partial_eq_wrapper partial_eq_wrapper_arc_eq 00:21:20 v #23095 > > 00:21:20 v #23096 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23097 > > │ ### mutex_guard 00:21:20 v #23098 > > 00:21:20 v #23099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23100 > > nominal mutex_guard t = 00:21:20 v #23101 > > `( 00:21:20 v #23102 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:20 v #23103 > > Fable.Core.Emit(\"std::sync::MutexGuard<$0>\")>]]\n#endif\ntype 00:21:20 v #23104 > > std_sync_MutexGuard<'T> = class end" 00:21:20 v #23105 > > $'' : $'std_sync_MutexGuard<`t>' 00:21:20 v #23106 > > ) 00:21:20 v #23107 > > 00:21:20 v #23108 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23109 > > │ ### rw_lock_read_guard 00:21:20 v #23110 > > 00:21:20 v #23111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23112 > > nominal rw_lock_read_guard t = 00:21:20 v #23113 > > `( 00:21:20 v #23114 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:20 v #23115 > > Fable.Core.Emit(\"std::sync::RwLockReadGuard<$0>\")>]]\n#endif\ntype 00:21:20 v #23116 > > std_sync_RwLockReadGuard<'T> = class end" 00:21:20 v #23117 > > $'' : $'std_sync_RwLockReadGuard<`t>' 00:21:20 v #23118 > > ) 00:21:20 v #23119 > > 00:21:20 v #23120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23121 > > │ ### rw_lock_write_guard 00:21:20 v #23122 > > 00:21:20 v #23123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23124 > > nominal rw_lock_write_guard t = 00:21:20 v #23125 > > `( 00:21:20 v #23126 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:20 v #23127 > > Fable.Core.Emit(\"std::sync::RwLockWriteGuard<$0>\")>]]\n#endif\ntype 00:21:20 v #23128 > > std_sync_RwLockWriteGuard<'T> = class end" 00:21:20 v #23129 > > $'' : $'std_sync_RwLockWriteGuard<`t>' 00:21:20 v #23130 > > ) 00:21:20 v #23131 > > 00:21:20 v #23132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23133 > > │ ### poison_error 00:21:20 v #23134 > > 00:21:20 v #23135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23136 > > nominal poison_error t = 00:21:20 v #23137 > > `( 00:21:20 v #23138 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:20 v #23139 > > Fable.Core.Emit(\"std::sync::PoisonError<$0>\")>]]\n#endif\ntype 00:21:20 v #23140 > > std_sync_PoisonError<'T> = class end" 00:21:20 v #23141 > > $'' : $'std_sync_PoisonError<`t>' 00:21:20 v #23142 > > ) 00:21:20 v #23143 > > 00:21:20 v #23144 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23145 > > │ ### try_lock_error 00:21:20 v #23146 > > 00:21:20 v #23147 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23148 > > nominal try_lock_error t = 00:21:20 v #23149 > > `( 00:21:20 v #23150 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:20 v #23151 > > Fable.Core.Emit(\"std::sync::TryLockError<$0>\")>]]\n#endif\ntype 00:21:20 v #23152 > > std_sync_TryLockError<'T> = class end" 00:21:20 v #23153 > > $'' : $'std_sync_TryLockError<`t>' 00:21:20 v #23154 > > ) 00:21:20 v #23155 > > 00:21:20 v #23156 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:20 v #23157 > > │ ### arc_mutex_lock 00:21:20 v #23158 > > 00:21:20 v #23159 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:20 v #23160 > > inl arc_mutex_lock forall t. (x : arc (mutex t)) : resultm.result' (mutex_guard 00:21:20 v #23161 > > t) (poison_error (mutex_guard t)) = 00:21:20 v #23162 > > inl x = x |> rust.emit 00:21:20 v #23163 > > !\($'"!x.lock()"') 00:21:21 v #23164 > > 00:21:21 v #23165 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23166 > > │ ### arc_rw_lock_read 00:21:21 v #23167 > > 00:21:21 v #23168 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23169 > > inl arc_rw_lock_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:21 v #23170 > > (rw_lock_read_guard t) (poison_error (rw_lock_read_guard t)) = 00:21:21 v #23171 > > inl x = x |> rust.emit 00:21:21 v #23172 > > !\($'"!x.read()"') 00:21:21 v #23173 > > 00:21:21 v #23174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23175 > > │ ### arc_rw_lock_write 00:21:21 v #23176 > > 00:21:21 v #23177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23178 > > inl arc_rw_lock_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:21 v #23179 > > (rw_lock_write_guard t) (poison_error (rw_lock_write_guard t)) = 00:21:21 v #23180 > > inl x = x |> rust.emit 00:21:21 v #23181 > > !\($'"!x.write()"') 00:21:21 v #23182 > > 00:21:21 v #23183 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23184 > > │ ### arc_rw_lock_try_read 00:21:21 v #23185 > > 00:21:21 v #23186 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23187 > > inl arc_rw_lock_try_read forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:21 v #23188 > > (rw_lock_read_guard t) (try_lock_error (rw_lock_read_guard t)) = 00:21:21 v #23189 > > inl x = x |> rust.emit 00:21:21 v #23190 > > !\($'"!x.try_read()"') 00:21:21 v #23191 > > 00:21:21 v #23192 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23193 > > │ ### arc_rw_lock_try_write 00:21:21 v #23194 > > 00:21:21 v #23195 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23196 > > inl arc_rw_lock_try_write forall t. (x : arc (rw_lock t)) : resultm.result' 00:21:21 v #23197 > > (rw_lock_write_guard t) (try_lock_error (rw_lock_write_guard t)) = 00:21:21 v #23198 > > inl x = x |> rust.emit 00:21:21 v #23199 > > !\($'"!x.try_write()"') 00:21:21 v #23200 > > 00:21:21 v #23201 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23202 > > │ ### mutex_guard_ref 00:21:21 v #23203 > > 00:21:21 v #23204 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23205 > > inl mutex_guard_ref forall t. (x : mutex_guard t) : rust.ref t = 00:21:21 v #23206 > > !\\(x, $'"&$0"') 00:21:21 v #23207 > > 00:21:21 v #23208 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:21 v #23209 > > │ ### rw_lock_read_guard_ref 00:21:21 v #23210 > > 00:21:21 v #23211 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:21 v #23212 > > inl rw_lock_read_guard_ref forall t. (x : rw_lock_read_guard t) : rust.ref t = 00:21:21 v #23213 > > !\\(x, $'"&$0"') 00:21:22 v #23214 > > 00:21:22 v #23215 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23216 > > │ ### rw_lock_write_guard_ref 00:21:22 v #23217 > > 00:21:22 v #23218 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23219 > > inl rw_lock_write_guard_ref forall t. (x : rw_lock_write_guard t) : rust.ref t = 00:21:22 v #23220 > > !\\(x, $'"&$0"') 00:21:22 v #23221 > > 00:21:22 v #23222 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23223 > > │ ### mutex_guard_ref_mut 00:21:22 v #23224 > > 00:21:22 v #23225 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23226 > > inl mutex_guard_ref_mut forall t. (x : mutex_guard t) : rust.ref (rust.mut' t) = 00:21:22 v #23227 > > inl x = join x 00:21:22 v #23228 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:22 v #23229 > > !\\(x, $'"&mut $0"') 00:21:22 v #23230 > > 00:21:22 v #23231 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23232 > > │ ### mutex_guard_ref_mut' 00:21:22 v #23233 > > 00:21:22 v #23234 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23235 > > inl mutex_guard_ref_mut' forall t. (x : mutex_guard (rust.ref (rust.mut' t))) : 00:21:22 v #23236 > > rust.ref (rust.mut' t) = 00:21:22 v #23237 > > inl x = x |> rust.emit 00:21:22 v #23238 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:22 v #23239 > > !\\(x, $'"&mut $0"') 00:21:22 v #23240 > > 00:21:22 v #23241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23242 > > │ ### mutex_guard_as_mut 00:21:22 v #23243 > > 00:21:22 v #23244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23245 > > inl mutex_guard_as_mut forall (t : * -> *) u. (x : mutex_guard (t u)) : t 00:21:22 v #23246 > > (rust.ref (rust.mut' u)) = 00:21:22 v #23247 > > (!\($'"true; let mut !x = !x"') : bool) |> ignore 00:21:22 v #23248 > > !\\(x, $'"$0.as_mut()"') 00:21:22 v #23249 > > 00:21:22 v #23250 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23251 > > │ ### channel_receiver 00:21:22 v #23252 > > 00:21:22 v #23253 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23254 > > nominal channel_receiver t = 00:21:22 v #23255 > > `( 00:21:22 v #23256 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:22 v #23257 > > Fable.Core.Emit(\"std::sync::mpsc::Receiver<$0>\")>]]\n#endif\ntype 00:21:22 v #23258 > > std_sync_mpsc_Receiver<'T> = class end" 00:21:22 v #23259 > > $'' : $'std_sync_mpsc_Receiver<`t>' 00:21:22 v #23260 > > ) 00:21:22 v #23261 > > 00:21:22 v #23262 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:22 v #23263 > > │ ### channel_sender 00:21:22 v #23264 > > 00:21:22 v #23265 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:22 v #23266 > > nominal channel_sender t = 00:21:22 v #23267 > > `( 00:21:22 v #23268 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:22 v #23269 > > Fable.Core.Emit(\"std::sync::mpsc::Sender<$0>\")>]]\n#endif\ntype 00:21:22 v #23270 > > std_sync_mpsc_Sender<'T> = class end" 00:21:22 v #23271 > > $'' : $'std_sync_mpsc_Sender<`t>' 00:21:22 v #23272 > > ) 00:21:23 v #23273 > > 00:21:23 v #23274 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23275 > > │ ### new_channel 00:21:23 v #23276 > > 00:21:23 v #23277 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23278 > > inl new_channel () : channel_sender sm'.std_string * arc (channel_receiver 00:21:23 v #23279 > > sm'.std_string) = 00:21:23 v #23280 > > !\($'"{ let (sender, receiver) = std::sync::mpsc::channel(); (sender, 00:21:23 v #23281 > > std::sync::Arc::new(receiver)) }"') 00:21:23 v #23282 > > 00:21:23 v #23283 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23284 > > │ ### send_error 00:21:23 v #23285 > > 00:21:23 v #23286 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23287 > > nominal send_error t = 00:21:23 v #23288 > > `( 00:21:23 v #23289 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:21:23 v #23290 > > Fable.Core.Emit(\"std::sync::mpsc::SendError<$0>\")>]]\n#endif\ntype 00:21:23 v #23291 > > std_sync_mpsc_SendError<'T> = class end" 00:21:23 v #23292 > > $'' : $'std_sync_mpsc_SendError<`t>' 00:21:23 v #23293 > > ) 00:21:23 v #23294 > > 00:21:23 v #23295 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23296 > > │ ### channel_send 00:21:23 v #23297 > > 00:21:23 v #23298 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23299 > > inl channel_send forall t. (line : t) (sender : rust.ref (channel_sender t)) : 00:21:23 v #23300 > > resultm.result' () (send_error sm'.std_string) = 00:21:23 v #23301 > > !\\((sender, line), $'"$0.send($1)"') 00:21:23 v #23302 > > 00:21:23 v #23303 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23304 > > │ ## fsharp 00:21:23 v #23305 > > 00:21:23 v #23306 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23307 > > │ ### sleep' 00:21:23 v #23308 > > 00:21:23 v #23309 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23310 > > inl sleep' (n : i32) : () = 00:21:23 v #23311 > > run_target function 00:21:23 v #23312 > > | Fsharp (Native) 00:21:23 v #23313 > > | Rust _ 00:21:23 v #23314 > > | Python _ => fun () => $'System.Threading.Thread.Sleep' n 00:21:23 v #23315 > > | _ => fun () => () 00:21:23 v #23316 > > 00:21:23 v #23317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23318 > > │ ### thread 00:21:23 v #23319 > > 00:21:23 v #23320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23321 > > nominal thread = $'System.Threading.Thread' 00:21:23 v #23322 > > 00:21:23 v #23323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23324 > > │ ### cancellation_token 00:21:23 v #23325 > > 00:21:23 v #23326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23327 > > nominal cancellation_token = $'System.Threading.CancellationToken' 00:21:23 v #23328 > > 00:21:23 v #23329 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:23 v #23330 > > │ ### cancellation_token_source 00:21:23 v #23331 > > 00:21:23 v #23332 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:23 v #23333 > > nominal cancellation_token_source = $'System.Threading.CancellationTokenSource' 00:21:24 v #23334 > > 00:21:24 v #23335 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23336 > > │ ### cancellation_token_registration 00:21:24 v #23337 > > 00:21:24 v #23338 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23339 > > nominal cancellation_token_registration = 00:21:24 v #23340 > > $'System.Threading.CancellationTokenRegistration' 00:21:24 v #23341 > > 00:21:24 v #23342 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23343 > > │ ### cancellation_source_token 00:21:24 v #23344 > > 00:21:24 v #23345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23346 > > inl cancellation_source_token (x : cancellation_token_source) : 00:21:24 v #23347 > > cancellation_token = 00:21:24 v #23348 > > $'!x.Token' 00:21:24 v #23349 > > 00:21:24 v #23350 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23351 > > │ ### cancellation_source_cancel 00:21:24 v #23352 > > 00:21:24 v #23353 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23354 > > inl cancellation_source_cancel (x : cancellation_token_source) : () = 00:21:24 v #23355 > > run_target function 00:21:24 v #23356 > > | Fsharp (Native) => fun () => 00:21:24 v #23357 > > $'!x.Cancel' () 00:21:24 v #23358 > > | _ => fun () => null () 00:21:24 v #23359 > > 00:21:24 v #23360 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23361 > > │ ### create_linked_token_source 00:21:24 v #23362 > > 00:21:24 v #23363 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23364 > > inl create_linked_token_source (x : array_base cancellation_token) : 00:21:24 v #23365 > > cancellation_token_source = 00:21:24 v #23366 > > x |> $'System.Threading.CancellationTokenSource.CreateLinkedTokenSource' 00:21:24 v #23367 > > 00:21:24 v #23368 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23369 > > │ ### concurrent_stack 00:21:24 v #23370 > > 00:21:24 v #23371 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23372 > > nominal concurrent_stack t = 00:21:24 v #23373 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' 00:21:24 v #23374 > > 00:21:24 v #23375 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:24 v #23376 > > │ ### concurrent_stack_push 00:21:24 v #23377 > > 00:21:24 v #23378 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:24 v #23379 > > inl concurrent_stack_push forall t. (item : t) (stack : concurrent_stack t) : () 00:21:24 v #23380 > > = 00:21:24 v #23381 > > run_target function 00:21:24 v #23382 > > | Fsharp (Native) => fun () => $'!stack.Push' item 00:21:24 v #23383 > > | _ => fun () => () 00:21:25 v #23384 > > 00:21:25 v #23385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:25 v #23386 > > │ ### token_none 00:21:25 v #23387 > > 00:21:25 v #23388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23389 > > inl token_none () : cancellation_token = 00:21:25 v #23390 > > $'`cancellation_token.None' 00:21:25 v #23391 > > 00:21:25 v #23392 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:25 v #23393 > > │ ### new_concurrent_stack 00:21:25 v #23394 > > 00:21:25 v #23395 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23396 > > inl new_concurrent_stack forall t. () : concurrent_stack t = 00:21:25 v #23397 > > $'System.Collections.Concurrent.ConcurrentStack<`t>' () 00:21:25 v #23398 > > 00:21:25 v #23399 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:25 v #23400 > > │ ### token_register 00:21:25 v #23401 > > 00:21:25 v #23402 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23403 > > inl token_register (fn : () -> ()) (ct : cancellation_token) : 00:21:25 v #23404 > > cancellation_token_registration = 00:21:25 v #23405 > > fn |> $'!ct.Register' 00:21:25 v #23406 > > 00:21:25 v #23407 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:25 v #23408 > > │ ### new_cancellation_token_source 00:21:25 v #23409 > > 00:21:25 v #23410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23411 > > inl new_cancellation_token_source () : cancellation_token_source = 00:21:25 v #23412 > > $'new `cancellation_token_source ()' 00:21:25 v #23413 > > 00:21:25 v #23414 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23415 > > inl token_cancellation_requested (ct : cancellation_token) : bool = 00:21:25 v #23416 > > $'!ct.IsCancellationRequested' 00:21:25 v #23417 > > 00:21:25 v #23418 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:25 v #23419 > > │ ### new_disposable_token 00:21:25 v #23420 > > 00:21:25 v #23421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:25 v #23422 > > inl new_disposable_token (merge_token : optionm'.option' cancellation_token) = 00:21:25 v #23423 > > run_target function 00:21:25 v #23424 > > | Fsharp (Native) => fun () => 00:21:25 v #23425 > > inl cts = new_cancellation_token_source () 00:21:25 v #23426 > > inl cts = 00:21:25 v #23427 > > match merge_token |> optionm'.unbox with 00:21:25 v #23428 > > | None => cts 00:21:25 v #23429 > > | Some merge_token => 00:21:25 v #23430 > > create_linked_token_source ;[[ cts |> 00:21:25 v #23431 > > cancellation_source_token; merge_token ]] 00:21:25 v #23432 > > inl disposable : _ () = new_disposable fun () => 00:21:25 v #23433 > > cts |> cancellation_source_cancel 00:21:25 v #23434 > > cts |> cancellation_source_token, disposable 00:21:25 v #23435 > > | _ => fun () => null () 00:21:26 v #23436 > > 00:21:26 v #23437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:26 v #23438 > > //// test 00:21:26 v #23439 > > 00:21:26 v #23440 > > inl run fn = 00:21:26 v #23441 > > inl token, disposable = new_disposable_token (None |> optionm'.box) 00:21:26 v #23442 > > disposable |> use |> ignore 00:21:26 v #23443 > > fn token 00:21:26 v #23444 > > fun () => 00:21:26 v #23445 > > fn token 00:21:26 v #23446 > > |> async.new_async 00:21:26 v #23447 > > |> async.start 00:21:26 v #23448 > > 00:21:26 v #23449 > > fun () => 00:21:26 v #23450 > > inl counter = mut 0i32 00:21:26 v #23451 > > 00:21:26 v #23452 > > inl fn (token : cancellation_token) = 00:21:26 v #23453 > > counter <- *counter + (if token |> token_cancellation_requested then 10 00:21:26 v #23454 > > else 1) 00:21:26 v #23455 > > 00:21:26 v #23456 > > join run fn 00:21:26 v #23457 > > async.sleep 10 |> async.do 00:21:26 v #23458 > > return *counter 00:21:26 v #23459 > > |> async.new_async_unit 00:21:26 v #23460 > > |> async.run_synchronously 00:21:26 v #23461 > > |> _assert_eq 11i32 00:21:27 v #23462 > > 00:21:27 v #23463 > > ── [ 1.54s - stdout ] ────────────────────────────────────────────────────────── 00:21:27 v #23464 > > │ __assert_eq / actual: 11 / expected: 11 00:21:27 v #23465 > > │ 00:21:27 v #23466 > > 00:21:27 v #23467 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:27 v #23468 > > │ ## main 00:21:27 v #23469 > > 00:21:27 v #23470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:27 v #23471 > > inl main () = 00:21:27 v #23472 > > $'let new_disposable_token x = !new_disposable_token x' : () 00:21:27 v #23473 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 25359 } 00:21:27 v #23474 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:28 v #23475 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.ipynb to html 00:21:28 v #23476 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:28 v #23477 > 00:00:16 v #7 ! validate(nb) 00:21:29 v #23478 > 00:00:16 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:29 v #23479 > 00:00:16 v #9 ! return _pygments_highlight( 00:21:29 v #23480 > 00:00:17 v #10 ! [NbConvertApp] Writing 383322 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html 00:21:29 v #23481 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:21:29 v #23482 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:21:29 v #23483 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/threading.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:29 v #23484 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:29 v #23485 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:29 v #23486 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 26320 } 00:21:29 d #23487 runtime.execute_with_options_async / { exit_code = 0; output_length = 30192 } 00:21:29 d #32 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path threading.dib --retries 3 00:21:29 d #23488 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path benchmark.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:29 v #23489 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "benchmark.dib", "--retries", "3"])) } 00:21:29 v #23490 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:31 v #23491 > > 00:21:31 v #23492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:31 v #23493 > > │ ## benchmark 00:21:33 v #23494 > > 00:21:33 v #23495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:33 v #23496 > > //// test 00:21:33 v #23497 > > 00:21:33 v #23498 > > open testing 00:21:34 v #23499 > > 00:21:34 v #23500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #23501 > > │ ## fsharp 00:21:34 v #23502 > > 00:21:34 v #23503 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #23504 > > │ ### test_case_result 00:21:34 v #23505 > > 00:21:34 v #23506 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #23507 > > type test_case_result = 00:21:34 v #23508 > > { 00:21:34 v #23509 > > input : string 00:21:34 v #23510 > > expected : string 00:21:34 v #23511 > > result : string 00:21:34 v #23512 > > time_list : array_base i64 00:21:34 v #23513 > > } 00:21:34 v #23514 > > 00:21:34 v #23515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #23516 > > │ ### run' 00:21:34 v #23517 > > 00:21:34 v #23518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #23519 > > inl run' forall t. count (fn : () -> t) = 00:21:34 v #23520 > > runtime.gc_collect () 00:21:34 v #23521 > > inl stopwatch = date_time.stopwatch () 00:21:34 v #23522 > > stopwatch |> date_time.stopwatch_start 00:21:34 v #23523 > > inl time1 = stopwatch |> date_time.stopwatch_elapsed_milliseconds 00:21:34 v #23524 > > inl result : t = 00:21:34 v #23525 > > am'.init_series 0 count 1i32 00:21:34 v #23526 > > |> fun x => a x : _ int _ 00:21:34 v #23527 > > |> am'.parallel_map fun _n => fn () 00:21:34 v #23528 > > |> am'.last 00:21:34 v #23529 > > inl time2 = (stopwatch |> date_time.stopwatch_elapsed_milliseconds) - time1 00:21:34 v #23530 > > result, time2 00:21:34 v #23531 > > 00:21:34 v #23532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #23533 > > │ ### run 00:21:34 v #23534 > > 00:21:34 v #23535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #23536 > > inl run forall input expected. 00:21:34 v #23537 > > count 00:21:34 v #23538 > > (solutions : list (string * (input -> expected))) 00:21:34 v #23539 > > ((input, expected) : (input * expected)) 00:21:34 v #23540 > > : test_case_result 00:21:34 v #23541 > > = 00:21:34 v #23542 > > inl input_str = input |> sm'.format_debug 00:21:34 v #23543 > > 00:21:34 v #23544 > > console.write_line "" 00:21:34 v #23545 > > trace Verbose 00:21:34 v #23546 > > fun () => "benchmark.run" 00:21:34 v #23547 > > fun () => { input_str = input_str |> sm'.ellipsis_end 40 } 00:21:34 v #23548 > > 00:21:34 v #23549 > > inl results_with_time : array_base _ = 00:21:34 v #23550 > > solutions 00:21:34 v #23551 > > |> listm'.indexed 00:21:34 v #23552 > > |> listm'.box 00:21:34 v #23553 > > |> listm'.to_array' 00:21:34 v #23554 > > |> am'.map_base fun ((i : int), (test_name, solution)) => 00:21:34 v #23555 > > inl result, time = 00:21:34 v #23556 > > fun () => solution input 00:21:34 v #23557 > > |> run' count 00:21:34 v #23558 > > trace Verbose 00:21:34 v #23559 > > fun () => "benchmark.run / solutions.map" 00:21:34 v #23560 > > fun () => { i = i + 1; test_name time } 00:21:34 v #23561 > > result, time 00:21:34 v #23562 > > 00:21:34 v #23563 > > match results_with_time |> am'.map_base fst with 00:21:34 v #23564 > > | array when (array |> (fun x => a x : _ int _) |> am'.length) <= 1 => () 00:21:34 v #23565 > > | array when array |> (fun x => a x : _ int _) |> am.forall' ((=) (array |> 00:21:34 v #23566 > > (fun x => a x : _ int _) |> am'.index 0)) => () 00:21:34 v #23567 > > | results => failwith ($'$"benchmark.run / error / results: {!results}"' : 00:21:34 v #23568 > > string) 00:21:34 v #23569 > > 00:21:34 v #23570 > > { 00:21:34 v #23571 > > input = input_str 00:21:34 v #23572 > > expected = expected |> sm'.format_debug 00:21:34 v #23573 > > result = results_with_time |> am'.map_base fst |> (fun x => a x : _ int 00:21:34 v #23574 > > _) |> am'.index 0 |> sm'.format_debug 00:21:34 v #23575 > > time_list = results_with_time |> am'.map_base snd 00:21:34 v #23576 > > } 00:21:34 v #23577 > > 00:21:34 v #23578 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:34 v #23579 > > │ ### run_all 00:21:34 v #23580 > > 00:21:34 v #23581 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:34 v #23582 > > inl run_all forall input expected. 00:21:34 v #23583 > > test_name 00:21:34 v #23584 > > count 00:21:34 v #23585 > > (solutions : list (string * (input -> expected))) 00:21:34 v #23586 > > test_cases 00:21:34 v #23587 > > = 00:21:34 v #23588 > > console.write_line "" 00:21:34 v #23589 > > console.write_line "```" 00:21:34 v #23590 > > trace Verbose 00:21:34 v #23591 > > fun () => "benchmark.run_all" 00:21:34 v #23592 > > fun () => { test_name count } 00:21:34 v #23593 > > test_cases 00:21:34 v #23594 > > |> listm'.box 00:21:34 v #23595 > > |> listm'.to_array' 00:21:34 v #23596 > > |> am'.map_base (run count solutions) 00:21:35 v #23597 > > 00:21:35 v #23598 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:35 v #23599 > > │ ### sort_result_list 00:21:35 v #23600 > > 00:21:35 v #23601 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:35 v #23602 > > inl sort_result_list results = 00:21:35 v #23603 > > inl table = 00:21:35 v #23604 > > inl rows = 00:21:35 v #23605 > > results 00:21:35 v #23606 > > |> am'.map_base fun (result : test_case_result) => 00:21:35 v #23607 > > inl best = 00:21:35 v #23608 > > result.time_list 00:21:35 v #23609 > > |> am'.indexed 00:21:35 v #23610 > > |> am'.map_base fun (i, time) => 00:21:35 v #23611 > > i + 1i32, time 00:21:35 v #23612 > > |> fun x => a x : _ int _ 00:21:35 v #23613 > > |> am'.sort_by snd 00:21:35 v #23614 > > |> am'.index 0i32 00:21:35 v #23615 > > |> sm'.format 00:21:35 v #23616 > > inl row = 00:21:35 v #23617 > > [[ 00:21:35 v #23618 > > result.input |> sm'.ellipsis_end 40 |> sm'.replace "|" 00:21:35 v #23619 > > "" 00:21:35 v #23620 > > result.expected 00:21:35 v #23621 > > result.result 00:21:35 v #23622 > > best 00:21:35 v #23623 > > ]] 00:21:35 v #23624 > > inl color : option console.console_color = 00:21:35 v #23625 > > open console 00:21:35 v #23626 > > match result.expected = result.result with 00:21:35 v #23627 > > | true => Some $'`console_color.DarkGreen' 00:21:35 v #23628 > > | false => Some $'`console_color.DarkRed' 00:21:35 v #23629 > > row, color 00:21:35 v #23630 > > 00:21:35 v #23631 > > inl header = 00:21:35 v #23632 > > [[ 00:21:35 v #23633 > > [[ 00:21:35 v #23634 > > "input" 00:21:35 v #23635 > > "expected" 00:21:35 v #23636 > > "result" 00:21:35 v #23637 > > "best" 00:21:35 v #23638 > > ]] 00:21:35 v #23639 > > [[ 00:21:35 v #23640 > > "---" 00:21:35 v #23641 > > "---" 00:21:35 v #23642 > > "---" 00:21:35 v #23643 > > "---" 00:21:35 v #23644 > > ]] 00:21:35 v #23645 > > ]] 00:21:35 v #23646 > > |> listm.map fun row => row, None 00:21:35 v #23647 > > |> listm'.box 00:21:35 v #23648 > > |> listm'.to_array' 00:21:35 v #23649 > > |> fun x => a x : _ int _ 00:21:35 v #23650 > > a rows 00:21:35 v #23651 > > |> am.append header 00:21:35 v #23652 > > |> fun (a x) => x 00:21:35 v #23653 > > 00:21:35 v #23654 > > inl formatted_table = 00:21:35 v #23655 > > inl length_map : mapm.map i32 i64 = 00:21:35 v #23656 > > table 00:21:35 v #23657 > > |> am'.map_base (fst >> listm'.box >> listm'.to_array') 00:21:35 v #23658 > > |> am'.transpose 00:21:35 v #23659 > > |> am'.map_base fun column => 00:21:35 v #23660 > > column 00:21:35 v #23661 > > |> am'.map_base sm.length 00:21:35 v #23662 > > |> fun x => a x : _ int _ 00:21:35 v #23663 > > |> am'.sort_descending 00:21:35 v #23664 > > |> am'.try_item 0i32 00:21:35 v #23665 > > |> optionm'.default_value 0i64 00:21:35 v #23666 > > |> am'.indexed 00:21:35 v #23667 > > |> fun x => a x : _ int _ 00:21:35 v #23668 > > |> mapm.of_array 00:21:35 v #23669 > > table 00:21:35 v #23670 > > |> am'.map_base fun (row, color) => 00:21:35 v #23671 > > inl new_row = 00:21:35 v #23672 > > row 00:21:35 v #23673 > > |> listm'.indexed 00:21:35 v #23674 > > |> listm.map fun (i, cell) => 00:21:35 v #23675 > > cell |> sm'.pad_right (length_map |> mapm.item i |> conv) ' 00:21:35 v #23676 > > ' 00:21:35 v #23677 > > |> listm'.box 00:21:35 v #23678 > > |> listm'.to_array' 00:21:35 v #23679 > > new_row, color 00:21:35 v #23680 > > 00:21:35 v #23681 > > console.write_line "```" 00:21:35 v #23682 > > formatted_table 00:21:35 v #23683 > > |> fun x => a x : _ int _ 00:21:35 v #23684 > > |> am'.to_list' 00:21:35 v #23685 > > |> listm'.unbox 00:21:35 v #23686 > > |> listm.iter fun (row, color) => 00:21:35 v #23687 > > match color with 00:21:35 v #23688 > > | Some color => color |> console.set_foreground_color 00:21:35 v #23689 > > | None => console.reset_color () 00:21:35 v #23690 > > 00:21:35 v #23691 > > a row |> sm'.join' "\t| " |> console.write_line 00:21:35 v #23692 > > 00:21:35 v #23693 > > console.reset_color () 00:21:35 v #23694 > > 00:21:35 v #23695 > > inl averages = 00:21:35 v #23696 > > results 00:21:35 v #23697 > > |> am'.map_base fun result => 00:21:35 v #23698 > > result.time_list 00:21:35 v #23699 > > |> am'.map_base ($'float' : i64 -> f64) 00:21:35 v #23700 > > |> am'.transpose 00:21:35 v #23701 > > |> am'.map_base ((fun x => a x : _ int _) >> am'.average) 00:21:35 v #23702 > > |> am'.map_base ($'int64' : f64 -> i64) 00:21:35 v #23703 > > |> am'.indexed 00:21:35 v #23704 > > |> fun x => a x : _ u64 _ 00:21:35 v #23705 > > 00:21:35 v #23706 > > console.write_line "```" 00:21:35 v #23707 > > averages 00:21:35 v #23708 > > |> am'.sort_by snd 00:21:35 v #23709 > > |> am'.to_list' 00:21:35 v #23710 > > |> listm'.unbox 00:21:35 v #23711 > > |> listm.iter fun ((i : i32), avg) => 00:21:35 v #23712 > > trace Verbose 00:21:35 v #23713 > > fun () => "benchmark.sort_result_list / averages.iter" 00:21:35 v #23714 > > fun () => { i = i + 1; avg } 00:21:35 v #23715 > > console.write_line "```" 00:21:35 v #23716 > > 00:21:35 v #23717 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:35 v #23718 > > //// test 00:21:35 v #23719 > > 00:21:35 v #23720 > > inl is_fast () = 00:21:35 v #23721 > > false 00:21:35 v #23722 > > 00:21:35 v #23723 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:35 v #23724 > > │ ### empty2Tests 00:21:35 v #23725 > > 00:21:35 v #23726 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:35 v #23727 > > │ Test: Empty2 00:21:35 v #23728 > > │ 00:21:35 v #23729 > > │ Solution: (a, a) 00:21:35 v #23730 > > │ Test case 1. A. Time: 59L 00:21:35 v #23731 > > │ 00:21:35 v #23732 > > │ Solution: (a, a) 00:21:35 v #23733 > > │ Test case 1. A. Time: 53L 00:21:35 v #23734 > > │ 00:21:35 v #23735 > > │ Input | Expected | Result | Best 00:21:35 v #23736 > > │ --- | --- | --- | --- 00:21:35 v #23737 > > │ (a, a) | a | a | (1, 59) 00:21:35 v #23738 > > │ (a, a) | a | a | (1, 53) 00:21:35 v #23739 > > │ 00:21:35 v #23740 > > │ Averages 00:21:35 v #23741 > > │ Test case 1. Average Time: 56L 00:21:35 v #23742 > > │ 00:21:35 v #23743 > > │ Ranking 00:21:35 v #23744 > > │ Test case 1. Average Time: 56L 00:21:35 v #23745 > > │ 00:21:35 v #23746 > > │ --- 00:21:35 v #23747 > > │ 00:21:35 v #23748 > > │ 00:21:35 v #23749 > > │ ``` 00:21:35 v #23750 > > │ 01:12:03 verbose #1 benchmark.run_all / {count = 00:21:35 v #23751 > > 2000000; test_name = empty_2_tests} 00:21:35 v #23752 > > │ 01:12:03 verbose #2 benchmark.run / {count = 2000000; 00:21:35 v #23753 > > expected = a; input = a, a; input_str = struct ("a", "a")} 00:21:35 v #23754 > > │ 01:12:03 verbose #3 benchmark.run / solutions.map 00:21:35 v #23755 > > {count = 2000000; expected = a; i = 0; input = a, a; input_str = struct ("a", 00:21:35 v #23756 > > "a"); test_name = A; time = 119} 00:21:35 v #23757 > > │ 01:12:04 verbose #4 benchmark.run / solutions.map 00:21:35 v #23758 > > {count = 2000000; expected = a; i = 1; input = a, a; input_str = struct ("a", 00:21:35 v #23759 > > "a"); test_name = B; time = 122} 00:21:35 v #23760 > > │ 01:12:04 verbose #5 benchmark.run / {count = 2000000; 00:21:35 v #23761 > > expected = b; input = b, b; input_str = struct ("b", "b")} 00:21:35 v #23762 > > │ 01:12:04 verbose #6 benchmark.run / solutions.map 00:21:35 v #23763 > > {count = 2000000; expected = b; i = 0; input = b, b; input_str = struct ("b", 00:21:35 v #23764 > > "b"); test_name = A; time = 110} 00:21:35 v #23765 > > │ 01:12:04 verbose #7 benchmark.run / solutions.map 00:21:35 v #23766 > > {count = 2000000; expected = b; i = 1; input = b, b; input_str = struct ("b", 00:21:35 v #23767 > > "b"); test_name = B; time = 120} 00:21:35 v #23768 > > │ ``` 00:21:35 v #23769 > > │ Input | Expected | Result | Best 00:21:35 v #23770 > > │ --- | --- | --- | --- 00:21:35 v #23771 > > │ struct ("a", "a") | "a" | "a" | struct (1L, 119L) 00:21:35 v #23772 > > │ struct ("b", "b") | "b" | "b" | struct (1L, 110L) 00:21:35 v #23773 > > │ ``` 00:21:35 v #23774 > > │ 01:12:04 verbose #8 benchmark.sort_result_list 00:21:35 v #23775 > > averages.iter / {avg = 114; i = 0} 00:21:35 v #23776 > > │ 01:12:04 verbose #9 benchmark.sort_result_list 00:21:35 v #23777 > > averages.iter / {avg = 121; i = 1} 00:21:35 v #23778 > > │ ``` 00:21:35 v #23779 > > │ ` 00:21:35 v #23780 > > 00:21:35 v #23781 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:35 v #23782 > > //// test 00:21:35 v #23783 > > 00:21:35 v #23784 > > inl get_solutions () = 00:21:35 v #23785 > > [[ 00:21:35 v #23786 > > "A", 00:21:35 v #23787 > > fun (a, _b) => 00:21:35 v #23788 > > a 00:21:35 v #23789 > > 00:21:35 v #23790 > > "B", 00:21:35 v #23791 > > fun (_a, b) => 00:21:35 v #23792 > > b 00:21:35 v #23793 > > ]] 00:21:35 v #23794 > > 00:21:35 v #23795 > > inl rec empty_2_tests () = 00:21:35 v #23796 > > inl test_cases = [[ 00:21:35 v #23797 > > ("a", "a"), "a" 00:21:35 v #23798 > > ("b", "b"), "b" 00:21:35 v #23799 > > ]] 00:21:35 v #23800 > > 00:21:35 v #23801 > > inl solutions = get_solutions () 00:21:35 v #23802 > > 00:21:35 v #23803 > > // inl is_fast () = true 00:21:35 v #23804 > > 00:21:35 v #23805 > > inl count = 00:21:35 v #23806 > > if is_fast () 00:21:35 v #23807 > > then 1000i32 00:21:35 v #23808 > > else 2000000i32 00:21:35 v #23809 > > 00:21:35 v #23810 > > run_all (reflection.nameof { empty_2_tests }) count solutions test_cases 00:21:35 v #23811 > > |> sort_result_list 00:21:35 v #23812 > > 00:21:35 v #23813 > > empty_2_tests () 00:21:38 v #23814 > > 00:21:38 v #23815 > > ── [ 3.15s - stdout ] ────────────────────────────────────────────────────────── 00:21:38 v #23816 > > │ 00:21:38 v #23817 > > │ ``` 00:21:38 v #23818 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = 00:21:38 v #23819 > > empty_2_tests; count = 2000000 } 00:21:38 v #23820 > > │ 00:21:38 v #23821 > > │ 00:00:00 v #2 benchmark.run / { input_str = struct ("a", 00:21:38 v #23822 > > "a") } 00:21:38 v #23823 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; 00:21:38 v #23824 > > test_name = A; time = 24 } 00:21:38 v #23825 > > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; 00:21:38 v #23826 > > test_name = B; time = 12 } 00:21:38 v #23827 > > │ 00:21:38 v #23828 > > │ 00:00:00 v #5 benchmark.run / { input_str = struct ("b", 00:21:38 v #23829 > > "b") } 00:21:38 v #23830 > > │ 00:00:00 v #6 benchmark.run / solutions.map / { i = 1; 00:21:38 v #23831 > > test_name = A; time = 13 } 00:21:38 v #23832 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 2; 00:21:38 v #23833 > > test_name = B; time = 14 } 00:21:38 v #23834 > > │ ``` 00:21:38 v #23835 > > │ input | expected | result | best 00:21:38 v #23836 > > │ --- | --- | --- | --- 00:21:38 v #23837 > > │ struct ("a", "a") | "a" | "a" | 2, 12 00:21:38 v #23838 > > │ struct ("b", "b") | "b" | "b" | 1, 13 00:21:38 v #23839 > > │ ``` 00:21:38 v #23840 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter 00:21:38 v #23841 > > / { i = 2; avg = 13 } 00:21:38 v #23842 > > │ 00:00:00 v #9 benchmark.sort_result_list / averages.iter 00:21:38 v #23843 > > / { i = 1; avg = 18 } 00:21:38 v #23844 > > │ ``` 00:21:38 v #23845 > > │ 00:21:38 v #23846 > > 00:21:38 v #23847 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:38 v #23848 > > │ ### emptyTests 00:21:38 v #23849 > > 00:21:38 v #23850 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:38 v #23851 > > │ Test: Empty 00:21:38 v #23852 > > │ 00:21:38 v #23853 > > │ Solution: 0 00:21:38 v #23854 > > │ Test case 1. A. Time: 61L 00:21:38 v #23855 > > │ 00:21:38 v #23856 > > │ Solution: 2 00:21:38 v #23857 > > │ Test case 1. A. Time: 62L 00:21:38 v #23858 > > │ 00:21:38 v #23859 > > │ Solution: 5 00:21:38 v #23860 > > │ Test case 1. A. Time: 70L 00:21:38 v #23861 > > │ 00:21:38 v #23862 > > │ Input | Expected | Result | Best 00:21:38 v #23863 > > │ --- | --- | --- | --- 00:21:38 v #23864 > > │ 0 | 0 | 0 | (1, 61) 00:21:38 v #23865 > > │ 2 | 2 | 2 | (1, 62) 00:21:38 v #23866 > > │ 5 | 5 | 5 | (1, 70) 00:21:38 v #23867 > > │ 00:21:38 v #23868 > > │ Averages 00:21:38 v #23869 > > │ Test case 1. Average Time: 64L 00:21:38 v #23870 > > │ 00:21:38 v #23871 > > │ Ranking 00:21:38 v #23872 > > │ Test case 1. Average Time: 64L 00:21:38 v #23873 > > │ 00:21:38 v #23874 > > │ --- 00:21:38 v #23875 > > │ 00:21:38 v #23876 > > │ ``` 00:21:38 v #23877 > > │ 01:21:25 verbose #1 benchmark.run_all / {count = 00:21:38 v #23878 > > 2000000; test_name = empty_1_tests} 00:21:38 v #23879 > > │ 01:21:25 verbose #2 benchmark.run / {count = 2000000; 00:21:38 v #23880 > > expected = +1.000000; input = +0.000000; input_str = 0.0} 00:21:38 v #23881 > > │ 01:21:25 verbose #3 benchmark.run / solutions.map 00:21:38 v #23882 > > {count = 2000000; expected = +1.000000; i = 0; input = +0.000000; input_str = 00:21:38 v #23883 > > 0.0; test_name = A; time = 36} 00:21:38 v #23884 > > │ 01:21:25 verbose #4 benchmark.run / {count = 2000000; 00:21:38 v #23885 > > expected = +3.000000; input = +2.000000; input_str = 2.0} 00:21:38 v #23886 > > │ 01:21:25 verbose #5 benchmark.run / solutions.map 00:21:38 v #23887 > > {count = 2000000; expected = +3.000000; i = 0; input = +2.000000; input_str = 00:21:38 v #23888 > > 2.0; test_name = A; time = 20} 00:21:38 v #23889 > > │ 01:21:25 verbose #6 benchmark.run / {count = 2000000; 00:21:38 v #23890 > > expected = +6.000000; input = +5.000000; input_str = 5.0} 00:21:38 v #23891 > > │ 01:21:25 verbose #7 benchmark.run / solutions.map 00:21:38 v #23892 > > {count = 2000000; expected = +6.000000; i = 0; input = +5.000000; input_str = 00:21:38 v #23893 > > 5.0; test_name = A; time = 22} 00:21:38 v #23894 > > │ ``` 00:21:38 v #23895 > > │ Input | Expected | Result | Best 00:21:38 v #23896 > > │ --- | --- | --- | --- 00:21:38 v #23897 > > │ 0.0 | 1.0 | 1.0 | struct (1L, 36L) 00:21:38 v #23898 > > │ 2.0 | 3.0 | 3.0 | struct (1L, 20L) 00:21:38 v #23899 > > │ 5.0 | 6.0 | 6.0 | struct (1L, 22L) 00:21:38 v #23900 > > │ ``` 00:21:38 v #23901 > > │ 01:21:25 verbose #8 benchmark.sort_result_list 00:21:38 v #23902 > > averages.iter / {avg = 26; i = 0} 00:21:38 v #23903 > > │ ``` 00:21:38 v #23904 > > 00:21:38 v #23905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:38 v #23906 > > //// test 00:21:38 v #23907 > > 00:21:38 v #23908 > > inl get_solutions () = 00:21:38 v #23909 > > [[ 00:21:38 v #23910 > > "A", 00:21:38 v #23911 > > fun n => 00:21:38 v #23912 > > n + 1f64 00:21:38 v #23913 > > ]] 00:21:38 v #23914 > > 00:21:38 v #23915 > > inl rec empty_1_tests () = 00:21:38 v #23916 > > inl test_cases = [[ 00:21:38 v #23917 > > 0, 1 00:21:38 v #23918 > > 2, 3 00:21:38 v #23919 > > 5, 6 00:21:38 v #23920 > > ]] 00:21:38 v #23921 > > 00:21:38 v #23922 > > inl solutions = get_solutions () 00:21:38 v #23923 > > 00:21:38 v #23924 > > // inl is_fast () = true 00:21:38 v #23925 > > 00:21:38 v #23926 > > inl count = 00:21:38 v #23927 > > if is_fast () 00:21:38 v #23928 > > then 1000i32 00:21:38 v #23929 > > else 2000000i32 00:21:38 v #23930 > > 00:21:38 v #23931 > > run_all (reflection.nameof { empty_1_tests }) count solutions test_cases 00:21:38 v #23932 > > |> sort_result_list 00:21:38 v #23933 > > 00:21:38 v #23934 > > empty_1_tests () 00:21:40 v #23935 > > 00:21:40 v #23936 > > ── [ 1.92s - stdout ] ────────────────────────────────────────────────────────── 00:21:40 v #23937 > > │ 00:21:40 v #23938 > > │ ``` 00:21:40 v #23939 > > │ 00:00:00 v #1 benchmark.run_all / { test_name = 00:21:40 v #23940 > > empty_1_tests; count = 2000000 } 00:21:40 v #23941 > > │ 00:21:40 v #23942 > > │ 00:00:00 v #2 benchmark.run / { input_str = 0.0 } 00:21:40 v #23943 > > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; 00:21:40 v #23944 > > test_name = A; time = 21 } 00:21:40 v #23945 > > │ 00:21:40 v #23946 > > │ 00:00:00 v #4 benchmark.run / { input_str = 2.0 } 00:21:40 v #23947 > > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 1; 00:21:40 v #23948 > > test_name = A; time = 12 } 00:21:40 v #23949 > > │ 00:21:40 v #23950 > > │ 00:00:00 v #6 benchmark.run / { input_str = 5.0 } 00:21:40 v #23951 > > │ 00:00:00 v #7 benchmark.run / solutions.map / { i = 1; 00:21:40 v #23952 > > test_name = A; time = 14 } 00:21:40 v #23953 > > │ ``` 00:21:40 v #23954 > > │ input | expected | result | best 00:21:40 v #23955 > > │ --- | --- | --- | --- 00:21:40 v #23956 > > │ 0.0 | 1.0 | 1.0 | 1, 21 00:21:40 v #23957 > > │ 2.0 | 3.0 | 3.0 | 1, 12 00:21:40 v #23958 > > │ 5.0 | 6.0 | 6.0 | 1, 14 00:21:40 v #23959 > > │ ``` 00:21:40 v #23960 > > │ 00:00:00 v #8 benchmark.sort_result_list / averages.iter 00:21:40 v #23961 > > / { i = 1; avg = 15 } 00:21:40 v #23962 > > │ ``` 00:21:40 v #23963 > > │ 00:21:40 v #23964 > 00:00:10 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 17996 } 00:21:40 v #23965 > 00:00:10 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:41 v #23966 > 00:00:11 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.ipynb to html 00:21:41 v #23967 > 00:00:11 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:21:41 v #23968 > 00:00:11 v #7 ! validate(nb) 00:21:41 v #23969 > 00:00:11 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:21:41 v #23970 > 00:00:11 v #9 ! return _pygments_highlight( 00:21:41 v #23971 > 00:00:12 v #10 ! [NbConvertApp] Writing 316523 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html 00:21:41 v #23972 > 00:00:12 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:21:41 v #23973 > 00:00:12 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:21:41 v #23974 > 00:00:12 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/benchmark.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:42 v #23975 > 00:00:12 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:21:42 v #23976 > 00:00:12 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:21:42 v #23977 > 00:00:12 d #16 spiral.run / dib / { exit_code = 0; result_length = 18957 } 00:21:42 d #23978 runtime.execute_with_options_async / { exit_code = 0; output_length = 22585 } 00:21:42 d #33 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path benchmark.dib --retries 3 00:21:42 d #23979 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path physics.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:42 v #23980 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "physics.dib", "--retries", "3"])) } 00:21:42 v #23981 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:21:43 v #23982 > > 00:21:43 v #23983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:43 v #23984 > > │ # physics 00:21:57 v #23985 > > 00:21:57 v #23986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:57 v #23987 > > //// test 00:21:57 v #23988 > > 00:21:57 v #23989 > > open testing 00:21:57 v #23990 > > 00:21:57 v #23991 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:57 v #23992 > > │ ### init_series 00:21:57 v #23993 > > 00:21:57 v #23994 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:57 v #23995 > > //// test 00:21:57 v #23996 > > 00:21:57 v #23997 > > inl x = am'.init_series -3f64 3 0.01 00:21:57 v #23998 > > inl y = x |> am'.map_base math.square 00:21:57 v #23999 > > "square", "x", "y", ;[[ "square", x, y ]] 00:21:58 v #24000 > > 00:21:58 v #24001 > > ── [ 305.51ms - return value ] ───────────────────────────────────────────────── 00:21:58 v #24002 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:21:58 v #24003 > > xmlns="http://www.w3.org/2000/svg"> 00:21:58 v #24004 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:21:58 v #24005 > > fill="#141414" stroke="none"/> 00:21:58 v #24006 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:21:58 v #24007 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24008 > > fill="#FFFFFF"> 00:21:58 v #24009 > > │ square 00:21:58 v #24010 > > │ </text> 00:21:58 v #24011 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" 00:21:58 v #24012 > > y1="424" x2="61" y2="75"/> 00:21:58 v #24013 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:21:58 v #24014 > > y1="424" x2="69" y2="75"/> 00:21:58 v #24015 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" 00:21:58 v #24016 > > y1="424" x2="78" y2="75"/> 00:21:58 v #24017 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" 00:21:58 v #24018 > > y1="424" x2="86" y2="75"/> 00:21:58 v #24019 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:21:58 v #24020 > > y1="424" x2="94" y2="75"/> 00:21:58 v #24021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" 00:21:58 v #24022 > > y1="424" x2="103" y2="75"/> 00:21:58 v #24023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" 00:21:58 v #24024 > > y1="424" x2="111" y2="75"/> 00:21:58 v #24025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:21:58 v #24026 > > y1="424" x2="119" y2="75"/> 00:21:58 v #24027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" 00:21:58 v #24028 > > y1="424" x2="128" y2="75"/> 00:21:58 v #24029 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" 00:21:58 v #24030 > > y1="424" x2="136" y2="75"/> 00:21:58 v #24031 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:21:58 v #24032 > > y1="424" x2="144" y2="75"/> 00:21:58 v #24033 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" 00:21:58 v #24034 > > y1="424" x2="153" y2="75"/> 00:21:58 v #24035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" 00:21:58 v #24036 > > y1="424" x2="161" y2="75"/> 00:21:58 v #24037 > > │ <line opacity="1" stroke="#... 449,326 450,324 450,323 00:21:58 v #24038 > > 451,322 452,321 453,320 454,319 455,317 455,316 456,315 457,314 458,313 459,311 00:21:58 v #24039 > > 460,310 460,309 461,308 462,306 463,305 464,304 465,303 465,301 466,300 467,299 00:21:58 v #24040 > > 468,297 469,296 470,295 470,293 471,292 472,291 473,289 474,288 475,287 475,285 00:21:58 v #24041 > > 476,284 477,283 478,281 479,280 480,278 480,277 481,276 482,274 483,273 484,271 00:21:58 v #24042 > > 485,270 485,268 486,267 487,265 488,264 489,262 490,261 490,259 491,258 492,256 00:21:58 v #24043 > > 493,255 494,253 495,252 495,250 496,249 497,247 498,246 499,244 499,242 500,241 00:21:58 v #24044 > > 501,239 502,238 503,236 504,234 504,233 505,231 506,229 507,228 508,226 509,224 00:21:58 v #24045 > > 509,223 510,221 511,219 512,218 513,216 514,214 514,213 515,211 516,209 517,207 00:21:58 v #24046 > > 518,206 519,204 519,202 520,200 521,199 522,197 523,195 524,193 524,191 525,190 00:21:58 v #24047 > > 526,188 527,186 528,184 529,182 529,180 530,179 531,177 532,175 533,173 534,171 00:21:58 v #24048 > > 534,169 535,167 536,165 537,164 538,162 539,160 539,158 540,156 541,154 542,152 00:21:58 v #24049 > > 543,150 544,148 544,146 545,144 546,142 547,140 548,138 549,136 549,134 550,132 00:21:58 v #24050 > > 551,130 552,128 553,126 554,124 554,122 555,120 556,117 557,115 558,113 559,111 00:21:58 v #24051 > > 559,109 560,107 561,105 562,103 563,101 564,98 564,96 565,94 566,92 567,90 00:21:58 v #24052 > > 568,88 569,85 "/> 00:21:58 v #24053 > > │ <rect x="497" y="235" width="83" height="30" opacity="1" 00:21:58 v #24054 > > fill="none" stroke="#FFFFFF"/> 00:21:58 v #24055 > > │ <text x="537" y="245" dy="0.76em" text-anchor="start" 00:21:58 v #24056 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24057 > > fill="#FFFFFF"> 00:21:58 v #24058 > > │ square 00:21:58 v #24059 > > │ </text> 00:21:58 v #24060 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:21:58 v #24061 > > stroke-width="1" points="507,250 527,250 "/> 00:21:58 v #24062 > > │ </svg> 00:21:58 v #24063 > > │ 00:21:58 v #24064 > > 00:21:58 v #24065 > > ── [ 310.70ms - stdout ] ─────────────────────────────────────────────────────── 00:21:58 v #24066 > > │ 00:00:05 d #1 runtime.execute_with_options_async / { 00:21:58 v #24067 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24068 > > arguments = US5_1; options = { command = 00:21:58 v #24069 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24070 > > cancellation_token = Some System.Threading.CancellationToken; 00:21:58 v #24071 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:21:58 v #24072 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:21:58 v #24073 > > │ 00:00:05 v #2 > Creating 00:21:58 v #24074 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/7b7fc4c35397bb203cd73e7 00:21:58 v #24075 > > 1999e798459034face642d83ec40fb90a61bec926.svg 00:21:58 v #24076 > > │ 00:00:05 d #3 runtime.execute_with_options_async / { 00:21:58 v #24077 > > exit_code = 0; output_length = 134 } 00:21:58 v #24078 > > │ 00:21:58 v #24079 > > 00:21:58 v #24080 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24081 > > //// test 00:21:58 v #24082 > > 00:21:58 v #24083 > > inl x = am'.init_series -10f64 10 0.1 00:21:58 v #24084 > > inl y_sin = x |> am'.map_base sin 00:21:58 v #24085 > > inl y_cos = x |> am'.map_base cos 00:21:58 v #24086 > > "sin cos", "x", "y", ;[[ "sin", x, y_sin; "cos", x, y_cos ]] 00:21:58 v #24087 > > 00:21:58 v #24088 > > ── [ 160.91ms - return value ] ───────────────────────────────────────────────── 00:21:58 v #24089 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:21:58 v #24090 > > xmlns="http://www.w3.org/2000/svg"> 00:21:58 v #24091 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:21:58 v #24092 > > fill="#141414" stroke="none"/> 00:21:58 v #24093 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:21:58 v #24094 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24095 > > fill="#FFFFFF"> 00:21:58 v #24096 > > │ sin cos 00:21:58 v #24097 > > │ </text> 00:21:58 v #24098 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" 00:21:58 v #24099 > > y1="424" x2="57" y2="75"/> 00:21:58 v #24100 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:21:58 v #24101 > > y1="424" x2="69" y2="75"/> 00:21:58 v #24102 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" 00:21:58 v #24103 > > y1="424" x2="82" y2="75"/> 00:21:58 v #24104 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:21:58 v #24105 > > y1="424" x2="94" y2="75"/> 00:21:58 v #24106 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" 00:21:58 v #24107 > > y1="424" x2="107" y2="75"/> 00:21:58 v #24108 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:21:58 v #24109 > > y1="424" x2="119" y2="75"/> 00:21:58 v #24110 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" 00:21:58 v #24111 > > y1="424" x2="132" y2="75"/> 00:21:58 v #24112 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:21:58 v #24113 > > y1="424" x2="144" y2="75"/> 00:21:58 v #24114 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" 00:21:58 v #24115 > > y1="424" x2="157" y2="75"/> 00:21:58 v #24116 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:21:58 v #24117 > > y1="424" x2="169" y2="75"/> 00:21:58 v #24118 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" 00:21:58 v #24119 > > y1="424" x2="182" y2="75"/> 00:21:58 v #24120 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" 00:21:58 v #24121 > > y1="424" x2="194" y2="75"/> 00:21:58 v #24122 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" 00:21:58 v #24123 > > y1="424" x2="207" y2="75"/> 00:21:58 v #24124 > > │ <line opacity="1" stroke...55 282,238 284,222 287,206 289,190 00:21:58 v #24125 > > 292,175 294,161 297,148 299,135 302,124 304,114 307,106 309,98 312,93 314,89 00:21:58 v #24126 > > 317,86 319,85 321,86 324,89 326,93 329,98 331,106 334,114 336,124 339,135 00:21:58 v #24127 > > 341,148 344,161 346,175 349,190 351,206 354,222 356,238 359,255 361,271 364,287 00:21:58 v #24128 > > 366,303 369,319 371,333 374,347 376,360 379,371 381,382 384,391 386,399 389,405 00:21:58 v #24129 > > 391,410 394,413 396,414 399,414 401,413 404,409 406,404 409,398 411,390 414,380 00:21:58 v #24130 > > 416,370 419,358 421,345 424,331 426,316 429,301 431,285 434,268 436,252 439,236 00:21:58 v #24131 > > 441,219 444,203 446,188 449,173 451,159 454,146 456,133 459,122 461,113 464,104 00:21:58 v #24132 > > 466,97 469,92 471,88 474,86 476,85 479,86 481,89 484,94 486,99 489,107 491,116 00:21:58 v #24133 > > 494,126 496,137 499,150 501,163 504,178 506,193 509,209 511,225 514,241 516,258 00:21:58 v #24134 > > 519,274 521,290 524,306 526,321 529,335 531,349 534,362 536,373 539,384 541,392 00:21:58 v #24135 > > 544,400 546,406 549,410 551,413 554,415 556,414 559,412 561,408 564,403 566,396 00:21:58 v #24136 > > 569,388 "/> 00:21:58 v #24137 > > │ <rect x="514" y="227" width="66" height="45" opacity="1" 00:21:58 v #24138 > > fill="none" stroke="#FFFFFF"/> 00:21:58 v #24139 > > │ <text x="554" y="237" dy="0.76em" text-anchor="start" 00:21:58 v #24140 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24141 > > fill="#FFFFFF"> 00:21:58 v #24142 > > │ sin 00:21:58 v #24143 > > │ </text> 00:21:58 v #24144 > > │ <text x="554" y="252" dy="0.76em" text-anchor="start" 00:21:58 v #24145 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24146 > > fill="#FFFFFF"> 00:21:58 v #24147 > > │ cos 00:21:58 v #24148 > > │ </text> 00:21:58 v #24149 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:21:58 v #24150 > > stroke-width="1" points="524,242 544,242 "/> 00:21:58 v #24151 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" 00:21:58 v #24152 > > stroke-width="1" points="524,257 544,257 "/> 00:21:58 v #24153 > > │ </svg> 00:21:58 v #24154 > > │ 00:21:58 v #24155 > > 00:21:58 v #24156 > > ── [ 163.15ms - stdout ] ─────────────────────────────────────────────────────── 00:21:58 v #24157 > > │ 00:00:05 d #4 runtime.execute_with_options_async / { 00:21:58 v #24158 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24159 > > arguments = US5_1; options = { command = 00:21:58 v #24160 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24161 > > cancellation_token = Some System.Threading.CancellationToken; 00:21:58 v #24162 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:21:58 v #24163 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:21:58 v #24164 > > │ 00:00:05 v #5 > Creating 00:21:58 v #24165 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/92923048c2357a589255fc3 00:21:58 v #24166 > > a1ba8375e45c2d4a0a29d12fd266f7c935f7a46fa.svg 00:21:58 v #24167 > > │ 00:00:05 d #6 runtime.execute_with_options_async / { 00:21:58 v #24168 > > exit_code = 0; output_length = 134 } 00:21:58 v #24169 > > │ 00:21:58 v #24170 > > 00:21:58 v #24171 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24172 > > //// test 00:21:58 v #24173 > > 00:21:58 v #24174 > > inl y_pos y0 vy0 ay t = 00:21:58 v #24175 > > y0 + vy0 * t + ay * (t |> math.square) / 2 00:21:58 v #24176 > > 00:21:58 v #24177 > > inl x = am'.init_series 0f64 5 0.01 00:21:58 v #24178 > > inl y = x |> am'.map_base (y_pos 0 20 -9.8) 00:21:58 v #24179 > > "projectile motion", "time (s)", "", ;[[ "height of projectile (m)", x, y ]] 00:21:58 v #24180 > > 00:21:58 v #24181 > > ── [ 206.76ms - return value ] ───────────────────────────────────────────────── 00:21:58 v #24182 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:21:58 v #24183 > > xmlns="http://www.w3.org/2000/svg"> 00:21:58 v #24184 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:21:58 v #24185 > > fill="#141414" stroke="none"/> 00:21:58 v #24186 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:21:58 v #24187 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24188 > > fill="#FFFFFF"> 00:21:58 v #24189 > > │ projectile motion 00:21:58 v #24190 > > │ </text> 00:21:58 v #24191 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:21:58 v #24192 > > y1="424" x2="59" y2="75"/> 00:21:58 v #24193 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:21:58 v #24194 > > y1="424" x2="69" y2="75"/> 00:21:58 v #24195 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:21:58 v #24196 > > y1="424" x2="79" y2="75"/> 00:21:58 v #24197 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:21:58 v #24198 > > y1="424" x2="89" y2="75"/> 00:21:58 v #24199 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:21:58 v #24200 > > y1="424" x2="99" y2="75"/> 00:21:58 v #24201 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:21:58 v #24202 > > y1="424" x2="109" y2="75"/> 00:21:58 v #24203 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:21:58 v #24204 > > y1="424" x2="119" y2="75"/> 00:21:58 v #24205 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:21:58 v #24206 > > y1="424" x2="129" y2="75"/> 00:21:58 v #24207 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:21:58 v #24208 > > y1="424" x2="139" y2="75"/> 00:21:58 v #24209 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:21:58 v #24210 > > y1="424" x2="149" y2="75"/> 00:21:58 v #24211 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:21:58 v #24212 > > y1="424" x2="159" y2="75"/> 00:21:58 v #24213 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:21:58 v #24214 > > y1="424" x2="169" y2="75"/> 00:21:58 v #24215 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:21:58 v #24216 > > y1="424" x2="179" y2="75"/> 00:21:58 v #24217 > > │ <line opacity="1...28,176 429,177 430,178 431,179 432,180 00:21:58 v #24218 > > 433,182 434,183 435,184 436,185 437,186 438,188 439,189 440,190 441,191 442,193 00:21:58 v #24219 > > 443,194 444,195 445,197 446,198 447,199 448,200 449,202 450,203 451,204 452,206 00:21:58 v #24220 > > 453,207 454,208 455,210 456,211 457,213 458,214 459,215 460,217 461,218 462,220 00:21:58 v #24221 > > 463,221 464,222 465,224 466,225 467,227 468,228 469,230 470,231 471,233 472,234 00:21:58 v #24222 > > 473,236 474,237 475,239 476,240 477,242 478,243 479,245 480,246 481,248 482,249 00:21:58 v #24223 > > 483,251 484,253 485,254 486,256 487,257 488,259 489,261 490,262 491,264 492,266 00:21:58 v #24224 > > 493,267 494,269 495,271 496,272 497,274 498,276 499,277 500,279 501,281 502,282 00:21:58 v #24225 > > 503,284 504,286 505,288 506,289 507,291 508,293 509,295 510,296 511,298 512,300 00:21:58 v #24226 > > 513,302 514,304 515,305 516,307 517,309 518,311 519,313 520,315 521,316 522,318 00:21:58 v #24227 > > 523,320 524,322 525,324 526,326 527,328 528,330 529,332 530,334 531,335 532,337 00:21:58 v #24228 > > 533,339 534,341 535,343 536,345 537,347 538,349 539,351 540,353 541,355 542,357 00:21:58 v #24229 > > 543,359 544,361 545,363 546,365 547,367 548,370 549,372 550,374 551,376 552,378 00:21:58 v #24230 > > 553,380 554,382 555,384 556,386 557,388 558,391 559,393 560,395 561,397 562,399 00:21:58 v #24231 > > 563,401 564,404 565,406 566,408 567,410 568,412 569,415 "/> 00:21:58 v #24232 > > │ <rect x="399" y="235" width="181" height="30" opacity="1" 00:21:58 v #24233 > > fill="none" stroke="#FFFFFF"/> 00:21:58 v #24234 > > │ <text x="439" y="245" dy="0.76em" text-anchor="start" 00:21:58 v #24235 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24236 > > fill="#FFFFFF"> 00:21:58 v #24237 > > │ height of projectile (m) 00:21:58 v #24238 > > │ </text> 00:21:58 v #24239 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:21:58 v #24240 > > stroke-width="1" points="409,250 429,250 "/> 00:21:58 v #24241 > > │ </svg> 00:21:58 v #24242 > > │ 00:21:58 v #24243 > > 00:21:58 v #24244 > > ── [ 209.06ms - stdout ] ─────────────────────────────────────────────────────── 00:21:58 v #24245 > > │ 00:00:06 d #7 runtime.execute_with_options_async / { 00:21:58 v #24246 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24247 > > arguments = US5_1; options = { command = 00:21:58 v #24248 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24249 > > cancellation_token = Some System.Threading.CancellationToken; 00:21:58 v #24250 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:21:58 v #24251 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:21:58 v #24252 > > │ 00:00:06 v #8 > Creating 00:21:58 v #24253 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/9ba10ae80d4645862b925ee 00:21:58 v #24254 > > 46c6c11acaddaeeaef0ca08c6bf4f906b08df5b19.svg 00:21:58 v #24255 > > │ 00:00:06 d #9 runtime.execute_with_options_async / { 00:21:58 v #24256 > > exit_code = 0; output_length = 134 } 00:21:58 v #24257 > > │ 00:21:58 v #24258 > > 00:21:58 v #24259 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:58 v #24260 > > │ ### velocity_cf 00:21:58 v #24261 > > 00:21:58 v #24262 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24263 > > type mass = f64 00:21:58 v #24264 > > type time = f64 00:21:58 v #24265 > > type position = f64 00:21:58 v #24266 > > type velocity = f64 00:21:58 v #24267 > > type force = f64 00:21:58 v #24268 > > 00:21:58 v #24269 > > type velocity_cf = mass -> velocity -> list force -> (time -> velocity) 00:21:58 v #24270 > > 00:21:58 v #24271 > > inl velocity_cf m v0 fs = 00:21:58 v #24272 > > inl f_net = fs |> listm'.sum 00:21:58 v #24273 > > inl a0 = f_net / m 00:21:58 v #24274 > > inl v t = v0 + a0 * t 00:21:58 v #24275 > > v 00:21:58 v #24276 > > 00:21:58 v #24277 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24278 > > //// test 00:21:58 v #24279 > > 00:21:58 v #24280 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 0 00:21:58 v #24281 > > |> _assert_eq 0.6 00:21:58 v #24282 > > 00:21:58 v #24283 > > velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]] 1 00:21:58 v #24284 > > |> _assert_eq 0.2 00:21:58 v #24285 > > 00:21:58 v #24286 > > ── [ 186.52ms - stdout ] ─────────────────────────────────────────────────────── 00:21:58 v #24287 > > │ __assert_eq / actual: 0.6 / expected: 0.6 00:21:58 v #24288 > > │ __assert_eq / actual: 0.2 / expected: 0.2 00:21:58 v #24289 > > │ 00:21:58 v #24290 > > 00:21:58 v #24291 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24292 > > //// test 00:21:58 v #24293 > > 00:21:58 v #24294 > > inl x = am'.init_series 0f64 4 0.1 00:21:58 v #24295 > > inl y = x |> am'.map_base (velocity_cf 0.1f64 0.6 [[ 0.04; -0.08 ]]) 00:21:58 v #24296 > > "car on an air track", "time (s)", "", ;[[ "velocity of car (m/s)", x, y ]] 00:21:58 v #24297 > > 00:21:58 v #24298 > > ── [ 216.81ms - return value ] ───────────────────────────────────────────────── 00:21:58 v #24299 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:21:58 v #24300 > > xmlns="http://www.w3.org/2000/svg"> 00:21:58 v #24301 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:21:58 v #24302 > > fill="#141414" stroke="none"/> 00:21:58 v #24303 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:21:58 v #24304 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24305 > > fill="#FFFFFF"> 00:21:58 v #24306 > > │ car on an air track 00:21:58 v #24307 > > │ </text> 00:21:58 v #24308 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="57" 00:21:58 v #24309 > > y1="424" x2="57" y2="75"/> 00:21:58 v #24310 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:21:58 v #24311 > > y1="424" x2="69" y2="75"/> 00:21:58 v #24312 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="82" 00:21:58 v #24313 > > y1="424" x2="82" y2="75"/> 00:21:58 v #24314 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:21:58 v #24315 > > y1="424" x2="94" y2="75"/> 00:21:58 v #24316 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="107" 00:21:58 v #24317 > > y1="424" x2="107" y2="75"/> 00:21:58 v #24318 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:21:58 v #24319 > > y1="424" x2="119" y2="75"/> 00:21:58 v #24320 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="132" 00:21:58 v #24321 > > y1="424" x2="132" y2="75"/> 00:21:58 v #24322 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:21:58 v #24323 > > y1="424" x2="144" y2="75"/> 00:21:58 v #24324 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="157" 00:21:58 v #24325 > > y1="424" x2="157" y2="75"/> 00:21:58 v #24326 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:21:58 v #24327 > > y1="424" x2="169" y2="75"/> 00:21:58 v #24328 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="182" 00:21:58 v #24329 > > y1="424" x2="182" y2="75"/> 00:21:58 v #24330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="194" 00:21:58 v #24331 > > y1="424" x2="194" y2="75"/> 00:21:58 v #24332 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="207" 00:21:58 v #24333 > > y1="424" x2="207" y2="75"/> 00:21:58 v #24334 > > │ <line opacit...85,209 590,209 "/> 00:21:58 v #24335 > > │ <text x="617" y="168" dy="0.5ex" text-anchor="end" 00:21:58 v #24336 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24337 > > fill="#FFFFFF"> 00:21:58 v #24338 > > │ 0.2 00:21:58 v #24339 > > │ </text> 00:21:58 v #24340 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:21:58 v #24341 > > stroke-width="1" points="585,168 590,168 "/> 00:21:58 v #24342 > > │ <text x="617" y="127" dy="0.5ex" text-anchor="end" 00:21:58 v #24343 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24344 > > fill="#FFFFFF"> 00:21:58 v #24345 > > │ 0.4 00:21:58 v #24346 > > │ </text> 00:21:58 v #24347 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:21:58 v #24348 > > stroke-width="1" points="585,127 590,127 "/> 00:21:58 v #24349 > > │ <text x="617" y="85" dy="0.5ex" text-anchor="end" 00:21:58 v #24350 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24351 > > fill="#FFFFFF"> 00:21:58 v #24352 > > │ 0.6 00:21:58 v #24353 > > │ </text> 00:21:58 v #24354 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:21:58 v #24355 > > stroke-width="1" points="585,85 590,85 "/> 00:21:58 v #24356 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:21:58 v #24357 > > stroke-width="1" points="69,85 82,94 94,102 107,110 119,118 132,127 144,135 00:21:58 v #24358 > > 157,143 169,151 182,159 194,168 207,176 219,184 232,192 244,201 257,209 269,217 00:21:58 v #24359 > > 282,225 294,234 307,242 319,250 331,258 344,266 356,275 369,283 381,291 394,299 00:21:58 v #24360 > > 406,308 419,316 431,324 444,332 456,341 469,349 481,357 494,365 506,373 519,382 00:21:58 v #24361 > > 531,390 544,398 556,406 569,415 "/> 00:21:58 v #24362 > > │ <rect x="415" y="235" width="165" height="30" opacity="1" 00:21:58 v #24363 > > fill="none" stroke="#FFFFFF"/> 00:21:58 v #24364 > > │ <text x="455" y="245" dy="0.76em" text-anchor="start" 00:21:58 v #24365 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:21:58 v #24366 > > fill="#FFFFFF"> 00:21:58 v #24367 > > │ velocity of car (m/s) 00:21:58 v #24368 > > │ </text> 00:21:58 v #24369 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:21:58 v #24370 > > stroke-width="1" points="425,250 445,250 "/> 00:21:58 v #24371 > > │ </svg> 00:21:58 v #24372 > > │ 00:21:58 v #24373 > > 00:21:58 v #24374 > > ── [ 218.77ms - stdout ] ─────────────────────────────────────────────────────── 00:21:58 v #24375 > > │ 00:00:06 d #10 runtime.execute_with_options_async / { 00:21:58 v #24376 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24377 > > arguments = US5_1; options = { command = 00:21:58 v #24378 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:21:58 v #24379 > > cancellation_token = Some System.Threading.CancellationToken; 00:21:58 v #24380 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:21:58 v #24381 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:21:58 v #24382 > > │ 00:00:06 v #11 > Creating 00:21:58 v #24383 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ca28324d0914f6213d0165a 00:21:58 v #24384 > > e9c1e93d26d3b9e674acc73e0947a72dfaf617897.svg 00:21:58 v #24385 > > │ 00:00:06 d #12 runtime.execute_with_options_async / { 00:21:58 v #24386 > > exit_code = 0; output_length = 134 } 00:21:58 v #24387 > > │ 00:21:58 v #24388 > > 00:21:58 v #24389 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:58 v #24390 > > │ ### derivative 00:21:58 v #24391 > > 00:21:58 v #24392 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:58 v #24393 > > type derivative = (f64 -> f64) -> f64 -> f64 00:21:58 v #24394 > > 00:21:58 v #24395 > > inl derivative dt : derivative = 00:21:58 v #24396 > > fun x t => 00:21:58 v #24397 > > (x (t + dt / 2) - x (t - dt / 2)) / dt 00:21:59 v #24398 > > 00:21:59 v #24399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24400 > > //// test 00:21:59 v #24401 > > 00:21:59 v #24402 > > derivative 1 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24403 > > |> _assert_approx_eq None 0.25 00:21:59 v #24404 > > 00:21:59 v #24405 > > derivative 0.001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24406 > > |> _assert_approx_eq None 0.0000002499998827953931 00:21:59 v #24407 > > 00:21:59 v #24408 > > derivative 0.000001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24409 > > |> _assert_approx_eq None 0.000000000001000088900582341 00:21:59 v #24410 > > 00:21:59 v #24411 > > derivative 0.000000001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24412 > > |> _assert_approx_eq None 0.00000008274037099909037 00:21:59 v #24413 > > 00:21:59 v #24414 > > derivative 0.000000000001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24415 > > |> _assert_approx_eq None 0.00008890058234101161 00:21:59 v #24416 > > 00:21:59 v #24417 > > derivative 0.000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24418 > > |> _assert_approx_eq None -0.0007992778373592246 00:21:59 v #24419 > > 00:21:59 v #24420 > > derivative 0.000000000000000001 (fun x => x ** 4 / 4) 1 - 1 00:21:59 v #24421 > > |> _assert_approx_eq None -1 00:21:59 v #24422 > > 00:21:59 v #24423 > > ── [ 202.69ms - stdout ] ─────────────────────────────────────────────────────── 00:21:59 v #24424 > > │ __assert_approx_eq / actual: 0.25 / expected: 0.25 00:21:59 v #24425 > > │ __assert_approx_eq / actual: 2.499998828e-07 / expected: 00:21:59 v #24426 > > 2.499998828e-07 00:21:59 v #24427 > > │ __assert_approx_eq / actual: 1.000088901e-12 / expected: 00:21:59 v #24428 > > 1.000088901e-12 00:21:59 v #24429 > > │ __assert_approx_eq / actual: 8.2740371e-08 / expected: 00:21:59 v #24430 > > 8.2740371e-08 00:21:59 v #24431 > > │ __assert_approx_eq / actual: 8.890058234e-05 / expected: 00:21:59 v #24432 > > 8.890058234e-05 00:21:59 v #24433 > > │ __assert_approx_eq / actual: -0.0007992778374 / expected: 00:21:59 v #24434 > > -0.0007992778374 00:21:59 v #24435 > > │ __assert_approx_eq / actual: -1.0 / expected: -1.0 00:21:59 v #24436 > > │ 00:21:59 v #24437 > > 00:21:59 v #24438 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:21:59 v #24439 > > │ ### integration 00:21:59 v #24440 > > 00:21:59 v #24441 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24442 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 00:21:59 v #24443 > > 00:21:59 v #24444 > > inl integral dt : integration = 00:21:59 v #24445 > > fun f a b => 00:21:59 v #24446 > > inl rec loop t y = 00:21:59 v #24447 > > if t < b 00:21:59 v #24448 > > then loop (t + dt) (y + f t * dt) 00:21:59 v #24449 > > else t, y 00:21:59 v #24450 > > loop (a + dt / 2) 0 00:21:59 v #24451 > > |> snd 00:21:59 v #24452 > > 00:21:59 v #24453 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24454 > > //// test 00:21:59 v #24455 > > 00:21:59 v #24456 > > integral 0.01 math.square 0 1 00:21:59 v #24457 > > |> _assert_approx_eq None 0.33332500000000004 00:21:59 v #24458 > > 00:21:59 v #24459 > > ── [ 142.07ms - stdout ] ─────────────────────────────────────────────────────── 00:21:59 v #24460 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 00:21:59 v #24461 > > │ 00:21:59 v #24462 > > 00:21:59 v #24463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24464 > > inl integral' dt : integration = 00:21:59 v #24465 > > fun f a b => 00:21:59 v #24466 > > listm'.init_series (a + dt / 2) (b - dt / 2) dt 00:21:59 v #24467 > > |> listm.map (f >> (*) dt) 00:21:59 v #24468 > > |> listm'.sum 00:21:59 v #24469 > > 00:21:59 v #24470 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24471 > > //// test 00:21:59 v #24472 > > 00:21:59 v #24473 > > integral' 0.1 math.square 0 1 00:21:59 v #24474 > > |> _assert_approx_eq None (integral 0.1 math.square 0 1) 00:21:59 v #24475 > > 00:21:59 v #24476 > > ── [ 167.28ms - stdout ] ─────────────────────────────────────────────────────── 00:21:59 v #24477 > > │ __assert_approx_eq / actual: 0.3325 / expected: 0.3325 00:21:59 v #24478 > > │ 00:21:59 v #24479 > > 00:21:59 v #24480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:21:59 v #24481 > > inl integral'' dt : integration = 00:21:59 v #24482 > > fun f x y => 00:21:59 v #24483 > > am'.init_series (x + dt / 2) (y - dt / 2) dt 00:21:59 v #24484 > > |> fun x => a x : _ int _ 00:21:59 v #24485 > > |> am.map (f >> (*) dt) 00:21:59 v #24486 > > |> am'.sum 00:22:00 v #24487 > > 00:22:00 v #24488 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:00 v #24489 > > //// test 00:22:00 v #24490 > > 00:22:00 v #24491 > > integral'' 0.01 math.square 0 1 00:22:00 v #24492 > > |> _assert_approx_eq None (integral 0.01 math.square 0 1) 00:22:00 v #24493 > > 00:22:00 v #24494 > > ── [ 232.03ms - stdout ] ─────────────────────────────────────────────────────── 00:22:00 v #24495 > > │ __assert_approx_eq / actual: 0.333325 / expected: 0.333325 00:22:00 v #24496 > > │ 00:22:00 v #24497 > > 00:22:00 v #24498 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:00 v #24499 > > │ ### anti_derivative 00:22:00 v #24500 > > 00:22:00 v #24501 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:00 v #24502 > > inl anti_derivative dt v0 a t = 00:22:00 v #24503 > > v0 + integral' dt a 0 t 00:22:00 v #24504 > > 00:22:00 v #24505 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:00 v #24506 > > │ ### velocity_ft 00:22:00 v #24507 > > 00:22:00 v #24508 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:00 v #24509 > > type velocity_ft = mass -> velocity -> list (time -> force) -> (time -> 00:22:00 v #24510 > > velocity) 00:22:00 v #24511 > > 00:22:00 v #24512 > > inl velocity_ft dt : velocity_ft = 00:22:00 v #24513 > > fun m v0 fs => 00:22:00 v #24514 > > inl f_net t = fs |> listm.map (fun f => f t) |> listm'.sum 00:22:00 v #24515 > > inl a t = f_net t / m 00:22:00 v #24516 > > anti_derivative dt v0 a 00:22:00 v #24517 > > 00:22:00 v #24518 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:00 v #24519 > > │ ### position_ft 00:22:00 v #24520 > > 00:22:00 v #24521 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:00 v #24522 > > type position_ft = mass -> position -> velocity -> list (time -> force) -> (time 00:22:00 v #24523 > > -> position) 00:22:00 v #24524 > > 00:22:00 v #24525 > > inl position_ft dt : position_ft = 00:22:00 v #24526 > > fun m x0 v0 fs => 00:22:00 v #24527 > > velocity_ft dt m v0 fs 00:22:00 v #24528 > > |> anti_derivative dt x0 00:22:00 v #24529 > > 00:22:00 v #24530 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:00 v #24531 > > //// test 00:22:00 v #24532 > > 00:22:00 v #24533 > > inl pedal_coast (t : time) : force = 00:22:00 v #24534 > > inl t_cycle = 20 00:22:00 v #24535 > > inl n_complete : i32 = t / t_cycle |> conv 00:22:00 v #24536 > > inl remainder = t - conv n_complete * t_cycle 00:22:00 v #24537 > > if remainder > 0 && remainder < 10 00:22:00 v #24538 > > then 10 00:22:00 v #24539 > > else 0 00:22:00 v #24540 > > 00:22:00 v #24541 > > inl x = am'.init_series -5f64 45 0.1 00:22:00 v #24542 > > inl y = x |> am'.map_base pedal_coast 00:22:00 v #24543 > > "child pedaling then coasting", "time (s)", "", ;[[ "force on bike (N)", x, y ]] 00:22:01 v #24544 > > 00:22:01 v #24545 > > ── [ 212.38ms - return value ] ───────────────────────────────────────────────── 00:22:01 v #24546 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:01 v #24547 > > xmlns="http://www.w3.org/2000/svg"> 00:22:01 v #24548 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:01 v #24549 > > fill="#141414" stroke="none"/> 00:22:01 v #24550 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:01 v #24551 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24552 > > fill="#FFFFFF"> 00:22:01 v #24553 > > │ child pedaling then coasting 00:22:01 v #24554 > > │ </text> 00:22:01 v #24555 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:01 v #24556 > > y1="424" x2="59" y2="75"/> 00:22:01 v #24557 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:01 v #24558 > > y1="424" x2="69" y2="75"/> 00:22:01 v #24559 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:01 v #24560 > > y1="424" x2="79" y2="75"/> 00:22:01 v #24561 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:01 v #24562 > > y1="424" x2="89" y2="75"/> 00:22:01 v #24563 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:01 v #24564 > > y1="424" x2="99" y2="75"/> 00:22:01 v #24565 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:01 v #24566 > > y1="424" x2="109" y2="75"/> 00:22:01 v #24567 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:01 v #24568 > > y1="424" x2="119" y2="75"/> 00:22:01 v #24569 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:01 v #24570 > > y1="424" x2="129" y2="75"/> 00:22:01 v #24571 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:01 v #24572 > > y1="424" x2="139" y2="75"/> 00:22:01 v #24573 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:01 v #24574 > > y1="424" x2="149" y2="75"/> 00:22:01 v #24575 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:01 v #24576 > > y1="424" x2="159" y2="75"/> 00:22:01 v #24577 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:01 v #24578 > > y1="424" x2="169" y2="75"/> 00:22:01 v #24579 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:01 v #24580 > > y1="424" x2="179" y2="75"/> 00:22:01 v #24581 > > │ <line...421,415 422,415 423,415 424,415 425,415 426,415 00:22:01 v #24582 > > 427,415 428,415 429,415 430,415 431,415 432,415 433,415 434,415 435,415 436,415 00:22:01 v #24583 > > 437,415 438,415 439,415 440,415 441,415 442,415 443,415 444,415 445,415 446,415 00:22:01 v #24584 > > 447,415 448,415 449,415 450,415 451,415 452,415 453,415 454,415 455,415 456,415 00:22:01 v #24585 > > 457,415 458,415 459,415 460,415 461,415 462,415 463,415 464,415 465,415 466,415 00:22:01 v #24586 > > 467,415 468,415 469,415 470,415 471,415 472,415 473,415 474,415 475,415 476,415 00:22:01 v #24587 > > 477,415 478,415 479,415 480,415 481,415 482,415 483,415 484,415 485,415 486,415 00:22:01 v #24588 > > 487,415 488,415 489,415 490,415 491,415 492,415 493,415 494,415 495,415 496,415 00:22:01 v #24589 > > 497,415 498,415 499,415 500,415 501,415 502,415 503,415 504,415 505,415 506,415 00:22:01 v #24590 > > 507,415 508,415 509,415 510,415 511,415 512,415 513,415 514,415 515,415 516,415 00:22:01 v #24591 > > 517,415 518,415 519,415 520,85 521,85 522,85 523,85 524,85 525,85 526,85 527,85 00:22:01 v #24592 > > 528,85 529,85 530,85 531,85 532,85 533,85 534,85 535,85 536,85 537,85 538,85 00:22:01 v #24593 > > 539,85 540,85 541,85 542,85 543,85 544,85 545,85 546,85 547,85 548,85 549,85 00:22:01 v #24594 > > 550,85 551,85 552,85 553,85 554,85 555,85 556,85 557,85 558,85 559,85 560,85 00:22:01 v #24595 > > 561,85 562,85 563,85 564,85 565,85 566,85 567,85 568,85 569,85 "/> 00:22:01 v #24596 > > │ <rect x="437" y="235" width="143" height="30" opacity="1" 00:22:01 v #24597 > > fill="none" stroke="#FFFFFF"/> 00:22:01 v #24598 > > │ <text x="477" y="245" dy="0.76em" text-anchor="start" 00:22:01 v #24599 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24600 > > fill="#FFFFFF"> 00:22:01 v #24601 > > │ force on bike (N) 00:22:01 v #24602 > > │ </text> 00:22:01 v #24603 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:01 v #24604 > > stroke-width="1" points="447,250 467,250 "/> 00:22:01 v #24605 > > │ </svg> 00:22:01 v #24606 > > │ 00:22:01 v #24607 > > 00:22:01 v #24608 > > ── [ 214.42ms - stdout ] ─────────────────────────────────────────────────────── 00:22:01 v #24609 > > │ 00:00:08 d #13 runtime.execute_with_options_async / { 00:22:01 v #24610 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:01 v #24611 > > arguments = US5_1; options = { command = 00:22:01 v #24612 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:01 v #24613 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:01 v #24614 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:01 v #24615 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:01 v #24616 > > │ 00:00:08 v #14 > Creating 00:22:01 v #24617 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0ac10ed4fc31e5733d3eadb 00:22:01 v #24618 > > bffbf047568e7cb8eed5922ef2828dbad94721326.svg 00:22:01 v #24619 > > │ 00:00:08 d #15 runtime.execute_with_options_async / { 00:22:01 v #24620 > > exit_code = 0; output_length = 134 } 00:22:01 v #24621 > > │ 00:22:01 v #24622 > > 00:22:01 v #24623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:01 v #24624 > > //// test 00:22:01 v #24625 > > 00:22:01 v #24626 > > inl x = am'.init_series -5 45 1 00:22:01 v #24627 > > inl y = x |> am'.map_base (position_ft 0.1f64 20 0 0 [[ pedal_coast ]]) 00:22:01 v #24628 > > "child pedaling then coasting", "time (s)", "", ;[[ "position of bike (m)", x, y 00:22:01 v #24629 > > ]] 00:22:01 v #24630 > > 00:22:01 v #24631 > > ── [ 395.96ms - return value ] ───────────────────────────────────────────────── 00:22:01 v #24632 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:01 v #24633 > > xmlns="http://www.w3.org/2000/svg"> 00:22:01 v #24634 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:01 v #24635 > > fill="#141414" stroke="none"/> 00:22:01 v #24636 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:01 v #24637 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24638 > > fill="#FFFFFF"> 00:22:01 v #24639 > > │ child pedaling then coasting 00:22:01 v #24640 > > │ </text> 00:22:01 v #24641 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:01 v #24642 > > y1="424" x2="59" y2="75"/> 00:22:01 v #24643 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:01 v #24644 > > y1="424" x2="69" y2="75"/> 00:22:01 v #24645 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:01 v #24646 > > y1="424" x2="79" y2="75"/> 00:22:01 v #24647 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:01 v #24648 > > y1="424" x2="89" y2="75"/> 00:22:01 v #24649 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:01 v #24650 > > y1="424" x2="99" y2="75"/> 00:22:01 v #24651 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:01 v #24652 > > y1="424" x2="109" y2="75"/> 00:22:01 v #24653 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:01 v #24654 > > y1="424" x2="119" y2="75"/> 00:22:01 v #24655 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:01 v #24656 > > y1="424" x2="129" y2="75"/> 00:22:01 v #24657 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:01 v #24658 > > y1="424" x2="139" y2="75"/> 00:22:01 v #24659 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:01 v #24660 > > y1="424" x2="149" y2="75"/> 00:22:01 v #24661 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:01 v #24662 > > y1="424" x2="159" y2="75"/> 00:22:01 v #24663 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:01 v #24664 > > y1="424" x2="169" y2="75"/> 00:22:01 v #24665 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:01 v #24666 > > y1="424" x2="179" y2="75"/> 00:22:01 v #24667 > > │ <line...serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24668 > > fill="#FFFFFF"> 00:22:01 v #24669 > > │ 200.0 00:22:01 v #24670 > > │ </text> 00:22:01 v #24671 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:01 v #24672 > > stroke-width="1" points="585,201 590,201 "/> 00:22:01 v #24673 > > │ <text x="595" y="147" dy="0.5ex" text-anchor="start" 00:22:01 v #24674 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24675 > > fill="#FFFFFF"> 00:22:01 v #24676 > > │ 250.0 00:22:01 v #24677 > > │ </text> 00:22:01 v #24678 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:01 v #24679 > > stroke-width="1" points="585,147 590,147 "/> 00:22:01 v #24680 > > │ <text x="595" y="94" dy="0.5ex" text-anchor="start" 00:22:01 v #24681 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24682 > > fill="#FFFFFF"> 00:22:01 v #24683 > > │ 300.0 00:22:01 v #24684 > > │ </text> 00:22:01 v #24685 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:01 v #24686 > > stroke-width="1" points="585,94 590,94 "/> 00:22:01 v #24687 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:01 v #24688 > > stroke-width="1" points="69,415 79,415 89,415 99,415 109,415 119,415 129,414 00:22:01 v #24689 > > 139,413 149,412 159,410 169,408 179,405 189,401 199,397 209,393 219,388 229,382 00:22:01 v #24690 > > 239,377 249,372 259,366 269,361 279,356 289,350 299,345 309,340 319,334 329,329 00:22:01 v #24691 > > 339,322 349,316 359,308 369,301 379,292 389,284 399,274 409,264 419,254 429,243 00:22:01 v #24692 > > 439,232 449,221 459,210 469,199 479,189 489,178 499,167 509,157 519,146 529,135 00:22:01 v #24693 > > 539,123 549,111 559,99 569,85 "/> 00:22:01 v #24694 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" 00:22:01 v #24695 > > fill="none" stroke="#FFFFFF"/> 00:22:01 v #24696 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" 00:22:01 v #24697 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:01 v #24698 > > fill="#FFFFFF"> 00:22:01 v #24699 > > │ position of bike (m) 00:22:01 v #24700 > > │ </text> 00:22:01 v #24701 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:01 v #24702 > > stroke-width="1" points="431,250 451,250 "/> 00:22:01 v #24703 > > │ </svg> 00:22:01 v #24704 > > │ 00:22:01 v #24705 > > 00:22:01 v #24706 > > ── [ 397.91ms - stdout ] ─────────────────────────────────────────────────────── 00:22:01 v #24707 > > │ 00:00:09 d #16 runtime.execute_with_options_async / { 00:22:01 v #24708 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:01 v #24709 > > arguments = US5_1; options = { command = 00:22:01 v #24710 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:01 v #24711 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:01 v #24712 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:01 v #24713 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:01 v #24714 > > │ 00:00:09 v #17 > Creating 00:22:01 v #24715 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/111e334258a3fc6398b55a8 00:22:01 v #24716 > > d561905d49cd0648a39dd06c1856b1cb0e8a9546c.svg 00:22:01 v #24717 > > │ 00:00:09 d #18 runtime.execute_with_options_async / { 00:22:01 v #24718 > > exit_code = 0; output_length = 134 } 00:22:01 v #24719 > > │ 00:22:01 v #24720 > > 00:22:01 v #24721 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:01 v #24722 > > │ ### velocity_fv 00:22:01 v #24723 > > 00:22:01 v #24724 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:01 v #24725 > > inl newton_second_v m fs v0 = 00:22:01 v #24726 > > fs |> listm.map (fun f => f v0) |> listm'.sum |> fun x => x / m 00:22:01 v #24727 > > 00:22:01 v #24728 > > inl update_velocity dt m fs v0 = 00:22:01 v #24729 > > v0 + newton_second_v m fs v0 * dt 00:22:01 v #24730 > > 00:22:01 v #24731 > > inl velocity_fv dt m v0 fs t = 00:22:01 v #24732 > > stream.iterate (update_velocity dt m fs) v0 00:22:01 v #24733 > > |> stream.try_item (t / dt |> math.round |> abs) 00:22:01 v #24734 > > |> optionm'.default_value 0 00:22:01 v #24735 > > 00:22:01 v #24736 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:01 v #24737 > > inl f_air drag rho area v = 00:22:01 v #24738 > > -drag * rho * area * abs v * v / 2 00:22:01 v #24739 > > 00:22:01 v #24740 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:01 v #24741 > > //// test 00:22:01 v #24742 > > 00:22:01 v #24743 > > inl x = am'.init_series 0 60 0.5 00:22:01 v #24744 > > inl y = x |> am'.map_base (velocity_fv 1 70 0f64 [[ fun _ => 100; f_air 2 1.225 00:22:01 v #24745 > > 0.6 ]]) 00:22:01 v #24746 > > "bike velocity", "time (s)", "", ;[[ "velocity of bike (m/s)", x, y ]] 00:22:02 v #24747 > > 00:22:02 v #24748 > > ── [ 459.30ms - return value ] ───────────────────────────────────────────────── 00:22:02 v #24749 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:02 v #24750 > > xmlns="http://www.w3.org/2000/svg"> 00:22:02 v #24751 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:02 v #24752 > > fill="#141414" stroke="none"/> 00:22:02 v #24753 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:02 v #24754 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:02 v #24755 > > fill="#FFFFFF"> 00:22:02 v #24756 > > │ bike velocity 00:22:02 v #24757 > > │ </text> 00:22:02 v #24758 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" 00:22:02 v #24759 > > y1="424" x2="61" y2="75"/> 00:22:02 v #24760 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:02 v #24761 > > y1="424" x2="69" y2="75"/> 00:22:02 v #24762 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" 00:22:02 v #24763 > > y1="424" x2="78" y2="75"/> 00:22:02 v #24764 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" 00:22:02 v #24765 > > y1="424" x2="86" y2="75"/> 00:22:02 v #24766 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:22:02 v #24767 > > y1="424" x2="94" y2="75"/> 00:22:02 v #24768 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" 00:22:02 v #24769 > > y1="424" x2="103" y2="75"/> 00:22:02 v #24770 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" 00:22:02 v #24771 > > y1="424" x2="111" y2="75"/> 00:22:02 v #24772 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:02 v #24773 > > y1="424" x2="119" y2="75"/> 00:22:02 v #24774 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" 00:22:02 v #24775 > > y1="424" x2="128" y2="75"/> 00:22:02 v #24776 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" 00:22:02 v #24777 > > y1="424" x2="136" y2="75"/> 00:22:02 v #24778 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:22:02 v #24779 > > y1="424" x2="144" y2="75"/> 00:22:02 v #24780 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" 00:22:02 v #24781 > > y1="424" x2="153" y2="75"/> 00:22:02 v #24782 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" 00:22:02 v #24783 > > y1="424" x2="161" y2="75"/> 00:22:02 v #24784 > > │ <line opacity="1" st...t" font-family="sans-serif" 00:22:02 v #24785 > > font-size="9.67741935483871" opacity="1" fill="#FFFFFF"> 00:22:02 v #24786 > > │ 12.0 00:22:02 v #24787 > > │ </text> 00:22:02 v #24788 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:02 v #24789 > > stroke-width="1" points="585,76 590,76 "/> 00:22:02 v #24790 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:02 v #24791 > > stroke-width="1" points="69,415 74,415 78,374 82,335 86,335 90,335 94,297 99,261 00:22:02 v #24792 > > 103,261 107,261 111,230 115,202 119,202 124,202 128,179 132,159 136,159 140,159 00:22:02 v #24793 > > 144,143 148,130 153,130 157,130 161,120 165,112 169,112 173,112 178,106 182,101 00:22:02 v #24794 > > 186,101 190,101 194,97 198,94 203,94 207,94 211,92 215,91 219,91 223,91 228,89 00:22:02 v #24795 > > 232,88 236,88 240,88 244,88 248,87 252,87 257,87 261,87 265,86 269,86 273,86 00:22:02 v #24796 > > 277,86 282,86 286,86 290,86 294,86 298,86 302,86 307,86 311,86 315,86 319,86 00:22:02 v #24797 > > 323,86 327,86 331,85 336,85 340,85 344,85 348,85 352,85 356,85 361,85 365,85 00:22:02 v #24798 > > 369,85 373,85 377,85 381,85 386,85 390,85 394,85 398,85 402,85 406,85 410,85 00:22:02 v #24799 > > 415,85 419,85 423,85 427,85 431,85 435,85 440,85 444,85 448,85 452,85 456,85 00:22:02 v #24800 > > 460,85 465,85 469,85 473,85 477,85 481,85 485,85 490,85 494,85 498,85 502,85 00:22:02 v #24801 > > 506,85 510,85 514,85 519,85 523,85 527,85 531,85 535,85 539,85 544,85 548,85 00:22:02 v #24802 > > 552,85 556,85 560,85 564,85 569,85 "/> 00:22:02 v #24803 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" 00:22:02 v #24804 > > fill="none" stroke="#FFFFFF"/> 00:22:02 v #24805 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" 00:22:02 v #24806 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:02 v #24807 > > fill="#FFFFFF"> 00:22:02 v #24808 > > │ velocity of bike (m/s) 00:22:02 v #24809 > > │ </text> 00:22:02 v #24810 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:02 v #24811 > > stroke-width="1" points="420,250 440,250 "/> 00:22:02 v #24812 > > │ </svg> 00:22:02 v #24813 > > │ 00:22:02 v #24814 > > 00:22:02 v #24815 > > ── [ 461.31ms - stdout ] ─────────────────────────────────────────────────────── 00:22:02 v #24816 > > │ 00:00:09 d #19 runtime.execute_with_options_async / { 00:22:02 v #24817 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:02 v #24818 > > arguments = US5_1; options = { command = 00:22:02 v #24819 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:02 v #24820 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:02 v #24821 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:02 v #24822 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:02 v #24823 > > │ 00:00:09 v #20 > Creating 00:22:02 v #24824 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b1c46a76c7d245173909491 00:22:02 v #24825 > > beb9557fd28414b9dde459da20a63459014535a90.svg 00:22:02 v #24826 > > │ 00:00:09 d #21 runtime.execute_with_options_async / { 00:22:02 v #24827 > > exit_code = 0; output_length = 134 } 00:22:02 v #24828 > > │ 00:22:02 v #24829 > > 00:22:02 v #24830 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:02 v #24831 > > │ ### velocity_ftv 00:22:02 v #24832 > > 00:22:02 v #24833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:02 v #24834 > > inl newton_second_tv m fs (t, v0) = 00:22:02 v #24835 > > inl f_net = fs |> listm.map (fun f => f (t, v0)) |> listm'.sum 00:22:02 v #24836 > > inl acc = f_net / m 00:22:02 v #24837 > > 1, acc 00:22:02 v #24838 > > 00:22:02 v #24839 > > inl update_tv dt m fs (t, v0) = 00:22:02 v #24840 > > inl dtdt, dvdt = newton_second_tv m fs (t, v0) 00:22:02 v #24841 > > t + dtdt * dt, v0 + dvdt * dt 00:22:02 v #24842 > > 00:22:02 v #24843 > > inl velocity_ftv dt m tv0 fs t = 00:22:02 v #24844 > > stream.iterate (join update_tv dt m fs) tv0 00:22:02 v #24845 > > |> stream.try_item (t / dt |> math.round |> abs) 00:22:02 v #24846 > > |> optionm.map snd 00:22:02 v #24847 > > |> optionm'.default_value 0 00:22:02 v #24848 > > 00:22:02 v #24849 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:02 v #24850 > > //// test 00:22:02 v #24851 > > 00:22:02 v #24852 > > inl x = am'.init_series 0 100 0.1 00:22:02 v #24853 > > inl y = 00:22:02 v #24854 > > x 00:22:02 v #24855 > > |> am'.map_base ( 00:22:02 v #24856 > > velocity_ftv 0.1 20 (dyn (0, 0)) [[ fun (t, _) => pedal_coast t; fun (_, 00:22:02 v #24857 > > v) => f_air 2 1.225 0.5 v ]] 00:22:02 v #24858 > > ) 00:22:02 v #24859 > > "pedaling and coasting with air", "time (s)", "", ;[[ "velocity of bike (m/s)", 00:22:02 v #24860 > > x, y ]] 00:22:02 v #24861 > > 00:22:02 v #24862 > > ── [ 340.90ms - return value ] ───────────────────────────────────────────────── 00:22:02 v #24863 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:02 v #24864 > > xmlns="http://www.w3.org/2000/svg"> 00:22:02 v #24865 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:02 v #24866 > > fill="#141414" stroke="none"/> 00:22:02 v #24867 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:02 v #24868 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:02 v #24869 > > fill="#FFFFFF"> 00:22:02 v #24870 > > │ pedaling and coasting with air 00:22:02 v #24871 > > │ </text> 00:22:02 v #24872 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:02 v #24873 > > y1="424" x2="59" y2="75"/> 00:22:02 v #24874 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:02 v #24875 > > y1="424" x2="69" y2="75"/> 00:22:02 v #24876 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:02 v #24877 > > y1="424" x2="79" y2="75"/> 00:22:02 v #24878 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:02 v #24879 > > y1="424" x2="89" y2="75"/> 00:22:02 v #24880 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:02 v #24881 > > y1="424" x2="99" y2="75"/> 00:22:02 v #24882 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:02 v #24883 > > y1="424" x2="109" y2="75"/> 00:22:02 v #24884 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:02 v #24885 > > y1="424" x2="119" y2="75"/> 00:22:02 v #24886 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:02 v #24887 > > y1="424" x2="129" y2="75"/> 00:22:02 v #24888 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:02 v #24889 > > y1="424" x2="139" y2="75"/> 00:22:02 v #24890 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:02 v #24891 > > y1="424" x2="149" y2="75"/> 00:22:02 v #24892 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:02 v #24893 > > y1="424" x2="159" y2="75"/> 00:22:02 v #24894 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:02 v #24895 > > y1="424" x2="169" y2="75"/> 00:22:02 v #24896 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:02 v #24897 > > y1="424" x2="179" y2="75"/> 00:22:02 v #24898 > > │ <li... 497,128 497,126 498,125 498,123 499,122 499,121 00:22:02 v #24899 > > 500,119 500,118 501,117 501,116 502,114 502,113 503,112 503,111 504,110 504,109 00:22:02 v #24900 > > 505,108 505,107 506,106 506,105 507,104 507,103 508,102 508,101 509,100 509,99 00:22:02 v #24901 > > 510,98 510,98 511,97 511,96 512,95 512,94 513,94 513,93 514,92 514,92 515,91 00:22:02 v #24902 > > 515,90 516,90 516,89 517,88 517,88 518,87 518,87 519,86 519,85 520,89 520,93 00:22:02 v #24903 > > 521,97 521,100 522,104 522,107 523,110 523,114 524,117 524,120 525,123 525,126 00:22:02 v #24904 > > 526,129 526,132 527,135 527,137 528,140 528,143 529,145 529,148 530,150 530,153 00:22:02 v #24905 > > 531,155 531,158 532,160 532,162 533,165 533,167 534,169 534,171 535,173 535,175 00:22:02 v #24906 > > 536,177 536,179 537,181 537,183 538,185 538,187 539,189 539,190 540,192 540,194 00:22:02 v #24907 > > 541,196 541,197 542,199 542,201 543,202 543,204 544,205 544,207 545,208 545,210 00:22:02 v #24908 > > 546,211 546,213 547,214 547,216 548,217 548,219 549,220 549,221 550,223 550,224 00:22:02 v #24909 > > 551,225 551,226 552,228 552,229 553,230 553,231 554,232 554,234 555,235 555,236 00:22:02 v #24910 > > 556,237 556,238 557,239 557,240 558,241 558,242 559,243 559,245 560,246 560,247 00:22:02 v #24911 > > 561,248 561,249 562,249 562,250 563,251 563,252 564,253 564,254 565,255 565,256 00:22:02 v #24912 > > 566,257 566,258 567,259 567,259 568,260 568,261 569,262 "/> 00:22:02 v #24913 > > │ <rect x="410" y="235" width="170" height="30" opacity="1" 00:22:02 v #24914 > > fill="none" stroke="#FFFFFF"/> 00:22:02 v #24915 > > │ <text x="450" y="245" dy="0.76em" text-anchor="start" 00:22:02 v #24916 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:02 v #24917 > > fill="#FFFFFF"> 00:22:02 v #24918 > > │ velocity of bike (m/s) 00:22:02 v #24919 > > │ </text> 00:22:02 v #24920 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:02 v #24921 > > stroke-width="1" points="420,250 440,250 "/> 00:22:02 v #24922 > > │ </svg> 00:22:02 v #24923 > > │ 00:22:02 v #24924 > > 00:22:02 v #24925 > > ── [ 342.83ms - stdout ] ─────────────────────────────────────────────────────── 00:22:02 v #24926 > > │ 00:00:10 d #22 runtime.execute_with_options_async / { 00:22:02 v #24927 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:02 v #24928 > > arguments = US5_1; options = { command = 00:22:02 v #24929 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:02 v #24930 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:02 v #24931 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:02 v #24932 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:02 v #24933 > > │ 00:00:10 v #23 > Creating 00:22:02 v #24934 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/7ce179a0676b6aeb0873f38 00:22:02 v #24935 > > a984563540676d6a701ce833dc3c5e65d8ab7def7.svg 00:22:02 v #24936 > > │ 00:00:10 d #24 runtime.execute_with_options_async / { 00:22:02 v #24937 > > exit_code = 0; output_length = 134 } 00:22:02 v #24938 > > │ 00:22:02 v #24939 > > 00:22:02 v #24940 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:02 v #24941 > > │ ### velocity_ftxv 00:22:02 v #24942 > > 00:22:02 v #24943 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:02 v #24944 > > nominal state_1d = time * position * velocity 00:22:02 v #24945 > > nominal rrr = f64 * f64 * f64 00:22:02 v #24946 > > 00:22:02 v #24947 > > inl newton_second_1d m fs (state_1d (t, x0, v0)) = 00:22:02 v #24948 > > inl f_net = fs |> listm.map (fun f => f (state_1d (t, x0, v0))) |> 00:22:02 v #24949 > > listm'.sum 00:22:02 v #24950 > > inl acc = f_net / m 00:22:02 v #24951 > > rrr (1f64, v0, acc) 00:22:02 v #24952 > > 00:22:02 v #24953 > > inl euler_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:22:02 v #24954 > > inl (rrr (_, _, dvdt)) = deriv t 00:22:02 v #24955 > > inl t1 = t0 + dt 00:22:02 v #24956 > > inl x1 = x0 + v0 * dt 00:22:02 v #24957 > > inl v1 = v0 + dvdt * dt 00:22:02 v #24958 > > state_1d (t1, x1, v1) 00:22:02 v #24959 > > 00:22:02 v #24960 > > inl update_txv dt m fs = 00:22:02 v #24961 > > newton_second_1d m fs |> euler_1d dt 00:22:02 v #24962 > > 00:22:02 v #24963 > > inl states_txv dt m txv0 fs = 00:22:02 v #24964 > > seq.iterate_ (update_txv dt m fs) txv0 00:22:02 v #24965 > > 00:22:02 v #24966 > > inl velocity_1d sts t = 00:22:02 v #24967 > > inl (state_1d (t0, _, _)) = sts 0 00:22:02 v #24968 > > inl (state_1d (t1, _, _)) = sts 1 00:22:02 v #24969 > > inl dt = t1 - t0 00:22:02 v #24970 > > inl num_steps = t / dt |> math.round |> abs 00:22:02 v #24971 > > inl (state_1d (_, _, v0)) = sts num_steps 00:22:02 v #24972 > > v0 00:22:02 v #24973 > > 00:22:02 v #24974 > > inl velocity_ftxv dt m txv0 fs = 00:22:02 v #24975 > > states_txv dt m txv0 fs |> velocity_1d 00:22:02 v #24976 > > 00:22:02 v #24977 > > inl position_1d sts t = 00:22:02 v #24978 > > inl (state_1d (t0, _, _)) = sts 0 00:22:02 v #24979 > > inl (state_1d (t1, _, _)) = sts 1 00:22:02 v #24980 > > inl dt = t1 - t0 00:22:02 v #24981 > > inl num_steps = t / dt |> math.round |> abs 00:22:02 v #24982 > > inl (state_1d (_, x0, _)) = sts num_steps 00:22:02 v #24983 > > x0 00:22:02 v #24984 > > 00:22:02 v #24985 > > inl position_ftxv dt m txv0 fs = 00:22:02 v #24986 > > states_txv dt m txv0 fs |> position_1d 00:22:02 v #24987 > > 00:22:02 v #24988 > > inl spring_force k (state_1d (_, x0, _)) = 00:22:02 v #24989 > > -k * x0 00:22:02 v #24990 > > 00:22:02 v #24991 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:02 v #24992 > > //// test 00:22:02 v #24993 > > 00:22:02 v #24994 > > inl damped_ho_forces () = 00:22:02 v #24995 > > [[ 00:22:02 v #24996 > > spring_force 0.8 00:22:02 v #24997 > > fun (state_1d (_, _, v0)) => f_air 2 1.225 (pi * math.square 0.02) v0 00:22:02 v #24998 > > fun _ => -0.0027 * 9.80665 00:22:02 v #24999 > > ]] 00:22:02 v #25000 > > 00:22:02 v #25001 > > inl damped_ho_states () = 00:22:02 v #25002 > > states_txv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) 00:22:02 v #25003 > > 00:22:02 v #25004 > > inl pingpong_position t = 00:22:02 v #25005 > > position_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:22:02 v #25006 > > 00:22:02 v #25007 > > inl x = am'.init_series 0 3 0.01 00:22:02 v #25008 > > inl y = x |> am'.map_base pingpong_position 00:22:02 v #25009 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "position (m)", x, y ]] 00:22:03 v #25010 > > 00:22:03 v #25011 > > ── [ 216.01ms - return value ] ───────────────────────────────────────────────── 00:22:03 v #25012 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:03 v #25013 > > xmlns="http://www.w3.org/2000/svg"> 00:22:03 v #25014 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:03 v #25015 > > fill="#141414" stroke="none"/> 00:22:03 v #25016 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:03 v #25017 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:03 v #25018 > > fill="#FFFFFF"> 00:22:03 v #25019 > > │ ping pong ball on a slinky 00:22:03 v #25020 > > │ </text> 00:22:03 v #25021 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" 00:22:03 v #25022 > > y1="424" x2="61" y2="75"/> 00:22:03 v #25023 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:03 v #25024 > > y1="424" x2="69" y2="75"/> 00:22:03 v #25025 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" 00:22:03 v #25026 > > y1="424" x2="78" y2="75"/> 00:22:03 v #25027 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" 00:22:03 v #25028 > > y1="424" x2="86" y2="75"/> 00:22:03 v #25029 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:22:03 v #25030 > > y1="424" x2="94" y2="75"/> 00:22:03 v #25031 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" 00:22:03 v #25032 > > y1="424" x2="103" y2="75"/> 00:22:03 v #25033 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" 00:22:03 v #25034 > > y1="424" x2="111" y2="75"/> 00:22:03 v #25035 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:03 v #25036 > > y1="424" x2="119" y2="75"/> 00:22:03 v #25037 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" 00:22:03 v #25038 > > y1="424" x2="128" y2="75"/> 00:22:03 v #25039 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" 00:22:03 v #25040 > > y1="424" x2="136" y2="75"/> 00:22:03 v #25041 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:22:03 v #25042 > > y1="424" x2="144" y2="75"/> 00:22:03 v #25043 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" 00:22:03 v #25044 > > y1="424" x2="153" y2="75"/> 00:22:03 v #25045 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" 00:22:03 v #25046 > > y1="424" x2="161" y2="75"/> 00:22:03 v #25047 > > │ <line o...88 332,305 334,321 336,334 337,346 339,354 341,360 00:22:03 v #25048 > > 342,363 344,362 346,359 347,352 349,342 351,330 352,316 354,300 356,283 357,265 00:22:03 v #25049 > > 359,247 361,229 362,212 364,197 366,183 367,172 369,163 371,156 372,153 374,153 00:22:03 v #25050 > > 376,156 377,161 379,170 381,181 382,194 384,209 386,226 387,243 389,260 391,277 00:22:03 v #25051 > > 392,294 394,309 396,323 397,335 399,344 401,351 402,355 404,356 406,354 407,349 00:22:03 v #25052 > > 409,341 410,331 412,319 414,305 415,289 417,273 419,256 420,239 422,223 424,208 00:22:03 v #25053 > > 425,194 427,182 429,172 430,165 432,161 434,159 435,160 437,164 439,171 440,180 00:22:03 v #25054 > > 442,192 444,205 445,220 447,235 449,252 450,268 452,284 454,299 455,313 457,325 00:22:03 v #25055 > > 459,335 460,342 462,347 464,350 465,349 467,346 469,340 470,332 472,321 474,309 00:22:03 v #25056 > > 475,295 477,280 479,264 480,248 482,232 484,217 485,204 487,192 489,181 490,173 00:22:03 v #25057 > > 492,168 494,165 495,165 497,167 499,172 500,180 502,189 504,201 505,215 507,229 00:22:03 v #25058 > > 509,244 510,260 512,275 514,290 515,303 517,316 519,326 520,335 522,341 524,344 00:22:03 v #25059 > > 525,345 527,343 529,339 530,332 532,323 534,312 535,300 537,286 539,271 540,256 00:22:03 v #25060 > > 542,241 544,226 545,213 547,200 549,190 550,181 552,175 554,171 555,169 557,170 00:22:03 v #25061 > > 559,174 560,180 562,188 564,198 565,210 567,223 569,238 "/> 00:22:03 v #25062 > > │ <rect x="464" y="235" width="116" height="30" opacity="1" 00:22:03 v #25063 > > fill="none" stroke="#FFFFFF"/> 00:22:03 v #25064 > > │ <text x="504" y="245" dy="0.76em" text-anchor="start" 00:22:03 v #25065 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:03 v #25066 > > fill="#FFFFFF"> 00:22:03 v #25067 > > │ position (m) 00:22:03 v #25068 > > │ </text> 00:22:03 v #25069 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:03 v #25070 > > stroke-width="1" points="474,250 494,250 "/> 00:22:03 v #25071 > > │ </svg> 00:22:03 v #25072 > > │ 00:22:03 v #25073 > > 00:22:03 v #25074 > > ── [ 218.01ms - stdout ] ─────────────────────────────────────────────────────── 00:22:03 v #25075 > > │ 00:00:10 d #25 runtime.execute_with_options_async / { 00:22:03 v #25076 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:03 v #25077 > > arguments = US5_1; options = { command = 00:22:03 v #25078 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:03 v #25079 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:03 v #25080 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:03 v #25081 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:03 v #25082 > > │ 00:00:10 v #26 > Creating 00:22:03 v #25083 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/105ea7be2f329a89809543c 00:22:03 v #25084 > > bc25878ca2117d619b4ff6fdec5ae9a8079ac700b.svg 00:22:03 v #25085 > > │ 00:00:10 d #27 runtime.execute_with_options_async / { 00:22:03 v #25086 > > exit_code = 0; output_length = 134 } 00:22:03 v #25087 > > │ 00:22:03 v #25088 > > 00:22:03 v #25089 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #25090 > > //// test 00:22:03 v #25091 > > 00:22:03 v #25092 > > inl pingpong_velocity t = 00:22:03 v #25093 > > velocity_ftxv 0.001 0.0027 (state_1d (0, 0.1, 0)) (damped_ho_forces ()) t 00:22:03 v #25094 > > 00:22:03 v #25095 > > inl x = am'.init_series 0 3 0.01 00:22:03 v #25096 > > inl y = x |> am'.map_base pingpong_velocity 00:22:03 v #25097 > > "ping pong ball on a slinky", "time (s)", "", ;[[ "velocity (m/s)", x, y ]] 00:22:03 v #25098 > > 00:22:03 v #25099 > > ── [ 220.50ms - return value ] ───────────────────────────────────────────────── 00:22:03 v #25100 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:03 v #25101 > > xmlns="http://www.w3.org/2000/svg"> 00:22:03 v #25102 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:03 v #25103 > > fill="#141414" stroke="none"/> 00:22:03 v #25104 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:03 v #25105 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:03 v #25106 > > fill="#FFFFFF"> 00:22:03 v #25107 > > │ ping pong ball on a slinky 00:22:03 v #25108 > > │ </text> 00:22:03 v #25109 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="61" 00:22:03 v #25110 > > y1="424" x2="61" y2="75"/> 00:22:03 v #25111 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:03 v #25112 > > y1="424" x2="69" y2="75"/> 00:22:03 v #25113 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="78" 00:22:03 v #25114 > > y1="424" x2="78" y2="75"/> 00:22:03 v #25115 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="86" 00:22:03 v #25116 > > y1="424" x2="86" y2="75"/> 00:22:03 v #25117 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="94" 00:22:03 v #25118 > > y1="424" x2="94" y2="75"/> 00:22:03 v #25119 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="103" 00:22:03 v #25120 > > y1="424" x2="103" y2="75"/> 00:22:03 v #25121 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="111" 00:22:03 v #25122 > > y1="424" x2="111" y2="75"/> 00:22:03 v #25123 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:03 v #25124 > > y1="424" x2="119" y2="75"/> 00:22:03 v #25125 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="128" 00:22:03 v #25126 > > y1="424" x2="128" y2="75"/> 00:22:03 v #25127 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="136" 00:22:03 v #25128 > > y1="424" x2="136" y2="75"/> 00:22:03 v #25129 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="144" 00:22:03 v #25130 > > y1="424" x2="144" y2="75"/> 00:22:03 v #25131 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" 00:22:03 v #25132 > > y1="424" x2="153" y2="75"/> 00:22:03 v #25133 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="161" 00:22:03 v #25134 > > y1="424" x2="161" y2="75"/> 00:22:03 v #25135 > > │ <line o... 332,343 334,332 336,319 337,304 339,287 341,269 00:22:03 v #25136 > > 342,250 344,231 346,212 347,195 349,178 351,164 352,153 354,144 356,138 357,136 00:22:03 v #25137 > > 359,136 361,140 362,147 364,157 366,169 367,183 369,199 371,216 372,234 374,253 00:22:03 v #25138 > > 376,271 377,288 379,304 381,318 382,330 384,339 386,346 387,349 389,349 391,346 00:22:03 v #25139 > > 392,340 394,332 396,321 397,307 399,292 401,276 402,258 404,241 406,223 407,206 00:22:03 v #25140 > > 409,190 410,176 412,164 414,154 415,148 417,144 419,143 420,145 422,150 424,158 00:22:03 v #25141 > > 425,168 427,180 429,194 430,210 432,227 434,244 435,261 437,278 439,293 440,307 00:22:03 v #25142 > > 442,320 444,330 445,337 447,341 449,343 450,342 452,338 454,331 455,322 457,310 00:22:03 v #25143 > > 459,297 460,282 462,266 464,249 465,233 467,216 469,201 470,187 472,174 474,164 00:22:03 v #25144 > > 475,156 477,151 479,149 480,149 482,153 484,159 485,167 487,178 489,190 490,204 00:22:03 v #25145 > > 492,220 494,236 495,252 497,268 499,283 500,297 502,310 504,320 505,329 507,334 00:22:03 v #25146 > > 509,337 510,337 512,335 514,330 515,322 517,312 519,300 520,287 522,272 524,257 00:22:03 v #25147 > > 525,241 527,226 529,210 530,196 532,184 534,173 535,164 537,158 539,154 540,154 00:22:03 v #25148 > > 542,155 544,160 545,167 547,176 549,187 550,199 552,213 554,228 555,244 557,259 00:22:03 v #25149 > > 559,274 560,288 562,301 564,312 565,321 567,327 569,332 "/> 00:22:03 v #25150 > > │ <rect x="454" y="235" width="126" height="30" opacity="1" 00:22:03 v #25151 > > fill="none" stroke="#FFFFFF"/> 00:22:03 v #25152 > > │ <text x="494" y="245" dy="0.76em" text-anchor="start" 00:22:03 v #25153 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:03 v #25154 > > fill="#FFFFFF"> 00:22:03 v #25155 > > │ velocity (m/s) 00:22:03 v #25156 > > │ </text> 00:22:03 v #25157 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:03 v #25158 > > stroke-width="1" points="464,250 484,250 "/> 00:22:03 v #25159 > > │ </svg> 00:22:03 v #25160 > > │ 00:22:03 v #25161 > > 00:22:03 v #25162 > > ── [ 222.39ms - stdout ] ─────────────────────────────────────────────────────── 00:22:03 v #25163 > > │ 00:00:10 d #28 runtime.execute_with_options_async / { 00:22:03 v #25164 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:03 v #25165 > > arguments = US5_1; options = { command = 00:22:03 v #25166 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:03 v #25167 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:03 v #25168 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:03 v #25169 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:03 v #25170 > > │ 00:00:10 v #29 > Creating 00:22:03 v #25171 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6e1af89de9d77d914991731 00:22:03 v #25172 > > dc22cdee69efe252557400e2aeaa7feb3756058da.svg 00:22:03 v #25173 > > │ 00:00:10 d #30 runtime.execute_with_options_async / { 00:22:03 v #25174 > > exit_code = 0; output_length = 134 } 00:22:03 v #25175 > > │ 00:22:03 v #25176 > > 00:22:03 v #25177 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:03 v #25178 > > │ ### shift 00:22:03 v #25179 > > 00:22:03 v #25180 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #25181 > > type update_function s = s -> s 00:22:03 v #25182 > > 00:22:03 v #25183 > > type differential_equation s ds = s -> ds 00:22:03 v #25184 > > 00:22:03 v #25185 > > type numerical_method s ds = differential_equation s ds -> update_function s 00:22:03 v #25186 > > 00:22:03 v #25187 > > 00:22:03 v #25188 > > inl solver method = 00:22:03 v #25189 > > method >> seq.iterate 00:22:03 v #25190 > > inl solver' method = 00:22:03 v #25191 > > method >> seq.iterate' 00:22:03 v #25192 > > inl solver_ method = 00:22:03 v #25193 > > method >> seq.iterate_ 00:22:03 v #25194 > > 00:22:03 v #25195 > > 00:22:03 v #25196 > > inl euler_cromer_1d dt deriv (state_1d (t0, x0, v0) as t) = 00:22:03 v #25197 > > inl (rrr (_, _, dvdt)) = deriv t 00:22:03 v #25198 > > inl t1 = t0 + dt 00:22:03 v #25199 > > inl v1 = v0 + dvdt * dt 00:22:03 v #25200 > > inl x1 = x0 + v1 * dt 00:22:03 v #25201 > > state_1d (t1, x1, v1) 00:22:03 v #25202 > > 00:22:03 v #25203 > > inl update_txv_ec dt m fs = 00:22:03 v #25204 > > euler_cromer_1d dt (newton_second_1d m fs) 00:22:03 v #25205 > > 00:22:03 v #25206 > > prototype (+++) ds : ds -> ds -> ds 00:22:03 v #25207 > > prototype scale ds : f64 -> ds -> ds 00:22:03 v #25208 > > 00:22:03 v #25209 > > instance (+++) rrr = fun (rrr (dtdt0, dxdt0, dvdt0)) (rrr (dtdt1, dxdt1, dvdt1)) 00:22:03 v #25210 > > => 00:22:03 v #25211 > > rrr (dtdt0 + dtdt1, dxdt0 + dxdt1, dvdt0 + dvdt1) 00:22:03 v #25212 > > 00:22:03 v #25213 > > instance scale rrr = fun w (rrr (dtdt0, dxdt0, dvdt0)) => 00:22:03 v #25214 > > rrr (w * dtdt0, w * dxdt0, w * dvdt0) 00:22:03 v #25215 > > 00:22:03 v #25216 > > prototype shift s : forall ds. f64 -> ds -> s -> s 00:22:03 v #25217 > > 00:22:03 v #25218 > > instance shift state_1d = fun dt ds (state_1d (t, x, v)) => 00:22:03 v #25219 > > inl dtdt, dxdt, dvdt = 00:22:03 v #25220 > > real 00:22:03 v #25221 > > match ds with 00:22:03 v #25222 > > | rrr x => x 00:22:03 v #25223 > > | state_1d x => x 00:22:03 v #25224 > > state_1d (t + dtdt * dt, x + dxdt * dt, v + dvdt * dt) 00:22:03 v #25225 > > 00:22:03 v #25226 > > inl euler dt deriv st0 = 00:22:03 v #25227 > > shift dt (deriv st0) st0 00:22:03 v #25228 > > 00:22:03 v #25229 > > inl runge_kutta_4 dt deriv st0 = 00:22:03 v #25230 > > inl m0 = deriv st0 00:22:03 v #25231 > > inl m1 = deriv (shift (dt / 2) m0 st0) 00:22:03 v #25232 > > inl m2 = deriv (shift (dt / 2) m1 st0) 00:22:03 v #25233 > > inl m3 = deriv (shift dt m2 st0) 00:22:03 v #25234 > > shift (dt / 6) (m0 +++ m1 +++ m1 +++ m2 +++ m2 +++ m3) st0 00:22:03 v #25235 > > 00:22:03 v #25236 > > inl exponential (_, x0, v0) = 00:22:03 v #25237 > > 1f64, v0, x0 00:22:03 v #25238 > > 00:22:03 v #25239 > > inl of_state_1d (state_1d (t, x, v)) = 00:22:03 v #25240 > > t, x, v 00:22:03 v #25241 > > 00:22:03 v #25242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #25243 > > //// test 00:22:03 v #25244 > > 00:22:03 v #25245 > > solver (euler 0.01) (of_state_1d >> exponential >> state_1d) (state_1d (0, 1, 00:22:03 v #25246 > > 1)) 800i32 00:22:03 v #25247 > > |> _assert_eq (state_1d (7.999999999999874, 2864.8311229272326, 00:22:03 v #25248 > > 2864.8311229272326)) 00:22:03 v #25249 > > 00:22:03 v #25250 > > solver (euler_cromer_1d 0.1) (of_state_1d >> exponential >> rrr) (state_1d (0, 00:22:03 v #25251 > > 1, 1)) 80i32 00:22:03 v #25252 > > |> _assert_eq (state_1d (7.999999999999988, 3043.379244966009, 00:22:03 v #25253 > > 2895.0121485099035)) 00:22:03 v #25254 > > 00:22:03 v #25255 > > solver (runge_kutta_4 1) (of_state_1d >> exponential >> rrr) (state_1d (0, 1, 00:22:03 v #25256 > > 1)) 8i32 00:22:03 v #25257 > > |> _assert_eq (state_1d (8.0, 2894.789038540849, 2894.789038540849)) 00:22:03 v #25258 > > 00:22:03 v #25259 > > ── [ 319.70ms - stdout ] ─────────────────────────────────────────────────────── 00:22:03 v #25260 > > │ __assert_eq / actual: struct (8.0, 2864.831123, 2864.831123) 00:22:03 v #25261 > > / expected: struct (8.0, 2864.831123, 2864.831123) 00:22:03 v #25262 > > │ __assert_eq / actual: struct (8.0, 3043.379245, 2895.012149) 00:22:03 v #25263 > > / expected: struct (8.0, 3043.379245, 2895.012149) 00:22:03 v #25264 > > │ __assert_eq / actual: struct (8.0, 2894.789039, 2894.789039) 00:22:03 v #25265 > > / expected: struct (8.0, 2894.789039, 2894.789039) 00:22:03 v #25266 > > │ 00:22:03 v #25267 > > 00:22:03 v #25268 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:03 v #25269 > > │ ### vec 00:22:03 v #25270 > > 00:22:03 v #25271 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #25272 > > type vec = 00:22:03 v #25273 > > { 00:22:03 v #25274 > > x : f64 00:22:03 v #25275 > > y : f64 00:22:03 v #25276 > > z : f64 00:22:03 v #25277 > > } 00:22:03 v #25278 > > 00:22:03 v #25279 > > inl vec x y z : vec = 00:22:03 v #25280 > > { x y z } 00:22:03 v #25281 > > 00:22:03 v #25282 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:03 v #25283 > > //// test 00:22:03 v #25284 > > 00:22:03 v #25285 > > vec 1 2 3 .z 00:22:03 v #25286 > > |> _assert_eq 3 00:22:04 v #25287 > > 00:22:04 v #25288 > > ── [ 186.10ms - stdout ] ─────────────────────────────────────────────────────── 00:22:04 v #25289 > > │ __assert_eq / actual: 3.0 / expected: 3.0 00:22:04 v #25290 > > │ 00:22:04 v #25291 > > 00:22:04 v #25292 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:04 v #25293 > > │ #### consts 00:22:04 v #25294 > > 00:22:04 v #25295 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #25296 > > inl i_hat () = vec 1 0 0 00:22:04 v #25297 > > inl j_hat () = vec 0 1 0 00:22:04 v #25298 > > inl k_hat () = vec 0 0 1 00:22:04 v #25299 > > inl zero_vec () = vec 0 0 0 00:22:04 v #25300 > > 00:22:04 v #25301 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:04 v #25302 > > │ #### ^+^ 00:22:04 v #25303 > > 00:22:04 v #25304 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #25305 > > inl (^+^) (a : vec) (b : vec) = 00:22:04 v #25306 > > vec (a.x + b.x) (a.y + b.y) (a.z + b.z) 00:22:04 v #25307 > > 00:22:04 v #25308 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #25309 > > //// test 00:22:04 v #25310 > > 00:22:04 v #25311 > > vec 1 2 3 ^+^ vec 4 5 6 00:22:04 v #25312 > > |> _assert_eq (vec 5 7 9) 00:22:04 v #25313 > > 00:22:04 v #25314 > > ── [ 171.26ms - stdout ] ─────────────────────────────────────────────────────── 00:22:04 v #25315 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: 00:22:04 v #25316 > > struct (5.0, 7.0, 9.0) 00:22:04 v #25317 > > │ 00:22:04 v #25318 > > 00:22:04 v #25319 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:04 v #25320 > > │ #### sum_vec 00:22:04 v #25321 > > 00:22:04 v #25322 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #25323 > > inl sum_vec vs = 00:22:04 v #25324 > > vs |> listm.fold (^+^) (zero_vec ()) 00:22:04 v #25325 > > 00:22:04 v #25326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:04 v #25327 > > //// test 00:22:04 v #25328 > > 00:22:04 v #25329 > > [[ vec 1 2 3; vec 4 5 6 ]] 00:22:04 v #25330 > > |> sum_vec 00:22:04 v #25331 > > |> _assert_eq (vec 5 7 9) 00:22:05 v #25332 > > 00:22:05 v #25333 > > ── [ 164.66ms - stdout ] ─────────────────────────────────────────────────────── 00:22:05 v #25334 > > │ __assert_eq / actual: struct (5.0, 7.0, 9.0) / expected: 00:22:05 v #25335 > > struct (5.0, 7.0, 9.0) 00:22:05 v #25336 > > │ 00:22:05 v #25337 > > 00:22:05 v #25338 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:05 v #25339 > > │ #### *^ 00:22:05 v #25340 > > 00:22:05 v #25341 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25342 > > inl (*^) c { x y z } = 00:22:05 v #25343 > > vec (c * x) (c * y) (c * z) 00:22:05 v #25344 > > 00:22:05 v #25345 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25346 > > //// test 00:22:05 v #25347 > > 00:22:05 v #25348 > > 5 *^ vec 1 2 3 00:22:05 v #25349 > > |> _assert_eq (vec 5 10 15) 00:22:05 v #25350 > > 00:22:05 v #25351 > > ── [ 224.37ms - stdout ] ─────────────────────────────────────────────────────── 00:22:05 v #25352 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: 00:22:05 v #25353 > > struct (5.0, 10.0, 15.0) 00:22:05 v #25354 > > │ 00:22:05 v #25355 > > 00:22:05 v #25356 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25357 > > //// test 00:22:05 v #25358 > > 00:22:05 v #25359 > > 3 *^ i_hat () ^+^ 4 *^ k_hat () 00:22:05 v #25360 > > |> _assert_eq (vec 3 0 4) 00:22:05 v #25361 > > 00:22:05 v #25362 > > ── [ 159.56ms - stdout ] ─────────────────────────────────────────────────────── 00:22:05 v #25363 > > │ __assert_eq / actual: struct (3.0, 0.0, 4.0) / expected: 00:22:05 v #25364 > > struct (3.0, 0.0, 4.0) 00:22:05 v #25365 > > │ 00:22:05 v #25366 > > 00:22:05 v #25367 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:05 v #25368 > > │ #### ^* 00:22:05 v #25369 > > 00:22:05 v #25370 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25371 > > inl (^*) v c = 00:22:05 v #25372 > > (*^) c v 00:22:05 v #25373 > > 00:22:05 v #25374 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25375 > > //// test 00:22:05 v #25376 > > 00:22:05 v #25377 > > vec 1 2 3 ^* 5 00:22:05 v #25378 > > |> _assert_eq (vec 5 10 15) 00:22:05 v #25379 > > 00:22:05 v #25380 > > ── [ 166.12ms - stdout ] ─────────────────────────────────────────────────────── 00:22:05 v #25381 > > │ __assert_eq / actual: struct (5.0, 10.0, 15.0) / expected: 00:22:05 v #25382 > > struct (5.0, 10.0, 15.0) 00:22:05 v #25383 > > │ 00:22:05 v #25384 > > 00:22:05 v #25385 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:05 v #25386 > > │ #### ^ 00:22:05 v #25387 > > 00:22:05 v #25388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:05 v #25389 > > inl (^/) { x y z } c = 00:22:05 v #25390 > > vec (x / c) (y / c) (z / c) 00:22:06 v #25391 > > 00:22:06 v #25392 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25393 > > //// test 00:22:06 v #25394 > > 00:22:06 v #25395 > > vec 1 2 3 ^/ 5 00:22:06 v #25396 > > |> _assert_eq (vec 0.2 0.4 0.6) 00:22:06 v #25397 > > 00:22:06 v #25398 > > ── [ 161.14ms - stdout ] ─────────────────────────────────────────────────────── 00:22:06 v #25399 > > │ __assert_eq / actual: struct (0.2, 0.4, 0.6) / expected: 00:22:06 v #25400 > > struct (0.2, 0.4, 0.6) 00:22:06 v #25401 > > │ 00:22:06 v #25402 > > 00:22:06 v #25403 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:06 v #25404 > > │ #### negate_vec 00:22:06 v #25405 > > 00:22:06 v #25406 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25407 > > inl negate_vec v = 00:22:06 v #25408 > > v ^* -1 00:22:06 v #25409 > > 00:22:06 v #25410 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25411 > > //// test 00:22:06 v #25412 > > 00:22:06 v #25413 > > vec 1 2 3 00:22:06 v #25414 > > |> negate_vec 00:22:06 v #25415 > > |> _assert_eq (vec -1 -2 -3) 00:22:06 v #25416 > > 00:22:06 v #25417 > > ── [ 177.66ms - stdout ] ─────────────────────────────────────────────────────── 00:22:06 v #25418 > > │ __assert_eq / actual: struct (-1.0, -2.0, -3.0) / expected: 00:22:06 v #25419 > > struct (-1.0, -2.0, -3.0) 00:22:06 v #25420 > > │ 00:22:06 v #25421 > > 00:22:06 v #25422 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:06 v #25423 > > │ #### ^-^ 00:22:06 v #25424 > > 00:22:06 v #25425 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25426 > > inl (^-^) a b = 00:22:06 v #25427 > > a ^+^ (negate_vec b) 00:22:06 v #25428 > > 00:22:06 v #25429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25430 > > //// test 00:22:06 v #25431 > > 00:22:06 v #25432 > > vec 1 2 3 ^-^ vec 4 5 6 00:22:06 v #25433 > > |> _assert_eq (vec -3 -3 -3) 00:22:06 v #25434 > > 00:22:06 v #25435 > > ── [ 160.38ms - stdout ] ─────────────────────────────────────────────────────── 00:22:06 v #25436 > > │ __assert_eq / actual: struct (-3.0, -3.0, -3.0) / expected: 00:22:06 v #25437 > > struct (-3.0, -3.0, -3.0) 00:22:06 v #25438 > > │ 00:22:06 v #25439 > > 00:22:06 v #25440 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:06 v #25441 > > │ #### <.> 00:22:06 v #25442 > > 00:22:06 v #25443 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:06 v #25444 > > inl (<.>) { x = ax y = ay z = az } { x = bx y = by z = bz } = 00:22:06 v #25445 > > ax * bx + ay * by + az * bz 00:22:07 v #25446 > > 00:22:07 v #25447 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25448 > > //// test 00:22:07 v #25449 > > 00:22:07 v #25450 > > vec 1 2 3 <.> vec 4 5 6 00:22:07 v #25451 > > |> _assert_eq 32 00:22:07 v #25452 > > 00:22:07 v #25453 > > ── [ 195.52ms - stdout ] ─────────────────────────────────────────────────────── 00:22:07 v #25454 > > │ __assert_eq / actual: 32.0 / expected: 32.0 00:22:07 v #25455 > > │ 00:22:07 v #25456 > > 00:22:07 v #25457 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:07 v #25458 > > │ #### \>\< 00:22:07 v #25459 > > 00:22:07 v #25460 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25461 > > inl (><) (a : vec) (b : vec) = 00:22:07 v #25462 > > vec 00:22:07 v #25463 > > (a.y * b.z - a.z * b.y) 00:22:07 v #25464 > > (a.z * b.x - a.x * b.z) 00:22:07 v #25465 > > (a.x * b.y - a.y * b.x) 00:22:07 v #25466 > > 00:22:07 v #25467 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25468 > > //// test 00:22:07 v #25469 > > 00:22:07 v #25470 > > vec 1 2 3 >< vec 4 5 6 00:22:07 v #25471 > > |> _assert_eq (vec -3 6 -3) 00:22:07 v #25472 > > 00:22:07 v #25473 > > ── [ 183.55ms - stdout ] ─────────────────────────────────────────────────────── 00:22:07 v #25474 > > │ __assert_eq / actual: struct (-3.0, 6.0, -3.0) / expected: 00:22:07 v #25475 > > struct (-3.0, 6.0, -3.0) 00:22:07 v #25476 > > │ 00:22:07 v #25477 > > 00:22:07 v #25478 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:07 v #25479 > > │ #### magnitude 00:22:07 v #25480 > > 00:22:07 v #25481 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25482 > > inl magnitude v = 00:22:07 v #25483 > > v <.> v |> sqrt 00:22:07 v #25484 > > 00:22:07 v #25485 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25486 > > //// test 00:22:07 v #25487 > > 00:22:07 v #25488 > > vec 1 2 3 00:22:07 v #25489 > > |> magnitude 00:22:07 v #25490 > > |> _assert_approx_eq None 3.7416573867739413 00:22:07 v #25491 > > 00:22:07 v #25492 > > ── [ 164.72ms - stdout ] ─────────────────────────────────────────────────────── 00:22:07 v #25493 > > │ __assert_approx_eq / actual: 3.741657387 / expected: 00:22:07 v #25494 > > 3.741657387 00:22:07 v #25495 > > │ 00:22:07 v #25496 > > 00:22:07 v #25497 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:07 v #25498 > > │ #### v1 00:22:07 v #25499 > > 00:22:07 v #25500 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:07 v #25501 > > inl v1 t = 00:22:07 v #25502 > > 2 *^ (t ** 2 *^ i_hat () ^+^ 3 *^ (t ** 3 *^ j_hat () ^+^ t ** 4 *^ k_hat 00:22:07 v #25503 > > ())) 00:22:08 v #25504 > > 00:22:08 v #25505 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25506 > > //// test 00:22:08 v #25507 > > 00:22:08 v #25508 > > v1 1 00:22:08 v #25509 > > |> _assert_eq (vec 2 6 6) 00:22:08 v #25510 > > 00:22:08 v #25511 > > ── [ 167.98ms - stdout ] ─────────────────────────────────────────────────────── 00:22:08 v #25512 > > │ __assert_eq / actual: struct (2.0, 6.0, 6.0) / expected: 00:22:08 v #25513 > > struct (2.0, 6.0, 6.0) 00:22:08 v #25514 > > │ 00:22:08 v #25515 > > 00:22:08 v #25516 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:08 v #25517 > > │ #### vec_derivative 00:22:08 v #25518 > > 00:22:08 v #25519 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25520 > > type vec_derivative = (f64 -> vec) -> f64 -> vec 00:22:08 v #25521 > > 00:22:08 v #25522 > > inl vec_derivative dt : vec_derivative = 00:22:08 v #25523 > > fun v t => 00:22:08 v #25524 > > (v (t + dt / 2) ^-^ v (t - dt / 2)) ^/ dt 00:22:08 v #25525 > > 00:22:08 v #25526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25527 > > //// test 00:22:08 v #25528 > > 00:22:08 v #25529 > > vec_derivative 0.01 v1 3 .x 00:22:08 v #25530 > > |> _assert_approx_eq None (derivative 0.01 (v1 >> fun v => v.x) 3) 00:22:08 v #25531 > > 00:22:08 v #25532 > > ── [ 222.85ms - stdout ] ─────────────────────────────────────────────────────── 00:22:08 v #25533 > > │ __assert_approx_eq / actual: 12.0 / expected: 12.0 00:22:08 v #25534 > > │ 00:22:08 v #25535 > > 00:22:08 v #25536 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:08 v #25537 > > │ ### states_ps 00:22:08 v #25538 > > 00:22:08 v #25539 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25540 > > nominal particle_state = 00:22:08 v #25541 > > { 00:22:08 v #25542 > > mass : f64 00:22:08 v #25543 > > charge : f64 00:22:08 v #25544 > > time : f64 00:22:08 v #25545 > > pos_vec : vec 00:22:08 v #25546 > > velocity : vec 00:22:08 v #25547 > > } 00:22:08 v #25548 > > 00:22:08 v #25549 > > inl default_particle_state () : particle_state = 00:22:08 v #25550 > > particle_state { 00:22:08 v #25551 > > mass = 1 00:22:08 v #25552 > > charge = 0 00:22:08 v #25553 > > time = 0 00:22:08 v #25554 > > pos_vec = zero_vec () 00:22:08 v #25555 > > velocity = zero_vec () 00:22:08 v #25556 > > } 00:22:08 v #25557 > > 00:22:08 v #25558 > > type one_body_force = particle_state -> vec 00:22:08 v #25559 > > 00:22:08 v #25560 > > nominal d_particle_state = 00:22:08 v #25561 > > { 00:22:08 v #25562 > > dmdt : f64 00:22:08 v #25563 > > dqdt : f64 00:22:08 v #25564 > > dtdt : f64 00:22:08 v #25565 > > drdt : vec 00:22:08 v #25566 > > dvdt : vec 00:22:08 v #25567 > > } 00:22:08 v #25568 > > 00:22:08 v #25569 > > inl newton_second_ps (fs : list one_body_force) (st : particle_state) : 00:22:08 v #25570 > > d_particle_state = 00:22:08 v #25571 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:22:08 v #25572 > > d_particle_state { 00:22:08 v #25573 > > dmdt = 0 00:22:08 v #25574 > > dqdt = 0 00:22:08 v #25575 > > dtdt = 1 00:22:08 v #25576 > > drdt = st.velocity 00:22:08 v #25577 > > dvdt = f_net ^/ st.mass 00:22:08 v #25578 > > } 00:22:08 v #25579 > > 00:22:08 v #25580 > > inl earth_surface_gravity (st : particle_state) = 00:22:08 v #25581 > > inl g = 9.80665 00:22:08 v #25582 > > -st.mass * g *^ k_hat () 00:22:08 v #25583 > > 00:22:08 v #25584 > > inl air_resistance drag rho area (st : particle_state) = 00:22:08 v #25585 > > -0.5 * drag * rho * area * magnitude st.velocity *^ st.velocity 00:22:08 v #25586 > > 00:22:08 v #25587 > > inl euler_cromer_ps dt (deriv : particle_state -> d_particle_state) 00:22:08 v #25588 > > (particle_state st) = 00:22:08 v #25589 > > inl dst : d_particle_state = deriv (particle_state st) 00:22:08 v #25590 > > inl v' = st.velocity ^+^ dst.dvdt ^* dt 00:22:08 v #25591 > > particle_state { st with 00:22:08 v #25592 > > time = st.time + dt 00:22:08 v #25593 > > pos_vec = st.pos_vec ^+^ v' ^* dt 00:22:08 v #25594 > > velocity = st.velocity ^+^ dst.dvdt ^* dt 00:22:08 v #25595 > > } 00:22:08 v #25596 > > 00:22:08 v #25597 > > instance (+++) d_particle_state = fun (dps : d_particle_state) (dps' : 00:22:08 v #25598 > > d_particle_state) => 00:22:08 v #25599 > > d_particle_state { 00:22:08 v #25600 > > dmdt = dps.dmdt + dps'.dmdt 00:22:08 v #25601 > > dqdt = dps.dqdt + dps'.dqdt 00:22:08 v #25602 > > dtdt = dps.dtdt + dps'.dtdt 00:22:08 v #25603 > > drdt = dps.drdt ^+^ dps'.drdt 00:22:08 v #25604 > > dvdt = dps.dvdt ^+^ dps'.dvdt 00:22:08 v #25605 > > } 00:22:08 v #25606 > > 00:22:08 v #25607 > > instance scale d_particle_state = fun w (dps : d_particle_state) => 00:22:08 v #25608 > > d_particle_state { 00:22:08 v #25609 > > dmdt = w * dps.dmdt 00:22:08 v #25610 > > dqdt = w * dps.dqdt 00:22:08 v #25611 > > dtdt = w * dps.dtdt 00:22:08 v #25612 > > drdt = w *^ dps.drdt 00:22:08 v #25613 > > dvdt = w *^ dps.dvdt 00:22:08 v #25614 > > } 00:22:08 v #25615 > > 00:22:08 v #25616 > > instance shift particle_state = fun dt dps (particle_state st) => 00:22:08 v #25617 > > inl (d_particle_state dps) = 00:22:08 v #25618 > > real 00:22:08 v #25619 > > match dps with 00:22:08 v #25620 > > | d_particle_state _ => dps 00:22:08 v #25621 > > particle_state { st with 00:22:08 v #25622 > > time = st.time + dps.dtdt * dt 00:22:08 v #25623 > > pos_vec = st.pos_vec ^+^ dps.drdt ^* dt 00:22:08 v #25624 > > velocity = st.velocity ^+^ dps.dvdt ^* dt 00:22:08 v #25625 > > } 00:22:08 v #25626 > > 00:22:08 v #25627 > > inl states_ps (method : numerical_method particle_state d_particle_state) : _ -> 00:22:08 v #25628 > > _ -> i32 -> particle_state = 00:22:08 v #25629 > > newton_second_ps >> method >> seq.iterate_ 00:22:08 v #25630 > > 00:22:08 v #25631 > > inl z_ge0 sts = 00:22:08 v #25632 > > sts 00:22:08 v #25633 > > |> seq.take_while_ (fun (particle_state st) _ => st.pos_vec.z >= 0) 00:22:08 v #25634 > > 00:22:08 v #25635 > > inl trajectory sts = 00:22:08 v #25636 > > sts |> listm.map (fun (particle_state st) => st.pos_vec.y, st.pos_vec.z) 00:22:08 v #25637 > > 00:22:08 v #25638 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25639 > > //// test 00:22:08 v #25640 > > 00:22:08 v #25641 > > inl update_ps (method : numerical_method particle_state d_particle_state) = 00:22:08 v #25642 > > newton_second_ps >> method 00:22:08 v #25643 > > 00:22:08 v #25644 > > inl position_ps (method : numerical_method particle_state d_particle_state) fs 00:22:08 v #25645 > > st t = 00:22:08 v #25646 > > inl states : i32 -> particle_state = states_ps method fs st 00:22:08 v #25647 > > inl dt = (states 1).time - (states 0).time 00:22:08 v #25648 > > inl num_steps = t / dt |> math.round |> abs 00:22:08 v #25649 > > inl st1 = solver' method (newton_second_ps fs) st num_steps 00:22:08 v #25650 > > st1.pos_vec 00:22:08 v #25651 > > 00:22:08 v #25652 > > inl sun_gravity (st : particle_state) : vec = 00:22:08 v #25653 > > inl big_g = 0.0000000000667408 00:22:08 v #25654 > > inl sun_mass = 1988480000000000000000000000000 00:22:08 v #25655 > > -big_g * sun_mass * st.mass *^ st.pos_vec ^/ magnitude st.pos_vec ** 3 00:22:08 v #25656 > > 00:22:08 v #25657 > > inl wind_force v_wind drag rho area (st : particle_state) = 00:22:08 v #25658 > > inl v_rel = st.velocity ^-^ v_wind 00:22:08 v #25659 > > -0.5 * drag * rho * area * magnitude v_rel *^ v_rel 00:22:08 v #25660 > > 00:22:08 v #25661 > > inl rock_state () = 00:22:08 v #25662 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:08 v #25663 > > particle_state { default_particle_state' with 00:22:08 v #25664 > > mass = 2 00:22:08 v #25665 > > velocity = vec 3 0 4 00:22:08 v #25666 > > } 00:22:08 v #25667 > > 00:22:08 v #25668 > > inl halley_update dt = 00:22:08 v #25669 > > update_ps (euler_cromer_ps dt) [[ sun_gravity ]] 00:22:08 v #25670 > > 00:22:08 v #25671 > > inl halley_initial () = 00:22:08 v #25672 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:08 v #25673 > > particle_state { default_particle_state' with 00:22:08 v #25674 > > mass = 220000000000000 00:22:08 v #25675 > > pos_vec = 87660000000 *^ i_hat () 00:22:08 v #25676 > > velocity = 54569 *^ j_hat () 00:22:08 v #25677 > > } 00:22:08 v #25678 > > 00:22:08 v #25679 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:08 v #25680 > > //// test 00:22:08 v #25681 > > 00:22:08 v #25682 > > inl baseball_forces () = 00:22:08 v #25683 > > inl area = pi * (0.074 / 2) ** 2 00:22:08 v #25684 > > [[ 00:22:08 v #25685 > > earth_surface_gravity 00:22:08 v #25686 > > air_resistance 0.3 1.225 area 00:22:08 v #25687 > > ]] 00:22:08 v #25688 > > 00:22:08 v #25689 > > inl baseball_trajectory dt v0 theta_deg = 00:22:08 v #25690 > > inl theta_rad = theta_deg * pi / 180 00:22:08 v #25691 > > inl vy0 = v0 * cos theta_rad 00:22:08 v #25692 > > inl vz0 = v0 * sin theta_rad 00:22:08 v #25693 > > inl initial_state = 00:22:08 v #25694 > > particle_state { 00:22:08 v #25695 > > mass = 0.145 00:22:08 v #25696 > > charge = 0 00:22:08 v #25697 > > time = 0 00:22:08 v #25698 > > pos_vec = zero_vec () 00:22:08 v #25699 > > velocity = vec 0 vy0 vz0 00:22:08 v #25700 > > } 00:22:08 v #25701 > > states_ps (euler_cromer_ps dt) (baseball_forces ()) initial_state 00:22:08 v #25702 > > >> Some 00:22:08 v #25703 > > |> z_ge0 00:22:08 v #25704 > > |> trajectory 00:22:08 v #25705 > > 00:22:08 v #25706 > > inl baseball_range dt v0 theta_deg = 00:22:08 v #25707 > > baseball_trajectory dt v0 theta_deg 00:22:08 v #25708 > > |> listm.fold (fun _ (y, _) => y) 0 00:22:08 v #25709 > > 00:22:08 v #25710 > > inl x = am'.init_series 10 80 1 00:22:08 v #25711 > > inl y = x |> am'.map_base (baseball_range 0.01 45) 00:22:08 v #25712 > > "range for a baseball hit at 45 m/s", 00:22:08 v #25713 > > "angle above horizontal (degrees)", 00:22:08 v #25714 > > "", 00:22:08 v #25715 > > ;[[ "horizontal range (m)", x, y ]] 00:22:09 v #25716 > > 00:22:09 v #25717 > > ── [ 824.43ms - return value ] ───────────────────────────────────────────────── 00:22:09 v #25718 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:09 v #25719 > > xmlns="http://www.w3.org/2000/svg"> 00:22:09 v #25720 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:09 v #25721 > > fill="#141414" stroke="none"/> 00:22:09 v #25722 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:09 v #25723 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:09 v #25724 > > fill="#FFFFFF"> 00:22:09 v #25725 > > │ range for a baseball hit at 45 m/s 00:22:09 v #25726 > > │ </text> 00:22:09 v #25727 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="55" 00:22:09 v #25728 > > y1="424" x2="55" y2="75"/> 00:22:09 v #25729 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" 00:22:09 v #25730 > > y1="424" x2="62" y2="75"/> 00:22:09 v #25731 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:09 v #25732 > > y1="424" x2="69" y2="75"/> 00:22:09 v #25733 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" 00:22:09 v #25734 > > y1="424" x2="77" y2="75"/> 00:22:09 v #25735 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="84" 00:22:09 v #25736 > > y1="424" x2="84" y2="75"/> 00:22:09 v #25737 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="91" 00:22:09 v #25738 > > y1="424" x2="91" y2="75"/> 00:22:09 v #25739 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="98" 00:22:09 v #25740 > > y1="424" x2="98" y2="75"/> 00:22:09 v #25741 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" 00:22:09 v #25742 > > y1="424" x2="105" y2="75"/> 00:22:09 v #25743 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="112" 00:22:09 v #25744 > > y1="424" x2="112" y2="75"/> 00:22:09 v #25745 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:09 v #25746 > > y1="424" x2="119" y2="75"/> 00:22:09 v #25747 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="127" 00:22:09 v #25748 > > y1="424" x2="127" y2="75"/> 00:22:09 v #25749 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="134" 00:22:09 v #25750 > > y1="424" x2="134" y2="75"/> 00:22:09 v #25751 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" 00:22:09 v #25752 > > y1="424" x2="141" y2="75"/> 00:22:09 v #25753 > > │ <li...nts="585,199 590,199 "/> 00:22:09 v #25754 > > │ <text x="595" y="156" dy="0.5ex" text-anchor="start" 00:22:09 v #25755 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:09 v #25756 > > fill="#FFFFFF"> 00:22:09 v #25757 > > │ 100.0 00:22:09 v #25758 > > │ </text> 00:22:09 v #25759 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:09 v #25760 > > stroke-width="1" points="585,156 590,156 "/> 00:22:09 v #25761 > > │ <text x="595" y="114" dy="0.5ex" text-anchor="start" 00:22:09 v #25762 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:09 v #25763 > > fill="#FFFFFF"> 00:22:09 v #25764 > > │ 110.0 00:22:09 v #25765 > > │ </text> 00:22:09 v #25766 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:09 v #25767 > > stroke-width="1" points="585,114 590,114 "/> 00:22:09 v #25768 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:09 v #25769 > > stroke-width="1" points="69,343 77,325 84,307 91,290 98,275 105,259 112,245 00:22:09 v #25770 > > 119,231 127,219 134,207 141,196 148,184 155,174 162,164 169,155 176,147 184,139 00:22:09 v #25771 > > 191,132 198,126 205,119 212,114 219,109 226,104 233,100 241,96 248,93 255,91 00:22:09 v #25772 > > 262,89 269,88 276,86 283,86 290,85 298,86 305,87 312,88 319,90 326,92 333,95 00:22:09 v #25773 > > 340,98 348,102 355,106 362,110 369,115 376,120 383,126 390,132 397,139 405,146 00:22:09 v #25774 > > 412,153 419,161 426,169 433,178 440,187 447,197 454,207 462,217 469,228 476,239 00:22:09 v #25775 > > 483,250 490,262 497,274 504,287 511,300 519,313 526,326 533,340 540,355 547,369 00:22:09 v #25776 > > 554,384 561,399 569,415 "/> 00:22:09 v #25777 > > │ <rect x="421" y="235" width="159" height="30" opacity="1" 00:22:09 v #25778 > > fill="none" stroke="#FFFFFF"/> 00:22:09 v #25779 > > │ <text x="461" y="245" dy="0.76em" text-anchor="start" 00:22:09 v #25780 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:09 v #25781 > > fill="#FFFFFF"> 00:22:09 v #25782 > > │ horizontal range (m) 00:22:09 v #25783 > > │ </text> 00:22:09 v #25784 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:09 v #25785 > > stroke-width="1" points="431,250 451,250 "/> 00:22:09 v #25786 > > │ </svg> 00:22:09 v #25787 > > │ 00:22:09 v #25788 > > 00:22:09 v #25789 > > ── [ 826.34ms - stdout ] ─────────────────────────────────────────────────────── 00:22:09 v #25790 > > │ 00:00:17 d #31 runtime.execute_with_options_async / { 00:22:09 v #25791 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:09 v #25792 > > arguments = US5_1; options = { command = 00:22:09 v #25793 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:09 v #25794 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:09 v #25795 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:09 v #25796 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:09 v #25797 > > │ 00:00:17 v #32 > Creating 00:22:09 v #25798 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8a3ef67f953e2a32e5071e8 00:22:09 v #25799 > > c55259d45275b376bbff5ccca65f5dad1aeac78c0.svg 00:22:09 v #25800 > > │ 00:00:17 d #33 runtime.execute_with_options_async / { 00:22:09 v #25801 > > exit_code = 0; output_length = 134 } 00:22:09 v #25802 > > │ 00:22:09 v #25803 > > 00:22:09 v #25804 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:09 v #25805 > > //// test 00:22:09 v #25806 > > 00:22:09 v #25807 > > inl best_angle (min, max) = 00:22:09 v #25808 > > let rec loop theta_deg (best_range, best_theta_deg) = 00:22:09 v #25809 > > if theta_deg > max 00:22:09 v #25810 > > then best_range, best_theta_deg 00:22:09 v #25811 > > else 00:22:09 v #25812 > > inl range = baseball_range 0.01 45 theta_deg 00:22:09 v #25813 > > loop 00:22:09 v #25814 > > (theta_deg + 1) 00:22:09 v #25815 > > (if range > best_range 00:22:09 v #25816 > > then range, theta_deg 00:22:09 v #25817 > > else best_range, best_theta_deg) 00:22:09 v #25818 > > loop min (0f64, min) 00:22:09 v #25819 > > 00:22:09 v #25820 > > best_angle (30f64, 60f64) 00:22:09 v #25821 > > |> _assert_eq (116.77499158246208, 41) 00:22:10 v #25822 > > 00:22:10 v #25823 > > ── [ 535.16ms - stdout ] ─────────────────────────────────────────────────────── 00:22:10 v #25824 > > │ __assert_eq / actual: struct (116.7749916, 41.0) / expected: 00:22:10 v #25825 > > struct (116.7749916, 41.0) 00:22:10 v #25826 > > │ 00:22:10 v #25827 > > 00:22:10 v #25828 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:10 v #25829 > > │ ### relativity_ps 00:22:10 v #25830 > > 00:22:10 v #25831 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:10 v #25832 > > inl relativity_ps fs (st : particle_state) = 00:22:10 v #25833 > > inl f_net = fs |> listm.map (fun f => f st) |> sum_vec 00:22:10 v #25834 > > inl c = 299792458 00:22:10 v #25835 > > inl u = st.velocity ^/ c 00:22:10 v #25836 > > inl acc = sqrt (1 - (u <.> u)) *^ (f_net ^-^ (f_net <.> u) *^ u) ^/ st.mass 00:22:10 v #25837 > > d_particle_state { 00:22:10 v #25838 > > dmdt = 0 00:22:10 v #25839 > > dqdt = 0 00:22:10 v #25840 > > dtdt = 1 00:22:10 v #25841 > > drdt = st.velocity 00:22:10 v #25842 > > dvdt = acc 00:22:10 v #25843 > > } 00:22:10 v #25844 > > 00:22:10 v #25845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:10 v #25846 > > //// test 00:22:10 v #25847 > > 00:22:10 v #25848 > > inl year = 365.25 * 24 * 60 * 60 00:22:10 v #25849 > > inl c = 299792458 00:22:10 v #25850 > > inl ~method = runge_kutta_4 100000 00:22:10 v #25851 > > inl forces = [[ fun _ => 10 *^ i_hat () ]] 00:22:10 v #25852 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:10 v #25853 > > inl initial_state = 00:22:10 v #25854 > > particle_state { default_particle_state' with 00:22:10 v #25855 > > mass = 1 00:22:10 v #25856 > > } 00:22:10 v #25857 > > 00:22:10 v #25858 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:22:10 v #25859 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:22:10 v #25860 > > 00:22:10 v #25861 > > inl newton_x, newton_y = 00:22:10 v #25862 > > newton_states 00:22:10 v #25863 > > >> Some 00:22:10 v #25864 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:22:10 v #25865 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:22:10 v #25866 > > |> listm'.unzip 00:22:10 v #25867 > > 00:22:10 v #25868 > > inl _, relativity_y = 00:22:10 v #25869 > > relativity_states 00:22:10 v #25870 > > >> Some 00:22:10 v #25871 > > |> seq.take_while_ (fun (particle_state st) (_ : i32) => st.time <= year) 00:22:10 v #25872 > > |> listm.map (fun (particle_state st) => st.time / year, st.velocity.x / c) 00:22:10 v #25873 > > |> listm'.unzip 00:22:10 v #25874 > > 00:22:10 v #25875 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:22:10 v #25876 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:22:10 v #25877 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:22:10 v #25878 > > 00:22:10 v #25879 > > "response to a constant force", 00:22:10 v #25880 > > "time (years)", 00:22:10 v #25881 > > "velocity (multiples of c)", 00:22:10 v #25882 > > ;[[ 00:22:10 v #25883 > > "newtonian", newton_x, newton_y 00:22:10 v #25884 > > "relativistic", newton_x, relativity_y 00:22:10 v #25885 > > ]] 00:22:10 v #25886 > > 00:22:10 v #25887 > > ── [ 415.93ms - return value ] ───────────────────────────────────────────────── 00:22:10 v #25888 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:10 v #25889 > > xmlns="http://www.w3.org/2000/svg"> 00:22:10 v #25890 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:10 v #25891 > > fill="#141414" stroke="none"/> 00:22:10 v #25892 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:10 v #25893 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:10 v #25894 > > fill="#FFFFFF"> 00:22:10 v #25895 > > │ response to a constant force 00:22:10 v #25896 > > │ </text> 00:22:10 v #25897 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:10 v #25898 > > y1="424" x2="59" y2="75"/> 00:22:10 v #25899 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:10 v #25900 > > y1="424" x2="69" y2="75"/> 00:22:10 v #25901 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:10 v #25902 > > y1="424" x2="79" y2="75"/> 00:22:10 v #25903 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:10 v #25904 > > y1="424" x2="89" y2="75"/> 00:22:10 v #25905 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:10 v #25906 > > y1="424" x2="99" y2="75"/> 00:22:10 v #25907 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:10 v #25908 > > y1="424" x2="109" y2="75"/> 00:22:10 v #25909 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:10 v #25910 > > y1="424" x2="119" y2="75"/> 00:22:10 v #25911 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:10 v #25912 > > y1="424" x2="129" y2="75"/> 00:22:10 v #25913 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:10 v #25914 > > y1="424" x2="139" y2="75"/> 00:22:10 v #25915 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:10 v #25916 > > y1="424" x2="149" y2="75"/> 00:22:10 v #25917 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:10 v #25918 > > y1="424" x2="159" y2="75"/> 00:22:10 v #25919 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:10 v #25920 > > y1="424" x2="169" y2="75"/> 00:22:10 v #25921 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:10 v #25922 > > y1="424" x2="179" y2="75"/> 00:22:10 v #25923 > > │ <line... 393,238 394,238 396,237 397,237 399,236 401,235 00:22:10 v #25924 > > 402,235 404,234 405,234 407,233 409,233 410,232 412,231 413,231 415,230 416,230 00:22:10 v #25925 > > 418,229 420,229 421,228 423,228 424,227 426,227 428,226 429,225 431,225 432,224 00:22:10 v #25926 > > 434,224 435,223 437,223 439,222 440,222 442,221 443,221 445,220 447,220 448,219 00:22:10 v #25927 > > 450,219 451,218 453,218 454,217 456,217 458,216 459,216 461,215 462,215 464,214 00:22:10 v #25928 > > 466,214 467,213 469,213 470,213 472,212 473,212 475,211 477,211 478,210 480,210 00:22:10 v #25929 > > 481,209 483,209 485,208 486,208 488,208 489,207 491,207 492,206 494,206 496,205 00:22:10 v #25930 > > 497,205 499,204 500,204 502,204 504,203 505,203 507,202 508,202 510,202 511,201 00:22:10 v #25931 > > 513,201 515,200 516,200 518,200 519,199 521,199 523,198 524,198 526,198 527,197 00:22:10 v #25932 > > 529,197 531,196 532,196 534,196 535,195 537,195 538,194 540,194 542,194 543,193 00:22:10 v #25933 > > 545,193 546,193 548,192 550,192 551,192 553,191 554,191 556,190 557,190 559,190 00:22:10 v #25934 > > 561,189 562,189 564,189 565,188 567,188 569,188 "/> 00:22:10 v #25935 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" 00:22:10 v #25936 > > fill="none" stroke="#FFFFFF"/> 00:22:10 v #25937 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" 00:22:10 v #25938 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:10 v #25939 > > fill="#FFFFFF"> 00:22:10 v #25940 > > │ newtonian 00:22:10 v #25941 > > │ </text> 00:22:10 v #25942 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" 00:22:10 v #25943 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:10 v #25944 > > fill="#FFFFFF"> 00:22:10 v #25945 > > │ relativistic 00:22:10 v #25946 > > │ </text> 00:22:10 v #25947 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:10 v #25948 > > stroke-width="1" points="474,242 494,242 "/> 00:22:10 v #25949 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" 00:22:10 v #25950 > > stroke-width="1" points="474,257 494,257 "/> 00:22:10 v #25951 > > │ </svg> 00:22:10 v #25952 > > │ 00:22:10 v #25953 > > 00:22:10 v #25954 > > ── [ 417.75ms - stdout ] ─────────────────────────────────────────────────────── 00:22:10 v #25955 > > │ 00:00:18 d #34 runtime.execute_with_options_async / { 00:22:10 v #25956 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:10 v #25957 > > arguments = US5_1; options = { command = 00:22:10 v #25958 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:10 v #25959 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:10 v #25960 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:10 v #25961 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:10 v #25962 > > │ 00:00:18 v #35 > Creating 00:22:10 v #25963 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/5e278a736af1809d8dcdc13 00:22:10 v #25964 > > 453b35993d336214d079bbcd9b2cf063181d8e59d.svg 00:22:10 v #25965 > > │ 00:00:18 d #36 runtime.execute_with_options_async / { 00:22:10 v #25966 > > exit_code = 0; output_length = 134 } 00:22:10 v #25967 > > │ 00:22:10 v #25968 > > 00:22:10 v #25969 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:10 v #25970 > > inl uniform_lorentz_force v_e v_b (st : particle_state) = 00:22:10 v #25971 > > st.charge *^ (v_e ^+^ st.velocity >< v_b) 00:22:11 v #25972 > > 00:22:11 v #25973 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:11 v #25974 > > //// test 00:22:11 v #25975 > > 00:22:11 v #25976 > > inl c : f64 = 299792458 00:22:11 v #25977 > > inl ~method = runge_kutta_4 0.000000001 00:22:11 v #25978 > > inl forces = [[ uniform_lorentz_force (zero_vec ()) (k_hat ()) ]] 00:22:11 v #25979 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:11 v #25980 > > inl initial_state = 00:22:11 v #25981 > > particle_state { default_particle_state' with 00:22:11 v #25982 > > mass = 0.000000000000000000000000001672621898 00:22:11 v #25983 > > charge = 0.0000000000000000001602176621 00:22:11 v #25984 > > velocity = 0.8 *^ (c *^ j_hat ()) 00:22:11 v #25985 > > } 00:22:11 v #25986 > > 00:22:11 v #25987 > > inl newton_states = solver_ method (newton_second_ps forces) initial_state 00:22:11 v #25988 > > inl relativity_states = solver_ method (relativity_ps forces) initial_state 00:22:11 v #25989 > > 00:22:11 v #25990 > > inl newton_x, newton_y = 00:22:11 v #25991 > > newton_states 00:22:11 v #25992 > > >> Some 00:22:11 v #25993 > > |> seq.take_while_ (fun (particle_state st) i => i < 100i32) 00:22:11 v #25994 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:22:11 v #25995 > > |> listm'.unzip 00:22:11 v #25996 > > 00:22:11 v #25997 > > inl relativity_x, relativity_y = 00:22:11 v #25998 > > relativity_states 00:22:11 v #25999 > > >> Some 00:22:11 v #26000 > > |> seq.take_while_ (fun (particle_state st) i => i < 165i32) 00:22:11 v #26001 > > |> listm.map (fun (particle_state st) => st.pos_vec.x, st.pos_vec.y) 00:22:11 v #26002 > > |> listm'.unzip 00:22:11 v #26003 > > 00:22:11 v #26004 > > inl newton_x = newton_x |> listm'.box |> listm'.to_array' 00:22:11 v #26005 > > inl newton_y = newton_y |> listm'.box |> listm'.to_array' 00:22:11 v #26006 > > 00:22:11 v #26007 > > inl relativity_x = relativity_x |> listm'.box |> listm'.to_array' 00:22:11 v #26008 > > inl relativity_y = relativity_y |> listm'.box |> listm'.to_array' 00:22:11 v #26009 > > 00:22:11 v #26010 > > "proton in a 1-t magnetic field", 00:22:11 v #26011 > > "x (m)", 00:22:11 v #26012 > > "y (m)", 00:22:11 v #26013 > > ;[[ 00:22:11 v #26014 > > "newtonian", newton_x, newton_y 00:22:11 v #26015 > > "relativistic", relativity_x, relativity_y 00:22:11 v #26016 > > ]] 00:22:11 v #26017 > > 00:22:11 v #26018 > > ── [ 403.67ms - return value ] ───────────────────────────────────────────────── 00:22:11 v #26019 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:11 v #26020 > > xmlns="http://www.w3.org/2000/svg"> 00:22:11 v #26021 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:11 v #26022 > > fill="#141414" stroke="none"/> 00:22:11 v #26023 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:11 v #26024 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:11 v #26025 > > fill="#FFFFFF"> 00:22:11 v #26026 > > │ proton in a 1-t magnetic field 00:22:11 v #26027 > > │ </text> 00:22:11 v #26028 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="58" 00:22:11 v #26029 > > y1="424" x2="58" y2="75"/> 00:22:11 v #26030 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:11 v #26031 > > y1="424" x2="69" y2="75"/> 00:22:11 v #26032 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="81" 00:22:11 v #26033 > > y1="424" x2="81" y2="75"/> 00:22:11 v #26034 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" 00:22:11 v #26035 > > y1="424" x2="93" y2="75"/> 00:22:11 v #26036 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="105" 00:22:11 v #26037 > > y1="424" x2="105" y2="75"/> 00:22:11 v #26038 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="117" 00:22:11 v #26039 > > y1="424" x2="117" y2="75"/> 00:22:11 v #26040 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:11 v #26041 > > y1="424" x2="129" y2="75"/> 00:22:11 v #26042 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="141" 00:22:11 v #26043 > > y1="424" x2="141" y2="75"/> 00:22:11 v #26044 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="153" 00:22:11 v #26045 > > y1="424" x2="153" y2="75"/> 00:22:11 v #26046 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="165" 00:22:11 v #26047 > > y1="424" x2="165" y2="75"/> 00:22:11 v #26048 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="177" 00:22:11 v #26049 > > y1="424" x2="177" y2="75"/> 00:22:11 v #26050 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="189" 00:22:11 v #26051 > > y1="424" x2="189" y2="75"/> 00:22:11 v #26052 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="201" 00:22:11 v #26053 > > y1="424" x2="201" y2="75"/> 00:22:11 v #26054 > > │ <...555,197 560,206 563,216 566,225 567,234 568,244 568,253 00:22:11 v #26055 > > 568,263 566,272 564,281 561,291 557,300 552,309 547,317 540,326 533,334 526,342 00:22:11 v #26056 > > 517,350 508,357 499,364 488,371 478,377 466,383 455,388 442,393 430,398 417,402 00:22:11 v #26057 > > 403,405 390,408 376,410 362,412 348,414 333,414 319,415 305,414 290,414 276,412 00:22:11 v #26058 > > 262,410 248,408 235,405 221,401 208,397 196,393 183,388 171,383 160,377 149,371 00:22:11 v #26059 > > 139,364 129,357 120,350 112,342 104,334 97,326 91,317 86,309 81,300 77,290 00:22:11 v #26060 > > 74,281 72,272 70,263 70,253 70,244 71,234 72,225 75,215 78,206 83,197 88,188 00:22:11 v #26061 > > 93,180 100,171 107,163 115,155 124,148 133,140 143,133 153,127 164,121 176,115 00:22:11 v #26062 > > 188,110 200,105 213,101 226,97 239,94 253,91 267,89 281,87 295,86 310,85 324,85 00:22:11 v #26063 > > 338,86 353,87 367,88 381,90 394,93 408,96 421,100 434,104 447,109 459,114 00:22:11 v #26064 > > 470,119 482,125 492,131 502,138 512,145 520,153 529,161 536,169 543,177 549,186 00:22:11 v #26065 > > 554,194 558,203 562,213 565,222 567,231 568,241 569,250 "/> 00:22:11 v #26066 > > │ <rect x="464" y="227" width="116" height="45" opacity="1" 00:22:11 v #26067 > > fill="none" stroke="#FFFFFF"/> 00:22:11 v #26068 > > │ <text x="504" y="237" dy="0.76em" text-anchor="start" 00:22:11 v #26069 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:11 v #26070 > > fill="#FFFFFF"> 00:22:11 v #26071 > > │ newtonian 00:22:11 v #26072 > > │ </text> 00:22:11 v #26073 > > │ <text x="504" y="252" dy="0.76em" text-anchor="start" 00:22:11 v #26074 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:11 v #26075 > > fill="#FFFFFF"> 00:22:11 v #26076 > > │ relativistic 00:22:11 v #26077 > > │ </text> 00:22:11 v #26078 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:11 v #26079 > > stroke-width="1" points="474,242 494,242 "/> 00:22:11 v #26080 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" 00:22:11 v #26081 > > stroke-width="1" points="474,257 494,257 "/> 00:22:11 v #26082 > > │ </svg> 00:22:11 v #26083 > > │ 00:22:11 v #26084 > > 00:22:11 v #26085 > > ── [ 405.93ms - stdout ] ─────────────────────────────────────────────────────── 00:22:11 v #26086 > > │ 00:00:19 d #37 runtime.execute_with_options_async / { 00:22:11 v #26087 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:11 v #26088 > > arguments = US5_1; options = { command = 00:22:11 v #26089 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:11 v #26090 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:11 v #26091 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:11 v #26092 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:11 v #26093 > > │ 00:00:19 v #38 > Creating 00:22:11 v #26094 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bb8f45eff587eeea2eba0bc 00:22:11 v #26095 > > 2ee5a7127055bf92453772b584569d1b580f6f89c.svg 00:22:11 v #26096 > > │ 00:00:19 d #39 runtime.execute_with_options_async / { 00:22:11 v #26097 > > exit_code = 0; output_length = 134 } 00:22:11 v #26098 > > │ 00:22:11 v #26099 > > 00:22:11 v #26100 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:11 v #26101 > > │ #### system kinetic energy versus time 1 00:22:11 v #26102 > > 00:22:11 v #26103 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:11 v #26104 > > //// test 00:22:11 v #26105 > > 00:22:11 v #26106 > > inl central_force f (particle_state st1) (particle_state st2) = 00:22:11 v #26107 > > inl r1 = st1.pos_vec 00:22:11 v #26108 > > inl r2 = st2.pos_vec 00:22:11 v #26109 > > inl r21 = r2 ^-^ r1 00:22:11 v #26110 > > inl r21mag = magnitude r21 00:22:11 v #26111 > > f r21mag *^ r21 ^/ r21mag 00:22:11 v #26112 > > 00:22:11 v #26113 > > inl billiard_force k re = 00:22:11 v #26114 > > inl f r = 00:22:11 v #26115 > > if r >= re 00:22:11 v #26116 > > then 0 00:22:11 v #26117 > > else -k * (r - re) 00:22:11 v #26118 > > central_force f 00:22:11 v #26119 > > 00:22:11 v #26120 > > type force_vector = vec 00:22:11 v #26121 > > type two_body_force = particle_state -> particle_state -> force_vector 00:22:11 v #26122 > > 00:22:11 v #26123 > > union force = 00:22:11 v #26124 > > | ExternalForce : i32 * one_body_force 00:22:11 v #26125 > > | InternalForce : i32 * i32 * two_body_force 00:22:11 v #26126 > > 00:22:11 v #26127 > > nominal multi_particle_state = list particle_state 00:22:11 v #26128 > > 00:22:11 v #26129 > > nominal d_multi_particle_state = list d_particle_state 00:22:11 v #26130 > > 00:22:11 v #26131 > > inl force_on n sts force = 00:22:11 v #26132 > > match force with 00:22:11 v #26133 > > | ExternalForce (n0, f_one_body) => 00:22:11 v #26134 > > if n = n0 00:22:11 v #26135 > > then f_one_body 00:22:11 v #26136 > > else fun _ => zero_vec () 00:22:11 v #26137 > > | InternalForce (n0, n1, f_two_body) => 00:22:11 v #26138 > > if n = n0 00:22:11 v #26139 > > then f_two_body (sts |> listm'.item n1) 00:22:11 v #26140 > > elif n = n1 00:22:11 v #26141 > > then f_two_body (sts |> listm'.item n0) 00:22:11 v #26142 > > else fun _ => zero_vec () 00:22:11 v #26143 > > 00:22:11 v #26144 > > inl forces_on n (multi_particle_state sts) fs = 00:22:11 v #26145 > > fs |> listm.map (force_on n sts) 00:22:11 v #26146 > > 00:22:11 v #26147 > > inl newton_second_mps fs (multi_particle_state sts) : d_multi_particle_state = 00:22:11 v #26148 > > inl deriv (n, st) = 00:22:11 v #26149 > > newton_second_ps (forces_on n (multi_particle_state sts) fs) st 00:22:11 v #26150 > > sts |> listm'.indexed |> listm.map deriv |> d_multi_particle_state 00:22:11 v #26151 > > 00:22:11 v #26152 > > instance (+++) d_multi_particle_state = fun (d_multi_particle_state dsts1) 00:22:11 v #26153 > > (d_multi_particle_state dsts2) => 00:22:11 v #26154 > > d_multi_particle_state (listm'.zip_with_ (+++) dsts1 dsts2) 00:22:11 v #26155 > > 00:22:11 v #26156 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:22:11 v #26157 > > d_multi_particle_state (dsts |> listm.map (scale w)) 00:22:11 v #26158 > > 00:22:11 v #26159 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:22:11 v #26160 > > inl (d_multi_particle_state dsts) = 00:22:11 v #26161 > > real 00:22:11 v #26162 > > match dsts with 00:22:11 v #26163 > > | d_multi_particle_state _ => dsts 00:22:11 v #26164 > > listm'.zip_with_ (shift dt) dsts sts |> multi_particle_state 00:22:11 v #26165 > > 00:22:11 v #26166 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:22:11 v #26167 > > d_multi_particle_state = 00:22:11 v #26168 > > fun deriv mpst0 => 00:22:11 v #26169 > > inl mpst1 = euler dt deriv mpst0 00:22:11 v #26170 > > inl (multi_particle_state sts0) = mpst0 00:22:11 v #26171 > > inl (multi_particle_state sts1) = mpst1 00:22:11 v #26172 > > sts1 00:22:11 v #26173 > > |> listm'.zip_ sts0 00:22:11 v #26174 > > |> listm.map (fun ((particle_state st0), (particle_state st1)) => 00:22:11 v #26175 > > particle_state { 00:22:11 v #26176 > > st1 with 00:22:11 v #26177 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:22:11 v #26178 > > } 00:22:11 v #26179 > > ) 00:22:11 v #26180 > > |> multi_particle_state 00:22:11 v #26181 > > 00:22:11 v #26182 > > inl update_mps (method : numerical_method multi_particle_state 00:22:11 v #26183 > > d_multi_particle_state) = 00:22:11 v #26184 > > newton_second_mps >> method 00:22:11 v #26185 > > 00:22:11 v #26186 > > inl states_mps (method : numerical_method multi_particle_state 00:22:11 v #26187 > > d_multi_particle_state) = 00:22:11 v #26188 > > newton_second_mps >> method >> seq.iterate_ 00:22:11 v #26189 > > 00:22:11 v #26190 > > 00:22:11 v #26191 > > inl kinetic_energy (particle_state st) = 00:22:11 v #26192 > > inl m = st.mass 00:22:11 v #26193 > > inl v = magnitude st.velocity 00:22:11 v #26194 > > 0.5 * m * v ** 2 00:22:11 v #26195 > > 00:22:11 v #26196 > > inl system_ke (multi_particle_state sts) = 00:22:11 v #26197 > > sts |> listm.map kinetic_energy |> listm'.sum 00:22:11 v #26198 > > 00:22:11 v #26199 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:22:11 v #26200 > > inl r1 = st1.pos_vec 00:22:11 v #26201 > > inl r2 = st2.pos_vec 00:22:11 v #26202 > > inl r21 = r2 ^-^ r1 00:22:11 v #26203 > > inl r21mag = magnitude r21 00:22:11 v #26204 > > k * (r21mag - re) ** 2 / 2 00:22:11 v #26205 > > 00:22:11 v #26206 > > inl earth_surface_gravity_pe (particle_state st) = 00:22:11 v #26207 > > inl g = 9.80665 00:22:11 v #26208 > > inl m = st.mass 00:22:11 v #26209 > > inl z = st.pos_vec.z 00:22:11 v #26210 > > m * g * z 00:22:11 v #26211 > > 00:22:11 v #26212 > > inl two_springs_pe (multi_particle_state sts) = 00:22:11 v #26213 > > inl st0 = sts |> listm'.item 0i32 00:22:11 v #26214 > > inl st1 = sts |> listm'.item 1i32 00:22:11 v #26215 > > linear_spring_pe 100 0.5 (default_particle_state ()) st0 00:22:11 v #26216 > > + linear_spring_pe 100 0.5 st0 st1 00:22:11 v #26217 > > + earth_surface_gravity_pe st0 00:22:11 v #26218 > > + earth_surface_gravity_pe st1 00:22:11 v #26219 > > 00:22:11 v #26220 > > inl two_springs_me mpst = 00:22:11 v #26221 > > system_ke mpst + two_springs_pe mpst 00:22:11 v #26222 > > 00:22:11 v #26223 > > inl ball_radius () = 0.03 00:22:11 v #26224 > > 00:22:11 v #26225 > > inl billiard_forces k = 00:22:11 v #26226 > > [[ InternalForce (0, 1, billiard_force k (2 * ball_radius ())) ]] 00:22:11 v #26227 > > 00:22:11 v #26228 > > inl billiard_update n_method k dt = 00:22:11 v #26229 > > update_mps (n_method dt) (billiard_forces k) 00:22:11 v #26230 > > 00:22:11 v #26231 > > inl billiard_initial () = 00:22:11 v #26232 > > inl ball_mass = 0.160 00:22:11 v #26233 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:11 v #26234 > > multi_particle_state [[ 00:22:11 v #26235 > > particle_state { 00:22:11 v #26236 > > default_particle_state' with 00:22:11 v #26237 > > mass = ball_mass 00:22:11 v #26238 > > pos_vec = zero_vec () 00:22:11 v #26239 > > velocity = 0.2 *^ i_hat () 00:22:11 v #26240 > > } 00:22:11 v #26241 > > particle_state { 00:22:11 v #26242 > > default_particle_state' with 00:22:11 v #26243 > > mass = ball_mass 00:22:11 v #26244 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:22:11 v #26245 > > velocity = zero_vec () 00:22:11 v #26246 > > } 00:22:11 v #26247 > > ]] 00:22:11 v #26248 > > 00:22:11 v #26249 > > inl billiard_states ~n_method k dt = 00:22:11 v #26250 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:22:11 v #26251 > > 00:22:11 v #26252 > > inl billiard_states_finite n_method k dt = 00:22:11 v #26253 > > billiard_states n_method k dt 00:22:11 v #26254 > > >> Some 00:22:11 v #26255 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:22:11 v #26256 > > (mpst |> listm'.item 0i32).time <= 10 00:22:11 v #26257 > > ) 00:22:11 v #26258 > > 00:22:11 v #26259 > > inl momentum (particle_state st) = 00:22:11 v #26260 > > inl m = st.mass 00:22:11 v #26261 > > inl v = st.velocity 00:22:11 v #26262 > > m *^ v 00:22:11 v #26263 > > 00:22:11 v #26264 > > inl system_p (multi_particle_state sts) = 00:22:11 v #26265 > > sts |> listm.map momentum |> sum_vec 00:22:11 v #26266 > > 00:22:11 v #26267 > > 00:22:11 v #26268 > > inl time_ke_ec_x, time_ke_ec_y = 00:22:11 v #26269 > > billiard_states_finite euler_cromer_mps 30 0.03 00:22:11 v #26270 > > |> listm.map (fun (multi_particle_state mpst) => 00:22:11 v #26271 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:22:11 v #26272 > > ) 00:22:11 v #26273 > > |> listm'.unzip 00:22:11 v #26274 > > 00:22:11 v #26275 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:22:11 v #26276 > > billiard_states_finite runge_kutta_4 30 0.03 00:22:11 v #26277 > > |> listm.map (fun (multi_particle_state mpst) => 00:22:11 v #26278 > > (mpst |> listm'.item 0i32).time, system_ke (multi_particle_state mpst) 00:22:11 v #26279 > > ) 00:22:11 v #26280 > > |> listm'.unzip 00:22:11 v #26281 > > 00:22:11 v #26282 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:22:11 v #26283 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:22:11 v #26284 > > 00:22:11 v #26285 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:22:11 v #26286 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:22:11 v #26287 > > 00:22:11 v #26288 > > "system kinetic energy versus time", 00:22:11 v #26289 > > "time (s)", 00:22:11 v #26290 > > "system kinetic energy (j)", 00:22:11 v #26291 > > ;[[ 00:22:11 v #26292 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:22:11 v #26293 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:22:11 v #26294 > > ]] 00:22:12 v #26295 > > 00:22:12 v #26296 > > ── [ 1.12s - return value ] ──────────────────────────────────────────────────── 00:22:12 v #26297 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:12 v #26298 > > xmlns="http://www.w3.org/2000/svg"> 00:22:12 v #26299 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:12 v #26300 > > fill="#141414" stroke="none"/> 00:22:12 v #26301 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:12 v #26302 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:12 v #26303 > > fill="#FFFFFF"> 00:22:12 v #26304 > > │ system kinetic energy versus time 00:22:12 v #26305 > > │ </text> 00:22:12 v #26306 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:12 v #26307 > > y1="424" x2="59" y2="75"/> 00:22:12 v #26308 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:12 v #26309 > > y1="424" x2="69" y2="75"/> 00:22:12 v #26310 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:12 v #26311 > > y1="424" x2="79" y2="75"/> 00:22:12 v #26312 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:12 v #26313 > > y1="424" x2="89" y2="75"/> 00:22:12 v #26314 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:12 v #26315 > > y1="424" x2="99" y2="75"/> 00:22:12 v #26316 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:12 v #26317 > > y1="424" x2="109" y2="75"/> 00:22:12 v #26318 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:12 v #26319 > > y1="424" x2="119" y2="75"/> 00:22:12 v #26320 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:12 v #26321 > > y1="424" x2="129" y2="75"/> 00:22:12 v #26322 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:12 v #26323 > > y1="424" x2="139" y2="75"/> 00:22:12 v #26324 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:12 v #26325 > > y1="424" x2="149" y2="75"/> 00:22:12 v #26326 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:12 v #26327 > > y1="424" x2="159" y2="75"/> 00:22:12 v #26328 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:12 v #26329 > > y1="424" x2="169" y2="75"/> 00:22:12 v #26330 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:12 v #26331 > > y1="424" x2="179" y2="75"/> 00:22:12 v #26332 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 00:22:12 v #26333 > > 413,104 414,104 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 00:22:12 v #26334 > > 428,104 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 00:22:12 v #26335 > > 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 456,104 00:22:12 v #26336 > > 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 470,104 471,104 00:22:12 v #26337 > > 473,104 474,104 476,104 477,104 479,104 480,104 482,104 483,104 485,104 486,104 00:22:12 v #26338 > > 488,104 489,104 491,104 492,104 494,104 495,104 497,104 498,104 500,104 501,104 00:22:12 v #26339 > > 503,104 504,104 506,104 507,104 509,104 510,104 512,104 513,104 515,104 516,104 00:22:12 v #26340 > > 518,104 519,104 521,104 522,104 524,104 525,104 527,104 528,104 530,104 531,104 00:22:12 v #26341 > > 533,104 534,104 536,104 537,104 539,104 540,104 542,104 543,104 545,104 546,104 00:22:12 v #26342 > > 548,104 549,104 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 00:22:12 v #26343 > > 563,104 564,104 566,104 567,104 569,104 "/> 00:22:12 v #26344 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" 00:22:12 v #26345 > > fill="none" stroke="#FFFFFF"/> 00:22:12 v #26346 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" 00:22:12 v #26347 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:12 v #26348 > > fill="#FFFFFF"> 00:22:12 v #26349 > > │ euler-cromer 00:22:12 v #26350 > > │ </text> 00:22:12 v #26351 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" 00:22:12 v #26352 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:12 v #26353 > > fill="#FFFFFF"> 00:22:12 v #26354 > > │ runge-kutta 4 00:22:12 v #26355 > > │ </text> 00:22:12 v #26356 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:12 v #26357 > > stroke-width="1" points="469,242 489,242 "/> 00:22:12 v #26358 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" 00:22:12 v #26359 > > stroke-width="1" points="469,257 489,257 "/> 00:22:12 v #26360 > > │ </svg> 00:22:12 v #26361 > > │ 00:22:12 v #26362 > > 00:22:12 v #26363 > > ── [ 1.12s - stdout ] ────────────────────────────────────────────────────────── 00:22:12 v #26364 > > │ 00:00:20 d #40 runtime.execute_with_options_async / { 00:22:12 v #26365 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:12 v #26366 > > arguments = US5_1; options = { command = 00:22:12 v #26367 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:12 v #26368 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:12 v #26369 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:12 v #26370 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:12 v #26371 > > │ 00:00:20 v #41 > Creating 00:22:12 v #26372 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6c2e10892d6afcf0c02bfe4 00:22:12 v #26373 > > 4bc49895c6de5037e535b9df0fb226e37177775eb.svg 00:22:12 v #26374 > > │ 00:00:20 d #42 runtime.execute_with_options_async / { 00:22:12 v #26375 > > exit_code = 0; output_length = 134 } 00:22:12 v #26376 > > │ 00:22:12 v #26377 > > 00:22:12 v #26378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:12 v #26379 > > │ #### wave 1 00:22:12 v #26380 > > 00:22:12 v #26381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:12 v #26382 > > //// test 00:22:12 v #26383 > > 00:22:12 v #26384 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:22:12 v #26385 > > inl r1 = st1.pos_vec 00:22:12 v #26386 > > inl r2 = st2.pos_vec 00:22:12 v #26387 > > inl r21 = r2 ^-^ r1 00:22:12 v #26388 > > inl r21mag = magnitude r21 00:22:12 v #26389 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:22:12 v #26390 > > 00:22:12 v #26391 > > inl fixed_linear_spring k re r1 = 00:22:12 v #26392 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:12 v #26393 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:22:12 v #26394 > > r1 }) 00:22:12 v #26395 > > 00:22:12 v #26396 > > inl forces_string () = 00:22:12 v #26397 > > [[ 00:22:12 v #26398 > > ExternalForce (0, fixed_linear_spring 5384 0 (zero_vec ())) 00:22:12 v #26399 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:22:12 v #26400 > > ]] ++ ( 00:22:12 v #26401 > > listm'.init_series 0 59 1 00:22:12 v #26402 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:22:12 v #26403 > > ) 00:22:12 v #26404 > > 00:22:12 v #26405 > > inl string_update dt = 00:22:12 v #26406 > > update_mps (runge_kutta_4 dt) (forces_string ()) 00:22:12 v #26407 > > 00:22:12 v #26408 > > inl string_initial_overtone n = 00:22:12 v #26409 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:22:12 v #26410 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:12 v #26411 > > listm'.init_series 0.01 0.64 0.01 00:22:12 v #26412 > > |> listm.map (fun x => 00:22:12 v #26413 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:22:12 v #26414 > > particle_state { 00:22:12 v #26415 > > default_particle_state' with 00:22:12 v #26416 > > mass = ball_mass 00:22:12 v #26417 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:22:12 v #26418 > > velocity = zero_vec () 00:22:12 v #26419 > > } 00:22:12 v #26420 > > ) 00:22:12 v #26421 > > |> multi_particle_state 00:22:12 v #26422 > > 00:22:12 v #26423 > > inl string_initial_pluck () = 00:22:12 v #26424 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:22:12 v #26425 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:12 v #26426 > > listm'.init_series 0.01 0.64 0.01 00:22:12 v #26427 > > |> listm.map (fun x => 00:22:12 v #26428 > > inl y = 00:22:12 v #26429 > > inl n = if x <= 0.51 then 0 else 0.65 00:22:12 v #26430 > > 0.005 / (0.51 - n) * (x - n) 00:22:12 v #26431 > > particle_state { 00:22:12 v #26432 > > default_particle_state' with 00:22:12 v #26433 > > mass = ball_mass 00:22:12 v #26434 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:22:12 v #26435 > > velocity = zero_vec () 00:22:12 v #26436 > > } 00:22:12 v #26437 > > ) 00:22:12 v #26438 > > |> multi_particle_state 00:22:12 v #26439 > > 00:22:12 v #26440 > > let main () = 00:22:12 v #26441 > > inl ~frames = listm'.init_series 0 9 1f64 00:22:12 v #26442 > > inl initial_state = string_initial_overtone 3i32 00:22:12 v #26443 > > inl frames = 00:22:12 v #26444 > > frames 00:22:12 v #26445 > > |> listm.map (fun n => 00:22:12 v #26446 > > inl (multi_particle_state sts) = 00:22:12 v #26447 > > seq.iterate' (string_update 0.000025) initial_state |> fun f => 00:22:12 v #26448 > > f 0f64 00:22:12 v #26449 > > inl rs = 00:22:12 v #26450 > > [[ zero_vec () ]] 00:22:12 v #26451 > > ++ (sts |> listm.map (fun (particle_state st) => st.pos_vec)) 00:22:12 v #26452 > > ++ [[ 0.65 *^ i_hat () ]] 00:22:12 v #26453 > > inl x, y = 00:22:12 v #26454 > > rs 00:22:12 v #26455 > > |> listm.map (fun r => r.x, r.y) 00:22:12 v #26456 > > |> listm'.unzip 00:22:12 v #26457 > > inl x = x |> listm'.box |> listm'.to_array' 00:22:12 v #26458 > > inl y = y |> listm'.box |> listm'.to_array' 00:22:12 v #26459 > > x, y 00:22:12 v #26460 > > ) 00:22:12 v #26461 > > |> listm'.box |> listm'.to_array' 00:22:12 v #26462 > > 00:22:12 v #26463 > > inl n = 0i32 00:22:12 v #26464 > > 00:22:12 v #26465 > > inl x, y = a frames |> am'.index n 00:22:12 v #26466 > > 00:22:12 v #26467 > > "wave", 00:22:12 v #26468 > > "position (m)", 00:22:12 v #26469 > > "displacement (m)", 00:22:12 v #26470 > > ;[[ 00:22:12 v #26471 > > ($'$"{!n}"' : string), x, y 00:22:12 v #26472 > > ]] 00:22:13 v #26473 > > 00:22:13 v #26474 > > ── [ 425.88ms - return value ] ───────────────────────────────────────────────── 00:22:13 v #26475 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:13 v #26476 > > xmlns="http://www.w3.org/2000/svg"> 00:22:13 v #26477 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:13 v #26478 > > fill="#141414" stroke="none"/> 00:22:13 v #26479 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:13 v #26480 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:13 v #26481 > > fill="#FFFFFF"> 00:22:13 v #26482 > > │ wave 00:22:13 v #26483 > > │ </text> 00:22:13 v #26484 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" 00:22:13 v #26485 > > y1="424" x2="62" y2="75"/> 00:22:13 v #26486 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:13 v #26487 > > y1="424" x2="69" y2="75"/> 00:22:13 v #26488 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" 00:22:13 v #26489 > > y1="424" x2="77" y2="75"/> 00:22:13 v #26490 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" 00:22:13 v #26491 > > y1="424" x2="85" y2="75"/> 00:22:13 v #26492 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" 00:22:13 v #26493 > > y1="424" x2="93" y2="75"/> 00:22:13 v #26494 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" 00:22:13 v #26495 > > y1="424" x2="100" y2="75"/> 00:22:13 v #26496 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" 00:22:13 v #26497 > > y1="424" x2="108" y2="75"/> 00:22:13 v #26498 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" 00:22:13 v #26499 > > y1="424" x2="116" y2="75"/> 00:22:13 v #26500 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" 00:22:13 v #26501 > > y1="424" x2="123" y2="75"/> 00:22:13 v #26502 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" 00:22:13 v #26503 > > y1="424" x2="131" y2="75"/> 00:22:13 v #26504 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:13 v #26505 > > y1="424" x2="139" y2="75"/> 00:22:13 v #26506 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" 00:22:13 v #26507 > > y1="424" x2="146" y2="75"/> 00:22:13 v #26508 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="154" 00:22:13 v #26509 > > y1="424" x2="154" y2="75"/> 00:22:13 v #26510 > > │ <line opacity="1" stroke="#32...ne fill="none" opacity="1" 00:22:13 v #26511 > > stroke="#FFFFFF" stroke-width="1" points="585,250 590,250 "/> 00:22:13 v #26512 > > │ <text x="617" y="184" dy="0.5ex" text-anchor="end" 00:22:13 v #26513 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:13 v #26514 > > fill="#FFFFFF"> 00:22:13 v #26515 > > │ 0.0 00:22:13 v #26516 > > │ </text> 00:22:13 v #26517 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:13 v #26518 > > stroke-width="1" points="585,184 590,184 "/> 00:22:13 v #26519 > > │ <text x="617" y="118" dy="0.5ex" text-anchor="end" 00:22:13 v #26520 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:13 v #26521 > > fill="#FFFFFF"> 00:22:13 v #26522 > > │ 0.0 00:22:13 v #26523 > > │ </text> 00:22:13 v #26524 > > │ <polyline fill="none" opacity="1" stroke="#FFFFFF" 00:22:13 v #26525 > > stroke-width="1" points="585,118 590,118 "/> 00:22:13 v #26526 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:13 v #26527 > > stroke-width="1" points="69,250 77,226 85,203 93,181 100,160 108,141 116,124 00:22:13 v #26528 > > 123,110 131,99 139,91 146,87 154,85 162,88 169,93 177,102 185,115 192,129 00:22:13 v #26529 > > 200,147 208,167 215,188 223,211 231,234 238,258 246,282 254,305 261,327 269,347 00:22:13 v #26530 > > 277,365 284,381 292,394 300,404 307,411 315,415 323,415 331,411 338,404 346,394 00:22:13 v #26531 > > 354,381 361,365 369,347 377,327 384,305 392,282 400,258 407,234 415,211 423,188 00:22:13 v #26532 > > 430,167 438,147 446,129 453,115 461,102 469,93 476,88 484,85 492,87 499,91 00:22:13 v #26533 > > 507,99 515,110 522,124 530,141 538,160 545,181 553,203 561,226 569,250 "/> 00:22:13 v #26534 > > │ <rect x="525" y="235" width="55" height="30" opacity="1" 00:22:13 v #26535 > > fill="none" stroke="#FFFFFF"/> 00:22:13 v #26536 > > │ <text x="565" y="245" dy="0.76em" text-anchor="start" 00:22:13 v #26537 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:13 v #26538 > > fill="#FFFFFF"> 00:22:13 v #26539 > > │ 0 00:22:13 v #26540 > > │ </text> 00:22:13 v #26541 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:13 v #26542 > > stroke-width="1" points="535,250 555,250 "/> 00:22:13 v #26543 > > │ </svg> 00:22:13 v #26544 > > │ 00:22:13 v #26545 > > 00:22:13 v #26546 > > ── [ 428.21ms - stdout ] ─────────────────────────────────────────────────────── 00:22:13 v #26547 > > │ 00:00:20 d #43 runtime.execute_with_options_async / { 00:22:13 v #26548 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:13 v #26549 > > arguments = US5_1; options = { command = 00:22:13 v #26550 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:13 v #26551 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:13 v #26552 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:13 v #26553 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:13 v #26554 > > │ 00:00:20 v #44 > Creating 00:22:13 v #26555 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/c7418df0ce04ccaab7c4d85 00:22:13 v #26556 > > e07df47a9669ac0ab4f1d50ec3d2fa160947066c1.svg 00:22:13 v #26557 > > │ 00:00:20 d #45 runtime.execute_with_options_async / { 00:22:13 v #26558 > > exit_code = 0; output_length = 134 } 00:22:13 v #26559 > > │ 00:22:13 v #26560 > > 00:22:13 v #26561 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:13 v #26562 > > │ #### system kinetic energy versus time 2 00:22:13 v #26563 > > 00:22:13 v #26564 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:13 v #26565 > > //// test 00:22:13 v #26566 > > 00:22:13 v #26567 > > inl central_force f (particle_state st1) (particle_state st2) = 00:22:13 v #26568 > > inl r1 = st1.pos_vec 00:22:13 v #26569 > > inl r2 = st2.pos_vec 00:22:13 v #26570 > > inl r21 = r2 ^-^ r1 00:22:13 v #26571 > > inl r21mag = magnitude r21 00:22:13 v #26572 > > f r21mag *^ r21 ^/ r21mag 00:22:13 v #26573 > > 00:22:13 v #26574 > > inl billiard_force k re = 00:22:13 v #26575 > > inl f r = 00:22:13 v #26576 > > if r >= re 00:22:13 v #26577 > > then 0 00:22:13 v #26578 > > else -k * (r - re) 00:22:13 v #26579 > > central_force f 00:22:13 v #26580 > > 00:22:13 v #26581 > > type force_vector = vec 00:22:13 v #26582 > > type two_body_force = particle_state -> particle_state -> force_vector 00:22:13 v #26583 > > 00:22:13 v #26584 > > union force t = 00:22:13 v #26585 > > | ExternalForce : t * one_body_force 00:22:13 v #26586 > > | InternalForce : t * t * two_body_force 00:22:13 v #26587 > > 00:22:13 v #26588 > > nominal multi_particle_state = stream.stream particle_state 00:22:13 v #26589 > > 00:22:13 v #26590 > > nominal d_multi_particle_state = stream.stream d_particle_state 00:22:13 v #26591 > > 00:22:13 v #26592 > > inl force_on n s force = 00:22:13 v #26593 > > match force with 00:22:13 v #26594 > > | ExternalForce (n0, f_one_body) => 00:22:13 v #26595 > > if n = n0 00:22:13 v #26596 > > then f_one_body 00:22:13 v #26597 > > else fun _ => zero_vec () 00:22:13 v #26598 > > | InternalForce (n0, n1, f_two_body) => 00:22:13 v #26599 > > if n = n0 00:22:13 v #26600 > > then s |> stream.try_item n1 |> optionm.map f_two_body 00:22:13 v #26601 > > elif n = n1 00:22:13 v #26602 > > then s |> stream.try_item n0 |> optionm.map f_two_body 00:22:13 v #26603 > > else None 00:22:13 v #26604 > > |> optionm'.default_value (fun _ => zero_vec ()) 00:22:13 v #26605 > > 00:22:13 v #26606 > > inl forces_on n (multi_particle_state sts) fs = 00:22:13 v #26607 > > fs 00:22:13 v #26608 > > |> listm.map (force_on n sts) 00:22:13 v #26609 > > 00:22:13 v #26610 > > inl newton_second_mps fs ((multi_particle_state sts) as mpst) = 00:22:13 v #26611 > > inl deriv (n, st) = 00:22:13 v #26612 > > newton_second_ps (forces_on n mpst fs) st 00:22:13 v #26613 > > sts |> stream.indexed |> stream.map deriv |> d_multi_particle_state 00:22:13 v #26614 > > 00:22:13 v #26615 > > instance (+++) d_multi_particle_state = 00:22:13 v #26616 > > fun (d_multi_particle_state dsts1) (d_multi_particle_state dsts2) => 00:22:13 v #26617 > > (dsts1, dsts2) 00:22:13 v #26618 > > ||> stream.zip_with (+++) 00:22:13 v #26619 > > |> d_multi_particle_state 00:22:13 v #26620 > > 00:22:13 v #26621 > > instance scale d_multi_particle_state = fun w (d_multi_particle_state dsts) => 00:22:13 v #26622 > > dsts 00:22:13 v #26623 > > |> stream.map (scale w) 00:22:13 v #26624 > > |> d_multi_particle_state 00:22:13 v #26625 > > 00:22:13 v #26626 > > instance shift multi_particle_state = fun dt dsts (multi_particle_state sts) => 00:22:13 v #26627 > > inl (d_multi_particle_state dsts) = 00:22:13 v #26628 > > real 00:22:13 v #26629 > > match dsts with 00:22:13 v #26630 > > | d_multi_particle_state _ => dsts 00:22:13 v #26631 > > (dsts, sts) 00:22:13 v #26632 > > ||> stream.zip_with (shift dt) 00:22:13 v #26633 > > |> stream.memoize 00:22:13 v #26634 > > |> fun x => x () 00:22:13 v #26635 > > |> multi_particle_state 00:22:13 v #26636 > > 00:22:13 v #26637 > > inl euler_cromer_mps dt : numerical_method multi_particle_state 00:22:13 v #26638 > > d_multi_particle_state = 00:22:13 v #26639 > > fun deriv ((multi_particle_state sts0) as mpst0) => 00:22:13 v #26640 > > inl (multi_particle_state sts1) = euler dt deriv mpst0 00:22:13 v #26641 > > (sts0, sts1) 00:22:13 v #26642 > > ||> stream.zip 00:22:13 v #26643 > > |> stream.map (fun ((particle_state st0), (particle_state st1)) => 00:22:13 v #26644 > > particle_state { 00:22:13 v #26645 > > st1 with 00:22:13 v #26646 > > pos_vec = st0.pos_vec ^+^ st1.velocity ^* dt 00:22:13 v #26647 > > } 00:22:13 v #26648 > > ) 00:22:13 v #26649 > > |> multi_particle_state 00:22:13 v #26650 > > 00:22:13 v #26651 > > inl update_mps (method : numerical_method multi_particle_state 00:22:13 v #26652 > > d_multi_particle_state) = 00:22:13 v #26653 > > newton_second_mps >> method 00:22:13 v #26654 > > 00:22:13 v #26655 > > inl states_mps (method : numerical_method multi_particle_state 00:22:13 v #26656 > > d_multi_particle_state) = 00:22:13 v #26657 > > newton_second_mps 00:22:13 v #26658 > > >> method 00:22:13 v #26659 > > >> (fun x (multi_particle_state y) => 00:22:13 v #26660 > > y 00:22:13 v #26661 > > |> stream.memoize 00:22:13 v #26662 > > |> (fun x => x ()) 00:22:13 v #26663 > > |> multi_particle_state |> x 00:22:13 v #26664 > > ) 00:22:13 v #26665 > > // >> stream.iterate 00:22:13 v #26666 > > >> seq.iterate' 00:22:13 v #26667 > > 00:22:13 v #26668 > > inl kinetic_energy (particle_state st) = 00:22:13 v #26669 > > inl m = st.mass 00:22:13 v #26670 > > inl v = magnitude st.velocity 00:22:13 v #26671 > > 0.5 * m * v ** 2 00:22:13 v #26672 > > 00:22:13 v #26673 > > inl system_ke (multi_particle_state sts) = 00:22:13 v #26674 > > sts 00:22:13 v #26675 > > |> stream.map kinetic_energy 00:22:13 v #26676 > > |> stream.sum 00:22:13 v #26677 > > 00:22:13 v #26678 > > inl linear_spring_pe k re (particle_state st1) (particle_state st2) = 00:22:13 v #26679 > > inl r1 = st1.pos_vec 00:22:13 v #26680 > > inl r2 = st2.pos_vec 00:22:13 v #26681 > > inl r21 = r2 ^-^ r1 00:22:13 v #26682 > > inl r21mag = magnitude r21 00:22:13 v #26683 > > k * (r21mag - re) ** 2 / 2 00:22:13 v #26684 > > 00:22:13 v #26685 > > inl earth_surface_gravity_pe (particle_state st) = 00:22:13 v #26686 > > inl g = 9.80665 00:22:13 v #26687 > > inl m = st.mass 00:22:13 v #26688 > > inl z = st.pos_vec.z 00:22:13 v #26689 > > m * g * z 00:22:13 v #26690 > > 00:22:13 v #26691 > > inl ball_radius () = 0.03 00:22:13 v #26692 > > 00:22:13 v #26693 > > inl billiard_forces k = 00:22:13 v #26694 > > [[ InternalForce (0i32, 1, billiard_force k (2 * ball_radius ())) ]] 00:22:13 v #26695 > > 00:22:13 v #26696 > > inl billiard_initial () = 00:22:13 v #26697 > > inl ball_mass = 0.160 00:22:13 v #26698 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:13 v #26699 > > [[ 00:22:13 v #26700 > > particle_state { 00:22:13 v #26701 > > default_particle_state' with 00:22:13 v #26702 > > mass = ball_mass 00:22:13 v #26703 > > pos_vec = zero_vec () 00:22:13 v #26704 > > velocity = 0.2 *^ i_hat () 00:22:13 v #26705 > > } 00:22:13 v #26706 > > particle_state { 00:22:13 v #26707 > > default_particle_state' with 00:22:13 v #26708 > > mass = ball_mass 00:22:13 v #26709 > > pos_vec = i_hat () ^+^ 0.02 *^ j_hat () 00:22:13 v #26710 > > velocity = zero_vec () 00:22:13 v #26711 > > } 00:22:13 v #26712 > > ]] 00:22:13 v #26713 > > |> stream.from_list 00:22:13 v #26714 > > |> multi_particle_state 00:22:13 v #26715 > > 00:22:13 v #26716 > > inl billiard_states ~n_method k dt = 00:22:13 v #26717 > > states_mps (n_method dt) (billiard_forces k) (billiard_initial ()) 00:22:13 v #26718 > > 00:22:13 v #26719 > > inl billiard_states_finite n_method k dt = 00:22:13 v #26720 > > billiard_states n_method k dt 00:22:13 v #26721 > > >> Some 00:22:13 v #26722 > > |> seq.take_while_ (fun (multi_particle_state mpst) (_ : i32) => 00:22:13 v #26723 > > match mpst |> stream.try_item 0i32 with 00:22:13 v #26724 > > | Some st => 00:22:13 v #26725 > > st.time <= 10 00:22:13 v #26726 > > | None => false 00:22:13 v #26727 > > ) 00:22:13 v #26728 > > 00:22:13 v #26729 > > inl momentum (particle_state st) = 00:22:13 v #26730 > > inl m = st.mass 00:22:13 v #26731 > > inl v = st.velocity 00:22:13 v #26732 > > m *^ v 00:22:13 v #26733 > > 00:22:13 v #26734 > > inl system_p (multi_particle_state sts) = 00:22:13 v #26735 > > sts 00:22:13 v #26736 > > |> stream.map momentum 00:22:13 v #26737 > > |> stream.fold (^+^) (zero_vec ()) 00:22:13 v #26738 > > 00:22:13 v #26739 > > inl time_ke_ec_x, time_ke_ec_y = 00:22:13 v #26740 > > billiard_states_finite euler_cromer_mps 30 0.03 00:22:13 v #26741 > > |> listm.map (fun (multi_particle_state mpst) => 00:22:13 v #26742 > > mpst |> stream.try_item 0i32 00:22:13 v #26743 > > |> optionm.map (fun st => 00:22:13 v #26744 > > st.time, system_ke (multi_particle_state mpst) 00:22:13 v #26745 > > ) 00:22:13 v #26746 > > ) 00:22:13 v #26747 > > // |> stream.to_list 00:22:13 v #26748 > > |> listm'.choose id 00:22:13 v #26749 > > |> listm'.unzip 00:22:13 v #26750 > > 00:22:13 v #26751 > > inl time_ke_rk4_x, time_ke_rk4_y = 00:22:13 v #26752 > > billiard_states_finite runge_kutta_4 30 0.03 00:22:13 v #26753 > > |> listm.map (fun (multi_particle_state mpst) => 00:22:13 v #26754 > > mpst |> stream.try_item 0i32 00:22:13 v #26755 > > |> optionm.map (fun st => 00:22:13 v #26756 > > st.time, system_ke (multi_particle_state mpst) 00:22:13 v #26757 > > ) 00:22:13 v #26758 > > ) 00:22:13 v #26759 > > // |> stream.to_list 00:22:13 v #26760 > > |> listm'.choose id 00:22:13 v #26761 > > |> listm'.unzip 00:22:13 v #26762 > > 00:22:13 v #26763 > > inl time_ke_ec_x = time_ke_ec_x |> listm'.box |> listm'.to_array' 00:22:13 v #26764 > > inl time_ke_ec_y = time_ke_ec_y |> listm'.box |> listm'.to_array' 00:22:13 v #26765 > > 00:22:13 v #26766 > > inl time_ke_rk4_x = time_ke_rk4_x |> listm'.box |> listm'.to_array' 00:22:13 v #26767 > > inl time_ke_rk4_y = time_ke_rk4_y |> listm'.box |> listm'.to_array' 00:22:13 v #26768 > > 00:22:13 v #26769 > > "system kinetic energy versus time", 00:22:13 v #26770 > > "time (s)", 00:22:13 v #26771 > > "system kinetic energy (j)", 00:22:13 v #26772 > > ;[[ 00:22:13 v #26773 > > "euler-cromer", time_ke_ec_x, time_ke_ec_y 00:22:13 v #26774 > > "runge-kutta 4", time_ke_rk4_x, time_ke_rk4_y 00:22:13 v #26775 > > ]] 00:22:14 v #26776 > > 00:22:14 v #26777 > > ── [ 1.43s - return value ] ──────────────────────────────────────────────────── 00:22:14 v #26778 > > │ <svg width="640" height="480" viewBox="0 0 640 480" 00:22:14 v #26779 > > xmlns="http://www.w3.org/2000/svg"> 00:22:14 v #26780 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:14 v #26781 > > fill="#141414" stroke="none"/> 00:22:14 v #26782 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:14 v #26783 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:14 v #26784 > > fill="#FFFFFF"> 00:22:14 v #26785 > > │ system kinetic energy versus time 00:22:14 v #26786 > > │ </text> 00:22:14 v #26787 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="59" 00:22:14 v #26788 > > y1="424" x2="59" y2="75"/> 00:22:14 v #26789 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:14 v #26790 > > y1="424" x2="69" y2="75"/> 00:22:14 v #26791 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="79" 00:22:14 v #26792 > > y1="424" x2="79" y2="75"/> 00:22:14 v #26793 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="89" 00:22:14 v #26794 > > y1="424" x2="89" y2="75"/> 00:22:14 v #26795 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="99" 00:22:14 v #26796 > > y1="424" x2="99" y2="75"/> 00:22:14 v #26797 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="109" 00:22:14 v #26798 > > y1="424" x2="109" y2="75"/> 00:22:14 v #26799 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="119" 00:22:14 v #26800 > > y1="424" x2="119" y2="75"/> 00:22:14 v #26801 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="129" 00:22:14 v #26802 > > y1="424" x2="129" y2="75"/> 00:22:14 v #26803 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:14 v #26804 > > y1="424" x2="139" y2="75"/> 00:22:14 v #26805 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="149" 00:22:14 v #26806 > > y1="424" x2="149" y2="75"/> 00:22:14 v #26807 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="159" 00:22:14 v #26808 > > y1="424" x2="159" y2="75"/> 00:22:14 v #26809 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="169" 00:22:14 v #26810 > > y1="424" x2="169" y2="75"/> 00:22:14 v #26811 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="179" 00:22:14 v #26812 > > y1="424" x2="179" y2="75"/> 00:22:14 v #26813 > > │ ...,104 404,104 405,104 407,104 408,104 410,104 411,104 00:22:14 v #26814 > > 413,104 414,104 416,104 417,104 419,104 420,104 422,104 423,104 425,104 426,104 00:22:14 v #26815 > > 428,104 429,104 431,104 432,104 434,104 435,104 437,104 438,104 440,104 441,104 00:22:14 v #26816 > > 443,104 444,104 446,104 447,104 449,104 450,104 452,104 453,104 455,104 456,104 00:22:14 v #26817 > > 458,104 459,104 461,104 462,104 464,104 465,104 467,104 468,104 470,104 471,104 00:22:14 v #26818 > > 473,104 474,104 476,104 477,104 479,104 480,104 482,104 483,104 485,104 486,104 00:22:14 v #26819 > > 488,104 489,104 491,104 492,104 494,104 495,104 497,104 498,104 500,104 501,104 00:22:14 v #26820 > > 503,104 504,104 506,104 507,104 509,104 510,104 512,104 513,104 515,104 516,104 00:22:14 v #26821 > > 518,104 519,104 521,104 522,104 524,104 525,104 527,104 528,104 530,104 531,104 00:22:14 v #26822 > > 533,104 534,104 536,104 537,104 539,104 540,104 542,104 543,104 545,104 546,104 00:22:14 v #26823 > > 548,104 549,104 551,104 552,104 554,104 555,104 557,104 558,104 560,104 561,104 00:22:14 v #26824 > > 563,104 564,104 566,104 567,104 569,104 "/> 00:22:14 v #26825 > > │ <rect x="459" y="227" width="121" height="45" opacity="1" 00:22:14 v #26826 > > fill="none" stroke="#FFFFFF"/> 00:22:14 v #26827 > > │ <text x="499" y="237" dy="0.76em" text-anchor="start" 00:22:14 v #26828 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:14 v #26829 > > fill="#FFFFFF"> 00:22:14 v #26830 > > │ euler-cromer 00:22:14 v #26831 > > │ </text> 00:22:14 v #26832 > > │ <text x="499" y="252" dy="0.76em" text-anchor="start" 00:22:14 v #26833 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:14 v #26834 > > fill="#FFFFFF"> 00:22:14 v #26835 > > │ runge-kutta 4 00:22:14 v #26836 > > │ </text> 00:22:14 v #26837 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:14 v #26838 > > stroke-width="1" points="469,242 489,242 "/> 00:22:14 v #26839 > > │ <polyline fill="none" opacity="1" stroke="#0000FF" 00:22:14 v #26840 > > stroke-width="1" points="469,257 489,257 "/> 00:22:14 v #26841 > > │ </svg> 00:22:14 v #26842 > > │ 00:22:14 v #26843 > > 00:22:14 v #26844 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:14 v #26845 > > │ #### wave 2 00:22:14 v #26846 > > 00:22:14 v #26847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:14 v #26848 > > //// test 00:22:14 v #26849 > > 00:22:14 v #26850 > > inl linear_spring k re (particle_state st1) (particle_state st2) = 00:22:14 v #26851 > > inl r1 = st1.pos_vec 00:22:14 v #26852 > > inl r2 = st2.pos_vec 00:22:14 v #26853 > > inl r21 = r2 ^-^ r1 00:22:14 v #26854 > > inl r21mag = magnitude r21 00:22:14 v #26855 > > -k * (r21mag - re) *^ r21 ^/ r21mag 00:22:14 v #26856 > > 00:22:14 v #26857 > > inl fixed_linear_spring k re r1 = 00:22:14 v #26858 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:14 v #26859 > > linear_spring k re (particle_state { default_particle_state' with pos_vec = 00:22:14 v #26860 > > r1 }) 00:22:14 v #26861 > > 00:22:14 v #26862 > > inl forces_string () = 00:22:14 v #26863 > > [[ 00:22:14 v #26864 > > ExternalForce (0i32, fixed_linear_spring 5384 0 (zero_vec ())) 00:22:14 v #26865 > > ExternalForce (63, fixed_linear_spring 5384 0 (0.65 *^ i_hat ())) 00:22:14 v #26866 > > ]] ++ ( 00:22:14 v #26867 > > listm'.init_series 0 59 1 00:22:14 v #26868 > > |> listm.map (fun n => InternalForce (n, n + 1, linear_spring 5384 0)) 00:22:14 v #26869 > > ) 00:22:14 v #26870 > > 00:22:14 v #26871 > > inl string_update dt = 00:22:14 v #26872 > > update_mps (join runge_kutta_4 dt) (join forces_string ()) 00:22:14 v #26873 > > 00:22:14 v #26874 > > inl string_initial_overtone n = 00:22:14 v #26875 > > inl ball_mass = 0.0008293 * 0.65 / 64 00:22:14 v #26876 > > inl (particle_state default_particle_state') = default_particle_state () 00:22:14 v #26877 > > listm'.init_series 0.01 0.64 0.01 00:22:14 v #26878 > > |> listm.map (fun x => 00:22:14 v #26879 > > inl y = 0.005 * sin (conv n * pi * x / 0.65) 00:22:14 v #26880 > > particle_state { 00:22:14 v #26881 > > default_particle_state' with 00:22:14 v #26882 > > mass = ball_mass 00:22:14 v #26883 > > pos_vec = x *^ i_hat () ^+^ y *^ j_hat () 00:22:14 v #26884 > > velocity = zero_vec () 00:22:14 v #26885 > > } 00:22:14 v #26886 > > ) 00:22:14 v #26887 > > |> stream.from_list 00:22:14 v #26888 > > |> multi_particle_state 00:22:14 v #26889 > > 00:22:14 v #26890 > > let main () = 00:22:14 v #26891 > > inl ~frames = listm'.init_series 0 65 1f64 |> stream.from_list 00:22:14 v #26892 > > inl ~initial_state = string_initial_overtone 3i32 00:22:14 v #26893 > > inl frames = 00:22:14 v #26894 > > frames 00:22:14 v #26895 > > |> stream.map (fun n => 00:22:14 v #26896 > > inl (multi_particle_state sts) = 00:22:14 v #26897 > > stream.iterate (string_update 0.000025) initial_state |> 00:22:14 v #26898 > > stream.item n 00:22:14 v #26899 > > inl x, y = 00:22:14 v #26900 > > [[ zero_vec () ]] 00:22:14 v #26901 > > ++ (sts |> stream.map (fun (particle_state st) => st.pos_vec) |> 00:22:14 v #26902 > > stream.to_list) 00:22:14 v #26903 > > ++ [[ 0.65 *^ i_hat () ]] 00:22:14 v #26904 > > |> listm.map (fun r => r.x, r.y) 00:22:14 v #26905 > > |> stream.from_list 00:22:14 v #26906 > > |> stream.unzip 00:22:14 v #26907 > > inl x = x |> stream.to_list |> listm'.box |> listm'.to_array' 00:22:14 v #26908 > > inl y = y |> stream.to_list |> listm'.box |> listm'.to_array' 00:22:14 v #26909 > > x, y 00:22:14 v #26910 > > ) 00:22:14 v #26911 > > 00:22:14 v #26912 > > inl plots = 00:22:14 v #26913 > > frames 00:22:14 v #26914 > > |> stream.indexed 00:22:14 v #26915 > > |> stream.map (fun ((n : i32), (x, y)) => 00:22:14 v #26916 > > "wave", 00:22:14 v #26917 > > "position (m)", 00:22:14 v #26918 > > "displacement (m)", 00:22:14 v #26919 > > ;[[ 00:22:14 v #26920 > > ($'$"{!n}"' : string), x, y 00:22:14 v #26921 > > ]] 00:22:14 v #26922 > > ) 00:22:14 v #26923 > > 00:22:14 v #26924 > > plots |> stream.to_list |> listm'.box |> listm'.to_array' 00:22:19 v #26925 > > 00:22:19 v #26926 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:19 v #26927 > > ── [ 5.14s - diagnostics ] ───────────────────────────────────────────────────── 00:22:19 v #26928 > > │ input.fsx (22,25)-(1084,1085) typecheck warning Incomplete 00:22:19 v #26929 > > pattern matches on this expression. For example, the value 'UH7_1 (_, _, _, _)' 00:22:19 v #26930 > > may indicate a case not covered by the pattern(s). 00:22:19 v #26931 > > 00:22:19 v #26932 > > ── [ 5.40s - return value ] ──────────────────────────────────────────────────── 00:22:19 v #26933 > > │ 00:22:19 v #26934 > > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td 00:22:19 v #26935 > > >0</td><td><svg width="640" height="480" viewBox="0 0 640 480" 00:22:19 v #26936 > > xmlns="http://www.w3.org/2000/svg"> 00:22:19 v #26937 > > │ <rect x="0" y="0" width="640" height="480" opacity="1" 00:22:19 v #26938 > > fill="#141414" stroke="none"/> 00:22:19 v #26939 > > │ <text x="320" y="10" dy="0.76em" text-anchor="middle" 00:22:19 v #26940 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:19 v #26941 > > fill="#FFFFFF"> 00:22:19 v #26942 > > │ wave 00:22:19 v #26943 > > │ </text> 00:22:19 v #26944 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="62" 00:22:19 v #26945 > > y1="424" x2="62" y2="75"/> 00:22:19 v #26946 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="69" 00:22:19 v #26947 > > y1="424" x2="69" y2="75"/> 00:22:19 v #26948 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="77" 00:22:19 v #26949 > > y1="424" x2="77" y2="75"/> 00:22:19 v #26950 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="85" 00:22:19 v #26951 > > y1="424" x2="85" y2="75"/> 00:22:19 v #26952 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="93" 00:22:19 v #26953 > > y1="424" x2="93" y2="75"/> 00:22:19 v #26954 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="100" 00:22:19 v #26955 > > y1="424" x2="100" y2="75"/> 00:22:19 v #26956 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="108" 00:22:19 v #26957 > > y1="424" x2="108" y2="75"/> 00:22:19 v #26958 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="116" 00:22:19 v #26959 > > y1="424" x2="116" y2="75"/> 00:22:19 v #26960 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="123" 00:22:19 v #26961 > > y1="424" x2="123" y2="75"/> 00:22:19 v #26962 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="131" 00:22:19 v #26963 > > y1="424" x2="131" y2="75"/> 00:22:19 v #26964 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="139" 00:22:19 v #26965 > > y1="424" x2="139" y2="75"/> 00:22:19 v #26966 > > │ <line opacity="1" stroke="#323232" stroke-width="1" x1="146" 00:22:19 v #26967 > > y1="424" x2="146" y2="75"/> 00:22:19 v #26968 > > │ <line opacity="1" stroke="#... stroke-width="1" 00:22:19 v #26969 > > points="585,128 590,128 "/> 00:22:19 v #26970 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:19 v #26971 > > stroke-width="1" points="69,363 77,322 85,283 92,246 100,211 107,179 115,151 00:22:19 v #26972 > > 122,127 130,108 138,95 145,87 153,85 160,89 168,99 175,114 183,134 190,159 00:22:19 v #26973 > > 198,188 205,220 212,253 218,284 223,311 226,329 227,337 226,337 224,333 223,334 00:22:19 v #26974 > > 223,344 224,357 225,367 224,370 223,374 224,383 224,393 224,397 224,400 224,406 00:22:19 v #26975 > > 224,411 224,412 224,413 224,415 224,413 224,411 224,409 224,405 224,400 224,395 00:22:19 v #26976 > > 224,388 224,382 224,375 224,367 224,360 224,353 224,346 224,339 224,332 224,327 00:22:19 v #26977 > > 224,322 224,318 224,314 224,312 224,311 539,239 546,279 569,403 561,363 "/> 00:22:19 v #26978 > > │ <rect x="519" y="235" width="61" height="30" opacity="1" 00:22:19 v #26979 > > fill="none" stroke="#FFFFFF"/> 00:22:19 v #26980 > > │ <text x="559" y="245" dy="0.76em" text-anchor="start" 00:22:19 v #26981 > > font-family="sans-serif" font-size="9.67741935483871" opacity="1" 00:22:19 v #26982 > > fill="#FFFFFF"> 00:22:19 v #26983 > > │ 65 00:22:19 v #26984 > > │ </text> 00:22:19 v #26985 > > │ <polyline fill="none" opacity="1" stroke="#FF0000" 00:22:19 v #26986 > > stroke-width="1" points="529,250 549,250 "/> 00:22:19 v #26987 > > │ </svg> 00:22:19 v #26988 > > │ </td></tr></tbody></table><style> 00:22:19 v #26989 > > │ .dni-code-hint { 00:22:19 v #26990 > > │ font-style: italic; 00:22:19 v #26991 > > │ overflow: hidden; 00:22:19 v #26992 > > │ white-space: nowrap; 00:22:19 v #26993 > > │ } 00:22:19 v #26994 > > │ .dni-treeview { 00:22:19 v #26995 > > │ white-space: nowrap; 00:22:19 v #26996 > > │ } 00:22:19 v #26997 > > │ .dni-treeview td { 00:22:19 v #26998 > > │ vertical-align: top; 00:22:19 v #26999 > > │ text-align: start; 00:22:19 v #27000 > > │ } 00:22:19 v #27001 > > │ details.dni-treeview { 00:22:19 v #27002 > > │ padding-left: 1em; 00:22:19 v #27003 > > │ } 00:22:19 v #27004 > > │ table td { 00:22:19 v #27005 > > │ text-align: start; 00:22:19 v #27006 > > │ } 00:22:19 v #27007 > > │ table tr { 00:22:19 v #27008 > > │ vertical-align: top; 00:22:19 v #27009 > > │ margin: 0em 0px; 00:22:19 v #27010 > > │ } 00:22:19 v #27011 > > │ table tr td pre 00:22:19 v #27012 > > │ { 00:22:19 v #27013 > > │ vertical-align: top !important; 00:22:19 v #27014 > > │ margin: 0em 0px !important; 00:22:19 v #27015 > > │ } 00:22:19 v #27016 > > │ table th { 00:22:19 v #27017 > > │ text-align: start; 00:22:19 v #27018 > > │ } 00:22:19 v #27019 > > │ </style> 00:22:19 v #27020 > > 00:22:19 v #27021 > > ── [ 5.40s - stdout ] ────────────────────────────────────────────────────────── 00:22:19 v #27022 > > │ 00:00:27 d #46 runtime.execute_with_options_async / { 00:22:19 v #27023 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27024 > > arguments = US5_1; options = { command = 00:22:19 v #27025 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27026 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27027 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27028 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27029 > > │ 00:00:27 v #47 > Creating 00:22:19 v #27030 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/25b4386102d4e649cf36c31 00:22:19 v #27031 > > 5e80448a1fa116c091b0086111cf413562ef6255c.svg 00:22:19 v #27032 > > │ 00:00:27 d #48 runtime.execute_with_options_async / { 00:22:19 v #27033 > > exit_code = 0; output_length = 134 } 00:22:19 v #27034 > > │ 00:00:27 d #49 runtime.execute_with_options_async / { 00:22:19 v #27035 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27036 > > arguments = US5_1; options = { command = 00:22:19 v #27037 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27038 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27039 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27040 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27041 > > │ 00:00:27 v #50 > Creating 00:22:19 v #27042 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/82069ab3443b2210137c4a5 00:22:19 v #27043 > > 1290d83dc81229748eec3a972a381c54f97272db6.svg 00:22:19 v #27044 > > │ 00:00:27 d #51 runtime.execute_with_options_async / { 00:22:19 v #27045 > > exit_code = 0; output_length = 134 } 00:22:19 v #27046 > > │ 00:00:27 d #52 runtime.execute_with_options_async / { 00:22:19 v #27047 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27048 > > arguments = US5_1; options = { command = 00:22:19 v #27049 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27050 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27051 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27052 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27053 > > │ 00:00:27 v #53 > Creating 00:22:19 v #27054 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/51198f81dd6b9e00f356cd5 00:22:19 v #27055 > > 0edeac50e389911946af788d2df96b0c3969cc85f.svg 00:22:19 v #27056 > > │ 00:00:27 d #54 runtime.execute_with_options_async / { 00:22:19 v #27057 > > exit_code = 0; output_length = 134 } 00:22:19 v #27058 > > │ 00:00:27 d #55 runtime.execute_with_options_async / { 00:22:19 v #27059 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27060 > > arguments = US5_1; options = { command = 00:22:19 v #27061 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27062 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27063 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27064 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27065 > > │ 00:00:27 v #56 > Creating 00:22:19 v #27066 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0da4df708113eca060892dd 00:22:19 v #27067 > > 4d18bc2025b1151e39abb4b96e26eff2fc4cd6891.svg 00:22:19 v #27068 > > │ 00:00:27 d #57 runtime.execute_with_options_async / { 00:22:19 v #27069 > > exit_code = 0; output_length = 134 } 00:22:19 v #27070 > > │ 00:00:27 d #58 runtime.execute_with_options_async / { 00:22:19 v #27071 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27072 > > arguments = US5_1; options = { command = 00:22:19 v #27073 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27074 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27075 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27076 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27077 > > │ 00:00:27 v #59 > Creating 00:22:19 v #27078 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ec21fae8ff726079724d816 00:22:19 v #27079 > > 6ca53da39947780d93d63f740978db0416b399df1.svg 00:22:19 v #27080 > > │ 00:00:27 d #60 runtime.execute_with_options_async / { 00:22:19 v #27081 > > exit_code = 0; output_length = 134 } 00:22:19 v #27082 > > │ 00:00:27 d #61 runtime.execute_with_options_async / { 00:22:19 v #27083 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27084 > > arguments = US5_1; options = { command = 00:22:19 v #27085 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27086 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27087 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27088 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27089 > > │ 00:00:27 v #62 > Creating 00:22:19 v #27090 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/cc3a3d6115cdfd7ee2acca3 00:22:19 v #27091 > > 1ac52275c998d1e6f6aa7b2316b2c84bde8340094.svg 00:22:19 v #27092 > > │ 00:00:27 d #63 runtime.execute_with_options_async / { 00:22:19 v #27093 > > exit_code = 0; output_length = 134 } 00:22:19 v #27094 > > │ 00:00:27 d #64 runtime.execute_with_options_async / { 00:22:19 v #27095 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27096 > > arguments = US5_1; options = { command = 00:22:19 v #27097 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27098 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27099 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27100 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27101 > > │ 00:00:27 v #65 > Creating 00:22:19 v #27102 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4d4d6212bb5f26b01e223e 00:22:19 v #27103 > > 15a54b5cca667ecc4a41c7ac12166812c495d9437.svg 00:22:19 v #27104 > > │ 00:00:27 d #66 runtime.execute_with_options_async / { 00:22:19 v #27105 > > exit_code = 0; output_length = 134 } 00:22:19 v #27106 > > │ 00:00:27 d #67 runtime.execute_with_options_async / { 00:22:19 v #27107 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27108 > > arguments = US5_1; options = { command = 00:22:19 v #27109 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27110 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27111 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27112 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27113 > > │ 00:00:27 v #68 > Creating 00:22:19 v #27114 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/88e67acda384a3935bf09a0 00:22:19 v #27115 > > 94a0422796a2f36a7a20876fe7666cf276baba4ca.svg 00:22:19 v #27116 > > │ 00:00:27 d #69 runtime.execute_with_options_async / { 00:22:19 v #27117 > > exit_code = 0; output_length = 134 } 00:22:19 v #27118 > > │ 00:00:27 d #70 runtime.execute_with_options_async / { 00:22:19 v #27119 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27120 > > arguments = US5_1; options = { command = 00:22:19 v #27121 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27122 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27123 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27124 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27125 > > │ 00:00:27 v #71 > Creating 00:22:19 v #27126 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/0d6dfb91ef9a13fbdc033c5 00:22:19 v #27127 > > 17fa71d9824632e6a73651491210f9e9bb26fdefd.svg 00:22:19 v #27128 > > │ 00:00:27 d #72 runtime.execute_with_options_async / { 00:22:19 v #27129 > > exit_code = 0; output_length = 134 } 00:22:19 v #27130 > > │ 00:00:27 d #73 runtime.execute_with_options_async / { 00:22:19 v #27131 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27132 > > arguments = US5_1; options = { command = 00:22:19 v #27133 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27134 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27135 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27136 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27137 > > │ 00:00:27 v #74 > Creating 00:22:19 v #27138 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/269ae5518e06880956a5a03 00:22:19 v #27139 > > 1a71fc0d1003baec1faf97795021ff0849b29f158.svg 00:22:19 v #27140 > > │ 00:00:27 d #75 runtime.execute_with_options_async / { 00:22:19 v #27141 > > exit_code = 0; output_length = 134 } 00:22:19 v #27142 > > │ 00:00:27 d #76 runtime.execute_with_options_async / { 00:22:19 v #27143 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27144 > > arguments = US5_1; options = { command = 00:22:19 v #27145 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27146 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27147 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27148 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27149 > > │ 00:00:27 v #77 > Creating 00:22:19 v #27150 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/429b425800e5f58efea5a9d 00:22:19 v #27151 > > aea343d9a1aac009a6f9c4409f11383c3a86d4c6c.svg 00:22:19 v #27152 > > │ 00:00:27 d #78 runtime.execute_with_options_async / { 00:22:19 v #27153 > > exit_code = 0; output_length = 134 } 00:22:19 v #27154 > > │ 00:00:27 d #79 runtime.execute_with_options_async / { 00:22:19 v #27155 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27156 > > arguments = US5_1; options = { command = 00:22:19 v #27157 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27158 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27159 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27160 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27161 > > │ 00:00:27 v #80 > Creating 00:22:19 v #27162 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e5beb9b5144700e5ac068ff 00:22:19 v #27163 > > 41f7799acb88cbe0b613258014323302a0a3d5a1c.svg 00:22:19 v #27164 > > │ 00:00:27 d #81 runtime.execute_with_options_async / { 00:22:19 v #27165 > > exit_code = 0; output_length = 134 } 00:22:19 v #27166 > > │ 00:00:27 d #82 runtime.execute_with_options_async / { 00:22:19 v #27167 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27168 > > arguments = US5_1; options = { command = 00:22:19 v #27169 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27170 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27171 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27172 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27173 > > │ 00:00:27 v #83 > Creating 00:22:19 v #27174 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2543db981b2d7ba78e89050 00:22:19 v #27175 > > 23f1f76b58dd99d61f636fcdc47f85cc5998df0fa.svg 00:22:19 v #27176 > > │ 00:00:27 d #84 runtime.execute_with_options_async / { 00:22:19 v #27177 > > exit_code = 0; output_length = 134 } 00:22:19 v #27178 > > │ 00:00:27 d #85 runtime.execute_with_options_async / { 00:22:19 v #27179 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27180 > > arguments = US5_1; options = { command = 00:22:19 v #27181 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27182 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27183 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27184 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27185 > > │ 00:00:27 v #86 > Creating 00:22:19 v #27186 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/31bd174c459b1cf6d0e9609 00:22:19 v #27187 > > 489ea792da7fb84696f35c6d5e4fcfac01cdb2313.svg 00:22:19 v #27188 > > │ 00:00:27 d #87 runtime.execute_with_options_async / { 00:22:19 v #27189 > > exit_code = 0; output_length = 134 } 00:22:19 v #27190 > > │ 00:00:27 d #88 runtime.execute_with_options_async / { 00:22:19 v #27191 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27192 > > arguments = US5_1; options = { command = 00:22:19 v #27193 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27194 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27195 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27196 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27197 > > │ 00:00:27 v #89 > Creating 00:22:19 v #27198 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2055256cd308846fd532595 00:22:19 v #27199 > > 8a010fd6753dabf3ec603ee633dda982c882cc35d.svg 00:22:19 v #27200 > > │ 00:00:27 d #90 runtime.execute_with_options_async / { 00:22:19 v #27201 > > exit_code = 0; output_length = 134 } 00:22:19 v #27202 > > │ 00:00:27 d #91 runtime.execute_with_options_async / { 00:22:19 v #27203 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27204 > > arguments = US5_1; options = { command = 00:22:19 v #27205 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27206 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27207 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27208 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27209 > > │ 00:00:27 v #92 > Creating 00:22:19 v #27210 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e36a8f1675ee4d9378c2c14 00:22:19 v #27211 > > 9f0395e9585eb14793f79a5e1837d9943c8256622.svg 00:22:19 v #27212 > > │ 00:00:27 d #93 runtime.execute_with_options_async / { 00:22:19 v #27213 > > exit_code = 0; output_length = 134 } 00:22:19 v #27214 > > │ 00:00:27 d #94 runtime.execute_with_options_async / { 00:22:19 v #27215 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27216 > > arguments = US5_1; options = { command = 00:22:19 v #27217 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27218 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27219 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27220 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27221 > > │ 00:00:27 v #95 > Creating 00:22:19 v #27222 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4e44702e3376bc59ceef1c5 00:22:19 v #27223 > > 463ef093898efe2659436cc48225aca64585a1eed.svg 00:22:19 v #27224 > > │ 00:00:27 d #96 runtime.execute_with_options_async / { 00:22:19 v #27225 > > exit_code = 0; output_length = 134 } 00:22:19 v #27226 > > │ 00:00:27 d #97 runtime.execute_with_options_async / { 00:22:19 v #27227 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27228 > > arguments = US5_1; options = { command = 00:22:19 v #27229 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27230 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27231 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27232 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27233 > > │ 00:00:27 v #98 > Creating 00:22:19 v #27234 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/da2dd1e5137917a0b5fbd32 00:22:19 v #27235 > > 0e18d559f3003adee29c16c8b3ddaa90861251def.svg 00:22:19 v #27236 > > │ 00:00:27 d #99 runtime.execute_with_options_async / { 00:22:19 v #27237 > > exit_code = 0; output_length = 134 } 00:22:19 v #27238 > > │ 00:00:27 d #100 runtime.execute_with_options_async / { 00:22:19 v #27239 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27240 > > arguments = US5_1; options = { command = 00:22:19 v #27241 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27242 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27243 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27244 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27245 > > │ 00:00:27 v #101 > Creating 00:22:19 v #27246 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/c8e034f0843c86c31cc3c64 00:22:19 v #27247 > > b5c2dbfc69aa176075142483c6070350a436ad974.svg 00:22:19 v #27248 > > │ 00:00:27 d #102 runtime.execute_with_options_async / { 00:22:19 v #27249 > > exit_code = 0; output_length = 134 } 00:22:19 v #27250 > > │ 00:00:27 d #103 runtime.execute_with_options_async / { 00:22:19 v #27251 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27252 > > arguments = US5_1; options = { command = 00:22:19 v #27253 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27254 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27255 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27256 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27257 > > │ 00:00:27 v #104 > Creating 00:22:19 v #27258 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/d015b6ee7829dec29660e9e 00:22:19 v #27259 > > 1a8e2c91527fecaf400660e01b1e8c8fc50d64557.svg 00:22:19 v #27260 > > │ 00:00:27 d #105 runtime.execute_with_options_async / { 00:22:19 v #27261 > > exit_code = 0; output_length = 134 } 00:22:19 v #27262 > > │ 00:00:27 d #106 runtime.execute_with_options_async / { 00:22:19 v #27263 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27264 > > arguments = US5_1; options = { command = 00:22:19 v #27265 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27266 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27267 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27268 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27269 > > │ 00:00:27 v #107 > Creating 00:22:19 v #27270 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6f9e779b344f4181fd8010d 00:22:19 v #27271 > > 1fbddf41de20d850557acba391b3cc908fbe8bfd7.svg 00:22:19 v #27272 > > │ 00:00:27 d #108 runtime.execute_with_options_async / { 00:22:19 v #27273 > > exit_code = 0; output_length = 134 } 00:22:19 v #27274 > > │ 00:00:27 d #109 runtime.execute_with_options_async / { 00:22:19 v #27275 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27276 > > arguments = US5_1; options = { command = 00:22:19 v #27277 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27278 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27279 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27280 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27281 > > │ 00:00:27 v #110 > Creating 00:22:19 v #27282 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e20cc83d71d3b2e4fb037ef 00:22:19 v #27283 > > fa299afb3ae5fbad79a76be4333412b0afad44247.svg 00:22:19 v #27284 > > │ 00:00:27 d #111 runtime.execute_with_options_async / { 00:22:19 v #27285 > > exit_code = 0; output_length = 134 } 00:22:19 v #27286 > > │ 00:00:27 d #112 runtime.execute_with_options_async / { 00:22:19 v #27287 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27288 > > arguments = US5_1; options = { command = 00:22:19 v #27289 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27290 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27291 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27292 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27293 > > │ 00:00:27 v #113 > Creating 00:22:19 v #27294 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/552767eafba3ce3097354bb 00:22:19 v #27295 > > 928d9dd9d0af565a8b70940a42e08f6ad067d70a7.svg 00:22:19 v #27296 > > │ 00:00:27 d #114 runtime.execute_with_options_async / { 00:22:19 v #27297 > > exit_code = 0; output_length = 134 } 00:22:19 v #27298 > > │ 00:00:27 d #115 runtime.execute_with_options_async / { 00:22:19 v #27299 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27300 > > arguments = US5_1; options = { command = 00:22:19 v #27301 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27302 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27303 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27304 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27305 > > │ 00:00:27 v #116 > Creating 00:22:19 v #27306 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/a27eac8f69f101def5fa6b4 00:22:19 v #27307 > > c8cebc059d503808937bc367d9d3608cec2712613.svg 00:22:19 v #27308 > > │ 00:00:27 d #117 runtime.execute_with_options_async / { 00:22:19 v #27309 > > exit_code = 0; output_length = 134 } 00:22:19 v #27310 > > │ 00:00:27 d #118 runtime.execute_with_options_async / { 00:22:19 v #27311 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27312 > > arguments = US5_1; options = { command = 00:22:19 v #27313 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27314 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27315 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27316 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27317 > > │ 00:00:27 v #119 > Creating 00:22:19 v #27318 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f8d04b749068750046e5d0d 00:22:19 v #27319 > > 76166fc42fe00e40d9e14143a48b9f18612895d93.svg 00:22:19 v #27320 > > │ 00:00:27 d #120 runtime.execute_with_options_async / { 00:22:19 v #27321 > > exit_code = 0; output_length = 134 } 00:22:19 v #27322 > > │ 00:00:27 d #121 runtime.execute_with_options_async / { 00:22:19 v #27323 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27324 > > arguments = US5_1; options = { command = 00:22:19 v #27325 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27326 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27327 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27328 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27329 > > │ 00:00:27 v #122 > Creating 00:22:19 v #27330 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/e05df3b8d5b0fca42735e57 00:22:19 v #27331 > > 03316d5517e51dfac741018f80bcd59ecd3a56299.svg 00:22:19 v #27332 > > │ 00:00:27 d #123 runtime.execute_with_options_async / { 00:22:19 v #27333 > > exit_code = 0; output_length = 134 } 00:22:19 v #27334 > > │ 00:00:27 d #124 runtime.execute_with_options_async / { 00:22:19 v #27335 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27336 > > arguments = US5_1; options = { command = 00:22:19 v #27337 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27338 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27339 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27340 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27341 > > │ 00:00:27 v #125 > Creating 00:22:19 v #27342 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b40e8a5b3c77f4513a629f1 00:22:19 v #27343 > > 18c91a77d5bdbde27147178a46ca1cfde97c15836.svg 00:22:19 v #27344 > > │ 00:00:27 d #126 runtime.execute_with_options_async / { 00:22:19 v #27345 > > exit_code = 0; output_length = 134 } 00:22:19 v #27346 > > │ 00:00:27 d #127 runtime.execute_with_options_async / { 00:22:19 v #27347 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27348 > > arguments = US5_1; options = { command = 00:22:19 v #27349 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27350 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27351 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27352 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27353 > > │ 00:00:27 v #128 > Creating 00:22:19 v #27354 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/1e50fc8bee6db0bae991559 00:22:19 v #27355 > > de569c542a977cc7f6ee8e358cc7e684dd7a2f7f2.svg 00:22:19 v #27356 > > │ 00:00:27 d #129 runtime.execute_with_options_async / { 00:22:19 v #27357 > > exit_code = 0; output_length = 134 } 00:22:19 v #27358 > > │ 00:00:27 d #130 runtime.execute_with_options_async / { 00:22:19 v #27359 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27360 > > arguments = US5_1; options = { command = 00:22:19 v #27361 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27362 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27363 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27364 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27365 > > │ 00:00:27 v #131 > Creating 00:22:19 v #27366 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/fbb3fc7d0cd000d1f3d5af2 00:22:19 v #27367 > > 5ecb9116851889fb7032aa024dd3767bf1dc9de2e.svg 00:22:19 v #27368 > > │ 00:00:27 d #132 runtime.execute_with_options_async / { 00:22:19 v #27369 > > exit_code = 0; output_length = 134 } 00:22:19 v #27370 > > │ 00:00:27 d #133 runtime.execute_with_options_async / { 00:22:19 v #27371 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27372 > > arguments = US5_1; options = { command = 00:22:19 v #27373 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27374 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27375 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27376 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27377 > > │ 00:00:27 v #134 > Creating 00:22:19 v #27378 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/a0ee0690d9ef0a1e1547f25 00:22:19 v #27379 > > 9ca0d88a4510ec89dc61a7ffe0147e09ea2eb165a.svg 00:22:19 v #27380 > > │ 00:00:27 d #135 runtime.execute_with_options_async / { 00:22:19 v #27381 > > exit_code = 0; output_length = 134 } 00:22:19 v #27382 > > │ 00:00:27 d #136 runtime.execute_with_options_async / { 00:22:19 v #27383 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27384 > > arguments = US5_1; options = { command = 00:22:19 v #27385 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27386 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27387 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27388 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27389 > > │ 00:00:27 v #137 > Creating 00:22:19 v #27390 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8b62f10b9d3b97068239e49 00:22:19 v #27391 > > 6cb7c5aa68b000dc2f78c5eba0b7fa19a7ebdd50c.svg 00:22:19 v #27392 > > │ 00:00:27 d #138 runtime.execute_with_options_async / { 00:22:19 v #27393 > > exit_code = 0; output_length = 134 } 00:22:19 v #27394 > > │ 00:00:27 d #139 runtime.execute_with_options_async / { 00:22:19 v #27395 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27396 > > arguments = US5_1; options = { command = 00:22:19 v #27397 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27398 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27399 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27400 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27401 > > │ 00:00:27 v #140 > Creating 00:22:19 v #27402 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/6cc8f1c7e432d3649cb9fdf 00:22:19 v #27403 > > 9f9f7b7f384c65eacd3fb94e319272fe70dd633bf.svg 00:22:19 v #27404 > > │ 00:00:27 d #141 runtime.execute_with_options_async / { 00:22:19 v #27405 > > exit_code = 0; output_length = 134 } 00:22:19 v #27406 > > │ 00:00:27 d #142 runtime.execute_with_options_async / { 00:22:19 v #27407 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27408 > > arguments = US5_1; options = { command = 00:22:19 v #27409 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27410 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27411 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27412 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27413 > > │ 00:00:27 v #143 > Creating 00:22:19 v #27414 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ab40690e836b63af01e2c82 00:22:19 v #27415 > > ea8febe670e52e11eb049e40c93bb8f8e5cf97c9e.svg 00:22:19 v #27416 > > │ 00:00:27 d #144 runtime.execute_with_options_async / { 00:22:19 v #27417 > > exit_code = 0; output_length = 134 } 00:22:19 v #27418 > > │ 00:00:27 d #145 runtime.execute_with_options_async / { 00:22:19 v #27419 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27420 > > arguments = US5_1; options = { command = 00:22:19 v #27421 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27422 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27423 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27424 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27425 > > │ 00:00:27 v #146 > Creating 00:22:19 v #27426 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4eb829ca41667f43116d463 00:22:19 v #27427 > > 1600e2dd123ca25ee7aa279f194251ee36431ea91.svg 00:22:19 v #27428 > > │ 00:00:27 d #147 runtime.execute_with_options_async / { 00:22:19 v #27429 > > exit_code = 0; output_length = 134 } 00:22:19 v #27430 > > │ 00:00:27 d #148 runtime.execute_with_options_async / { 00:22:19 v #27431 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27432 > > arguments = US5_1; options = { command = 00:22:19 v #27433 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27434 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27435 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27436 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27437 > > │ 00:00:27 v #149 > Creating 00:22:19 v #27438 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/da621a77ae85752953b1719 00:22:19 v #27439 > > c771c787f3c3594be470ba4dfb5ad8f63ff882412.svg 00:22:19 v #27440 > > │ 00:00:27 d #150 runtime.execute_with_options_async / { 00:22:19 v #27441 > > exit_code = 0; output_length = 134 } 00:22:19 v #27442 > > │ 00:00:27 d #151 runtime.execute_with_options_async / { 00:22:19 v #27443 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27444 > > arguments = US5_1; options = { command = 00:22:19 v #27445 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27446 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27447 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27448 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27449 > > │ 00:00:27 v #152 > Creating 00:22:19 v #27450 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/4c133a696111e9637bd800e 00:22:19 v #27451 > > 10894b783253b1784f74a3e6562560f4f0d0e1de9.svg 00:22:19 v #27452 > > │ 00:00:27 d #153 runtime.execute_with_options_async / { 00:22:19 v #27453 > > exit_code = 0; output_length = 134 } 00:22:19 v #27454 > > │ 00:00:27 d #154 runtime.execute_with_options_async / { 00:22:19 v #27455 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27456 > > arguments = US5_1; options = { command = 00:22:19 v #27457 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27458 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27459 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27460 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27461 > > │ 00:00:27 v #155 > Creating 00:22:19 v #27462 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/b4cf46b7a1116f7ff2beea0 00:22:19 v #27463 > > f19067a0b69d8d2633074b74c7fa2e9419537bbe4.svg 00:22:19 v #27464 > > │ 00:00:27 d #156 runtime.execute_with_options_async / { 00:22:19 v #27465 > > exit_code = 0; output_length = 134 } 00:22:19 v #27466 > > │ 00:00:27 d #157 runtime.execute_with_options_async / { 00:22:19 v #27467 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27468 > > arguments = US5_1; options = { command = 00:22:19 v #27469 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27470 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27471 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27472 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27473 > > │ 00:00:27 v #158 > Creating 00:22:19 v #27474 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8228a67a385c42598d65c8b 00:22:19 v #27475 > > 0e86e8a53b5c32d9a669f5161004e7021b2aad6e3.svg 00:22:19 v #27476 > > │ 00:00:27 d #159 runtime.execute_with_options_async / { 00:22:19 v #27477 > > exit_code = 0; output_length = 134 } 00:22:19 v #27478 > > │ 00:00:27 d #160 runtime.execute_with_options_async / { 00:22:19 v #27479 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27480 > > arguments = US5_1; options = { command = 00:22:19 v #27481 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27482 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27483 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27484 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27485 > > │ 00:00:27 v #161 > Creating 00:22:19 v #27486 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/2d27f0a40a52e488f836497 00:22:19 v #27487 > > 1acea754a0034827c30ac23090ccf8e8afe1d5208.svg 00:22:19 v #27488 > > │ 00:00:27 d #162 runtime.execute_with_options_async / { 00:22:19 v #27489 > > exit_code = 0; output_length = 134 } 00:22:19 v #27490 > > │ 00:00:27 d #163 runtime.execute_with_options_async / { 00:22:19 v #27491 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27492 > > arguments = US5_1; options = { command = 00:22:19 v #27493 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27494 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27495 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27496 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27497 > > │ 00:00:27 v #164 > Creating 00:22:19 v #27498 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f398230047e42f5b9160ad9 00:22:19 v #27499 > > fa4a4a30d67def46763ac4e778955ca67702061d8.svg 00:22:19 v #27500 > > │ 00:00:27 d #165 runtime.execute_with_options_async / { 00:22:19 v #27501 > > exit_code = 0; output_length = 134 } 00:22:19 v #27502 > > │ 00:00:27 d #166 runtime.execute_with_options_async / { 00:22:19 v #27503 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27504 > > arguments = US5_1; options = { command = 00:22:19 v #27505 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27506 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27507 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27508 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27509 > > │ 00:00:27 v #167 > Creating 00:22:19 v #27510 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ba31ccdfae8fca85790e973 00:22:19 v #27511 > > 9a135e4599266c38003ca58db428cf83acd3bb12e.svg 00:22:19 v #27512 > > │ 00:00:27 d #168 runtime.execute_with_options_async / { 00:22:19 v #27513 > > exit_code = 0; output_length = 134 } 00:22:19 v #27514 > > │ 00:00:27 d #169 runtime.execute_with_options_async / { 00:22:19 v #27515 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27516 > > arguments = US5_1; options = { command = 00:22:19 v #27517 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27518 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27519 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27520 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27521 > > │ 00:00:27 v #170 > Creating 00:22:19 v #27522 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/780ead643b98b8af35c6ffc 00:22:19 v #27523 > > 815ccde029abf9e61684b1372ede9e07e38c947fe.svg 00:22:19 v #27524 > > │ 00:00:27 d #171 runtime.execute_with_options_async / { 00:22:19 v #27525 > > exit_code = 0; output_length = 134 } 00:22:19 v #27526 > > │ 00:00:27 d #172 runtime.execute_with_options_async / { 00:22:19 v #27527 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27528 > > arguments = US5_1; options = { command = 00:22:19 v #27529 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27530 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27531 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27532 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27533 > > │ 00:00:27 v #173 > Creating 00:22:19 v #27534 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/10bf803f5dd7d69401fe1e3 00:22:19 v #27535 > > 81285b4d67bb5e2f3a1c11e154f395b0625aaa81a.svg 00:22:19 v #27536 > > │ 00:00:27 d #174 runtime.execute_with_options_async / { 00:22:19 v #27537 > > exit_code = 0; output_length = 134 } 00:22:19 v #27538 > > │ 00:00:27 d #175 runtime.execute_with_options_async / { 00:22:19 v #27539 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27540 > > arguments = US5_1; options = { command = 00:22:19 v #27541 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27542 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27543 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27544 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27545 > > │ 00:00:27 v #176 > Creating 00:22:19 v #27546 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/400b1e51fa7a142588257dd 00:22:19 v #27547 > > b414c0a31a2b251bceb6690a25e4dfbdb9b436d1c.svg 00:22:19 v #27548 > > │ 00:00:27 d #177 runtime.execute_with_options_async / { 00:22:19 v #27549 > > exit_code = 0; output_length = 134 } 00:22:19 v #27550 > > │ 00:00:27 d #178 runtime.execute_with_options_async / { 00:22:19 v #27551 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27552 > > arguments = US5_1; options = { command = 00:22:19 v #27553 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27554 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27555 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27556 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27557 > > │ 00:00:27 v #179 > Creating 00:22:19 v #27558 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/04074dcfa8c9444af4bcf09 00:22:19 v #27559 > > bf944b37caa36f05fb020fa972ae58171bba415e1.svg 00:22:19 v #27560 > > │ 00:00:27 d #180 runtime.execute_with_options_async / { 00:22:19 v #27561 > > exit_code = 0; output_length = 134 } 00:22:19 v #27562 > > │ 00:00:27 d #181 runtime.execute_with_options_async / { 00:22:19 v #27563 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27564 > > arguments = US5_1; options = { command = 00:22:19 v #27565 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27566 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27567 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27568 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27569 > > │ 00:00:27 v #182 > Creating 00:22:19 v #27570 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/988cea705b16ac29a2007ee 00:22:19 v #27571 > > 4aea8dea72c7adef2889dd956ad5487d25e12b369.svg 00:22:19 v #27572 > > │ 00:00:27 d #183 runtime.execute_with_options_async / { 00:22:19 v #27573 > > exit_code = 0; output_length = 134 } 00:22:19 v #27574 > > │ 00:00:27 d #184 runtime.execute_with_options_async / { 00:22:19 v #27575 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27576 > > arguments = US5_1; options = { command = 00:22:19 v #27577 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27578 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27579 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27580 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27581 > > │ 00:00:27 v #185 > Creating 00:22:19 v #27582 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/31ff79312dc9242531f49bd 00:22:19 v #27583 > > aac4b1ef4df454de8e801dcbaaea5a774015733e9.svg 00:22:19 v #27584 > > │ 00:00:27 d #186 runtime.execute_with_options_async / { 00:22:19 v #27585 > > exit_code = 0; output_length = 134 } 00:22:19 v #27586 > > │ 00:00:27 d #187 runtime.execute_with_options_async / { 00:22:19 v #27587 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27588 > > arguments = US5_1; options = { command = 00:22:19 v #27589 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27590 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27591 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27592 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27593 > > │ 00:00:27 v #188 > Creating 00:22:19 v #27594 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8f27371f86a551c5ea30fe8 00:22:19 v #27595 > > 82e5b6cb3028d89ad84e6c71144dc12250a6f6848.svg 00:22:19 v #27596 > > │ 00:00:27 d #189 runtime.execute_with_options_async / { 00:22:19 v #27597 > > exit_code = 0; output_length = 134 } 00:22:19 v #27598 > > │ 00:00:27 d #190 runtime.execute_with_options_async / { 00:22:19 v #27599 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27600 > > arguments = US5_1; options = { command = 00:22:19 v #27601 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27602 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27603 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27604 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27605 > > │ 00:00:27 v #191 > Creating 00:22:19 v #27606 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/afc52222ff828d5c96013fd 00:22:19 v #27607 > > 771aff43b465546b50555499413d4f080e9026d87.svg 00:22:19 v #27608 > > │ 00:00:27 d #192 runtime.execute_with_options_async / { 00:22:19 v #27609 > > exit_code = 0; output_length = 134 } 00:22:19 v #27610 > > │ 00:00:27 d #193 runtime.execute_with_options_async / { 00:22:19 v #27611 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27612 > > arguments = US5_1; options = { command = 00:22:19 v #27613 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27614 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27615 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27616 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27617 > > │ 00:00:27 v #194 > Creating 00:22:19 v #27618 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/01e5051d655ef25e1c5e093 00:22:19 v #27619 > > 70fee684bfc2aa1f099acec9c46c60656266b3f8c.svg 00:22:19 v #27620 > > │ 00:00:27 d #195 runtime.execute_with_options_async / { 00:22:19 v #27621 > > exit_code = 0; output_length = 134 } 00:22:19 v #27622 > > │ 00:00:27 d #196 runtime.execute_with_options_async / { 00:22:19 v #27623 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27624 > > arguments = US5_1; options = { command = 00:22:19 v #27625 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27626 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27627 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27628 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27629 > > │ 00:00:27 v #197 > Creating 00:22:19 v #27630 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/5588421d5672a19d3d58374 00:22:19 v #27631 > > d08bff6cbc79cf882258d65127325dd80c4869f31.svg 00:22:19 v #27632 > > │ 00:00:27 d #198 runtime.execute_with_options_async / { 00:22:19 v #27633 > > exit_code = 0; output_length = 134 } 00:22:19 v #27634 > > │ 00:00:27 d #199 runtime.execute_with_options_async / { 00:22:19 v #27635 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27636 > > arguments = US5_1; options = { command = 00:22:19 v #27637 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27638 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27639 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27640 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27641 > > │ 00:00:27 v #200 > Creating 00:22:19 v #27642 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/719cf660228f57fd8847d69 00:22:19 v #27643 > > 6090075444289b6dd7fb5fd3d15959d463ff28dd4.svg 00:22:19 v #27644 > > │ 00:00:27 d #201 runtime.execute_with_options_async / { 00:22:19 v #27645 > > exit_code = 0; output_length = 134 } 00:22:19 v #27646 > > │ 00:00:27 d #202 runtime.execute_with_options_async / { 00:22:19 v #27647 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27648 > > arguments = US5_1; options = { command = 00:22:19 v #27649 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27650 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27651 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27652 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27653 > > │ 00:00:27 v #203 > Creating 00:22:19 v #27654 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/3937c309891869cde1782a6 00:22:19 v #27655 > > 76801b77a082e459f8541d1e05a7516c2d6a3a72b.svg 00:22:19 v #27656 > > │ 00:00:27 d #204 runtime.execute_with_options_async / { 00:22:19 v #27657 > > exit_code = 0; output_length = 134 } 00:22:19 v #27658 > > │ 00:00:27 d #205 runtime.execute_with_options_async / { 00:22:19 v #27659 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27660 > > arguments = US5_1; options = { command = 00:22:19 v #27661 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27662 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27663 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27664 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27665 > > │ 00:00:27 v #206 > Creating 00:22:19 v #27666 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/3d48c97a72e450bf34cb16f 00:22:19 v #27667 > > 39f9fa7a60c4f643c0f2eb8d8bc1832fda0e3cd54.svg 00:22:19 v #27668 > > │ 00:00:27 d #207 runtime.execute_with_options_async / { 00:22:19 v #27669 > > exit_code = 0; output_length = 134 } 00:22:19 v #27670 > > │ 00:00:27 d #208 runtime.execute_with_options_async / { 00:22:19 v #27671 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27672 > > arguments = US5_1; options = { command = 00:22:19 v #27673 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27674 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27675 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27676 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27677 > > │ 00:00:27 v #209 > Creating 00:22:19 v #27678 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/723726570af61bed1daa851 00:22:19 v #27679 > > 81582acdd1a38621d0127fb5bb285a52cbca9c55e.svg 00:22:19 v #27680 > > │ 00:00:27 d #210 runtime.execute_with_options_async / { 00:22:19 v #27681 > > exit_code = 0; output_length = 134 } 00:22:19 v #27682 > > │ 00:00:27 d #211 runtime.execute_with_options_async / { 00:22:19 v #27683 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27684 > > arguments = US5_1; options = { command = 00:22:19 v #27685 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27686 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27687 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27688 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27689 > > │ 00:00:27 v #212 > Creating 00:22:19 v #27690 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/41edb0d06298b6a2b77e6b0 00:22:19 v #27691 > > b0f8181d07eae00c470242422c86f2d3a9df20f2c.svg 00:22:19 v #27692 > > │ 00:00:27 d #213 runtime.execute_with_options_async / { 00:22:19 v #27693 > > exit_code = 0; output_length = 134 } 00:22:19 v #27694 > > │ 00:00:27 d #214 runtime.execute_with_options_async / { 00:22:19 v #27695 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27696 > > arguments = US5_1; options = { command = 00:22:19 v #27697 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27698 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27699 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27700 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27701 > > │ 00:00:27 v #215 > Creating 00:22:19 v #27702 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/ecdf43a5e27f3b426434ff6 00:22:19 v #27703 > > d5c263120f68db972ab74626ec1f04425e21353be.svg 00:22:19 v #27704 > > │ 00:00:27 d #216 runtime.execute_with_options_async / { 00:22:19 v #27705 > > exit_code = 0; output_length = 134 } 00:22:19 v #27706 > > │ 00:00:27 d #217 runtime.execute_with_options_async / { 00:22:19 v #27707 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27708 > > arguments = US5_1; options = { command = 00:22:19 v #27709 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27710 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27711 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27712 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27713 > > │ 00:00:27 v #218 > Creating 00:22:19 v #27714 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/f4e498f816d3ebaa61701bf 00:22:19 v #27715 > > b8382cad124f71ed3342c3db593fdc4baa294e95f.svg 00:22:19 v #27716 > > │ 00:00:27 d #219 runtime.execute_with_options_async / { 00:22:19 v #27717 > > exit_code = 0; output_length = 134 } 00:22:19 v #27718 > > │ 00:00:27 d #220 runtime.execute_with_options_async / { 00:22:19 v #27719 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27720 > > arguments = US5_1; options = { command = 00:22:19 v #27721 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27722 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27723 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27724 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27725 > > │ 00:00:27 v #221 > Creating 00:22:19 v #27726 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/d101f682dfddc088e757997 00:22:19 v #27727 > > 4ced37aa327a3bb1ae0ed5025b005fa24ea15a7dc.svg 00:22:19 v #27728 > > │ 00:00:27 d #222 runtime.execute_with_options_async / { 00:22:19 v #27729 > > exit_code = 0; output_length = 134 } 00:22:19 v #27730 > > │ 00:00:27 d #223 runtime.execute_with_options_async / { 00:22:19 v #27731 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27732 > > arguments = US5_1; options = { command = 00:22:19 v #27733 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27734 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27735 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27736 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27737 > > │ 00:00:27 v #224 > Creating 00:22:19 v #27738 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bc8871e382c35fb284103c8 00:22:19 v #27739 > > eca5f2c1b7b3aabf0dfe7a88637d96bb558d749ab.svg 00:22:19 v #27740 > > │ 00:00:27 d #225 runtime.execute_with_options_async / { 00:22:19 v #27741 > > exit_code = 0; output_length = 134 } 00:22:19 v #27742 > > │ 00:00:27 d #226 runtime.execute_with_options_async / { 00:22:19 v #27743 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27744 > > arguments = US5_1; options = { command = 00:22:19 v #27745 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27746 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27747 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27748 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27749 > > │ 00:00:27 v #227 > Creating 00:22:19 v #27750 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/810be92ead3834fd2f9daf0 00:22:19 v #27751 > > 62ebd24ad35f15e24dce54aa82d69e13a2158a733.svg 00:22:19 v #27752 > > │ 00:00:27 d #228 runtime.execute_with_options_async / { 00:22:19 v #27753 > > exit_code = 0; output_length = 134 } 00:22:19 v #27754 > > │ 00:00:27 d #229 runtime.execute_with_options_async / { 00:22:19 v #27755 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27756 > > arguments = US5_1; options = { command = 00:22:19 v #27757 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27758 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27759 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27760 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27761 > > │ 00:00:27 v #230 > Creating 00:22:19 v #27762 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/8c23dcf0c85bba40477a6dc 00:22:19 v #27763 > > 081dfef35f4ea67e9ad5731e1b83eeb9ce13418e0.svg 00:22:19 v #27764 > > │ 00:00:27 d #231 runtime.execute_with_options_async / { 00:22:19 v #27765 > > exit_code = 0; output_length = 134 } 00:22:19 v #27766 > > │ 00:00:27 d #232 runtime.execute_with_options_async / { 00:22:19 v #27767 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27768 > > arguments = US5_1; options = { command = 00:22:19 v #27769 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27770 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27771 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27772 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27773 > > │ 00:00:27 v #233 > Creating 00:22:19 v #27774 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/00c79858fdfeff82c9976e8 00:22:19 v #27775 > > 339acf00f55b7911d85d3a5549512a823160750f1.svg 00:22:19 v #27776 > > │ 00:00:27 d #234 runtime.execute_with_options_async / { 00:22:19 v #27777 > > exit_code = 0; output_length = 134 } 00:22:19 v #27778 > > │ 00:00:27 d #235 runtime.execute_with_options_async / { 00:22:19 v #27779 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27780 > > arguments = US5_1; options = { command = 00:22:19 v #27781 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27782 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27783 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27784 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27785 > > │ 00:00:27 v #236 > Creating 00:22:19 v #27786 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/248aa1496994a15d405a052 00:22:19 v #27787 > > aab722597383eb415943b4e9a72c87961aad83430.svg 00:22:19 v #27788 > > │ 00:00:27 d #237 runtime.execute_with_options_async / { 00:22:19 v #27789 > > exit_code = 0; output_length = 134 } 00:22:19 v #27790 > > │ 00:00:27 d #238 runtime.execute_with_options_async / { 00:22:19 v #27791 > > file_name = /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27792 > > arguments = US5_1; options = { command = 00:22:19 v #27793 > > /home/runner/work/polyglot/polyglot/workspace/target/release/plot; 00:22:19 v #27794 > > cancellation_token = Some System.Threading.CancellationToken; 00:22:19 v #27795 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:22:19 v #27796 > > working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:22:19 v #27797 > > │ 00:00:27 v #239 > Creating 00:22:19 v #27798 > > /home/runner/work/polyglot/polyglot/target/plot/line_svg/bede6e595697b6a21a1b37c 00:22:19 v #27799 > > e58511f9e5adf6df47f0174d56d18df06b722c982.svg 00:22:19 v #27800 > > │ 00:00:27 d #240 runtime.execute_with_options_async / { 00:22:19 v #27801 > > exit_code = 0; output_length = 134 } 00:22:19 v #27802 > > │ 00:22:19 v #27803 > > 00:22:19 v #27804 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:19 v #27805 > > │ ## end 00:22:20 v #27806 > 00:00:37 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 185493 } 00:22:20 v #27807 > 00:00:37 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:20 v #27808 > 00:00:38 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.ipynb to html 00:22:20 v #27809 > 00:00:38 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:22:20 v #27810 > 00:00:38 v #7 ! validate(nb) 00:22:21 v #27811 > 00:00:39 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:22:21 v #27812 > 00:00:39 v #9 ! return _pygments_highlight( 00:22:23 v #27813 > 00:00:41 v #10 ! [NbConvertApp] Writing 2577025 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html 00:22:23 v #27814 > 00:00:41 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 899 } 00:22:23 v #27815 > 00:00:41 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 899 } 00:22:23 v #27816 > 00:00:41 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/physics.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:24 v #27817 > 00:00:42 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:22:24 v #27818 > 00:00:42 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:22:24 v #27819 > 00:00:42 d #16 spiral.run / dib / { exit_code = 0; result_length = 186451 } 00:22:24 d #27820 runtime.execute_with_options_async / { exit_code = 0; output_length = 196765 } 00:22:24 d #34 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path physics.dib --retries 3 00:22:24 d #27821 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path seq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:24 v #27822 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "seq.dib", "--retries", "3"])) } 00:22:24 v #27823 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:22:25 v #27824 > > 00:22:25 v #27825 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:25 v #27826 > > │ # seq 00:22:28 v #27827 > > 00:22:28 v #27828 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:28 v #27829 > > //// test 00:22:28 v #27830 > > 00:22:28 v #27831 > > open testing 00:22:28 v #27832 > > 00:22:28 v #27833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:28 v #27834 > > │ ## seq 00:22:28 v #27835 > > 00:22:28 v #27836 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:28 v #27837 > > │ ### seq 00:22:28 v #27838 > > 00:22:28 v #27839 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:28 v #27840 > > type seq dim el = dim -> option el 00:22:28 v #27841 > > 00:22:28 v #27842 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:28 v #27843 > > │ ### try_item 00:22:28 v #27844 > > 00:22:28 v #27845 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:28 v #27846 > > inl try_item n s = 00:22:28 v #27847 > > n |> s 00:22:29 v #27848 > > 00:22:29 v #27849 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:29 v #27850 > > │ ### from_list 00:22:29 v #27851 > > 00:22:29 v #27852 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:29 v #27853 > > inl from_list list = 00:22:29 v #27854 > > fun n => 00:22:29 v #27855 > > list 00:22:29 v #27856 > > |> listm'.try_item n 00:22:29 v #27857 > > 00:22:29 v #27858 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:29 v #27859 > > //// test 00:22:29 v #27860 > > 00:22:29 v #27861 > > listm.init 10i32 print_and_return 00:22:29 v #27862 > > |> from_list 00:22:29 v #27863 > > |> try_item 5i32 00:22:29 v #27864 > > |> _assert_eq (Some 5i32) 00:22:30 v #27865 > > 00:22:30 v #27866 > > ── [ 937.50ms - stdout ] ─────────────────────────────────────────────────────── 00:22:30 v #27867 > > │ print_and_return / x: 0 00:22:30 v #27868 > > │ print_and_return / x: 1 00:22:30 v #27869 > > │ print_and_return / x: 2 00:22:30 v #27870 > > │ print_and_return / x: 3 00:22:30 v #27871 > > │ print_and_return / x: 4 00:22:30 v #27872 > > │ print_and_return / x: 5 00:22:30 v #27873 > > │ print_and_return / x: 6 00:22:30 v #27874 > > │ print_and_return / x: 7 00:22:30 v #27875 > > │ print_and_return / x: 8 00:22:30 v #27876 > > │ print_and_return / x: 9 00:22:30 v #27877 > > │ __assert_eq / actual: US0_0 5 / expected: US0_0 5 00:22:30 v #27878 > > │ 00:22:30 v #27879 > > 00:22:30 v #27880 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:30 v #27881 > > │ ### map 00:22:30 v #27882 > > 00:22:30 v #27883 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27884 > > inl map fn s = 00:22:30 v #27885 > > fun n => 00:22:30 v #27886 > > n 00:22:30 v #27887 > > |> s 00:22:30 v #27888 > > |> optionm.map fn 00:22:30 v #27889 > > 00:22:30 v #27890 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27891 > > //// test 00:22:30 v #27892 > > 00:22:30 v #27893 > > listm.init 10i32 id 00:22:30 v #27894 > > |> from_list 00:22:30 v #27895 > > |> map ((*) 2) 00:22:30 v #27896 > > |> try_item 5i32 00:22:30 v #27897 > > |> _assert_eq (Some 10i32) 00:22:30 v #27898 > > 00:22:30 v #27899 > > ── [ 159.75ms - stdout ] ─────────────────────────────────────────────────────── 00:22:30 v #27900 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 00:22:30 v #27901 > > │ 00:22:30 v #27902 > > 00:22:30 v #27903 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:30 v #27904 > > │ ### mapi 00:22:30 v #27905 > > 00:22:30 v #27906 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27907 > > inl mapi fn s = 00:22:30 v #27908 > > fun n => 00:22:30 v #27909 > > n 00:22:30 v #27910 > > |> s 00:22:30 v #27911 > > |> optionm.map (fn n) 00:22:30 v #27912 > > 00:22:30 v #27913 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27914 > > //// test 00:22:30 v #27915 > > 00:22:30 v #27916 > > listm.init 10i32 print_and_return 00:22:30 v #27917 > > |> from_list 00:22:30 v #27918 > > |> mapi fun i x => i + x 00:22:30 v #27919 > > |> try_item 5i32 00:22:30 v #27920 > > |> _assert_eq (Some 10i32) 00:22:30 v #27921 > > 00:22:30 v #27922 > > ── [ 191.08ms - stdout ] ─────────────────────────────────────────────────────── 00:22:30 v #27923 > > │ print_and_return / x: 0 00:22:30 v #27924 > > │ print_and_return / x: 1 00:22:30 v #27925 > > │ print_and_return / x: 2 00:22:30 v #27926 > > │ print_and_return / x: 3 00:22:30 v #27927 > > │ print_and_return / x: 4 00:22:30 v #27928 > > │ print_and_return / x: 5 00:22:30 v #27929 > > │ print_and_return / x: 6 00:22:30 v #27930 > > │ print_and_return / x: 7 00:22:30 v #27931 > > │ print_and_return / x: 8 00:22:30 v #27932 > > │ print_and_return / x: 9 00:22:30 v #27933 > > │ __assert_eq / actual: US0_0 10 / expected: US0_0 10 00:22:30 v #27934 > > │ 00:22:30 v #27935 > > 00:22:30 v #27936 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:30 v #27937 > > │ ### choose 00:22:30 v #27938 > > 00:22:30 v #27939 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27940 > > inl choose forall dim {number} t u. (fn : t -> option u) (s : seq dim t) : seq 00:22:30 v #27941 > > dim u = 00:22:30 v #27942 > > fun n => 00:22:30 v #27943 > > inl rec body fn s i i' = 00:22:30 v #27944 > > match i |> s with 00:22:30 v #27945 > > | None => None 00:22:30 v #27946 > > | Some x => 00:22:30 v #27947 > > match x |> fn with 00:22:30 v #27948 > > | Some x when n = i' => Some x 00:22:30 v #27949 > > | Some _ => loop (i + 1) (i' + 1) 00:22:30 v #27950 > > | _ => loop (i + 1) i' 00:22:30 v #27951 > > and inl loop i i' = 00:22:30 v #27952 > > if n |> var_is |> not 00:22:30 v #27953 > > then body fn s i i' 00:22:30 v #27954 > > else 00:22:30 v #27955 > > inl fn = join fn 00:22:30 v #27956 > > inl s = join s 00:22:30 v #27957 > > join body fn s i i' 00:22:30 v #27958 > > loop 0 0 00:22:30 v #27959 > > 00:22:30 v #27960 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:30 v #27961 > > //// test 00:22:30 v #27962 > > 00:22:30 v #27963 > > listm.init 10i32 print_and_return 00:22:30 v #27964 > > |> from_list 00:22:30 v #27965 > > |> choose (fun x => if x % 2 = 0 then Some x else None) 00:22:30 v #27966 > > |> try_item 1i32 00:22:30 v #27967 > > |> _assert_eq (Some 2i32) 00:22:31 v #27968 > > 00:22:31 v #27969 > > ── [ 201.93ms - stdout ] ─────────────────────────────────────────────────────── 00:22:31 v #27970 > > │ print_and_return / x: 0 00:22:31 v #27971 > > │ print_and_return / x: 1 00:22:31 v #27972 > > │ print_and_return / x: 2 00:22:31 v #27973 > > │ print_and_return / x: 3 00:22:31 v #27974 > > │ print_and_return / x: 4 00:22:31 v #27975 > > │ print_and_return / x: 5 00:22:31 v #27976 > > │ print_and_return / x: 6 00:22:31 v #27977 > > │ print_and_return / x: 7 00:22:31 v #27978 > > │ print_and_return / x: 8 00:22:31 v #27979 > > │ print_and_return / x: 9 00:22:31 v #27980 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 00:22:31 v #27981 > > │ 00:22:31 v #27982 > > 00:22:31 v #27983 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:31 v #27984 > > │ ### indexed 00:22:31 v #27985 > > 00:22:31 v #27986 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:31 v #27987 > > inl indexed s = 00:22:31 v #27988 > > s 00:22:31 v #27989 > > |> mapi fun i x => 00:22:31 v #27990 > > i, x 00:22:31 v #27991 > > 00:22:31 v #27992 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:31 v #27993 > > //// test 00:22:31 v #27994 > > 00:22:31 v #27995 > > listm.init 10i32 ((*) 2) 00:22:31 v #27996 > > |> from_list 00:22:31 v #27997 > > |> indexed 00:22:31 v #27998 > > |> try_item 5i32 00:22:31 v #27999 > > |> _assert_eq (Some (5i32, 10i32)) 00:22:31 v #28000 > > 00:22:31 v #28001 > > ── [ 184.19ms - stdout ] ─────────────────────────────────────────────────────── 00:22:31 v #28002 > > │ __assert_eq / actual: US0_0 (5, 10) / expected: US0_0 (5, 10) 00:22:31 v #28003 > > │ 00:22:31 v #28004 > > 00:22:31 v #28005 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:31 v #28006 > > │ ### zip 00:22:31 v #28007 > > 00:22:31 v #28008 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:31 v #28009 > > inl zip n seq1 seq2 = 00:22:31 v #28010 > > seq1 n, seq2 n 00:22:31 v #28011 > > 00:22:31 v #28012 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:31 v #28013 > > //// test 00:22:31 v #28014 > > 00:22:31 v #28015 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:22:31 v #28016 > > ||> zip 5i32 00:22:31 v #28017 > > |> _assert_eq (Some 5, Some 10) 00:22:31 v #28018 > > 00:22:31 v #28019 > > ── [ 190.58ms - stdout ] ─────────────────────────────────────────────────────── 00:22:31 v #28020 > > │ __assert_eq / actual: struct (US0_0 5, US0_0 10) / expected: 00:22:31 v #28021 > > struct (US0_0 5, US0_0 10) 00:22:31 v #28022 > > │ 00:22:31 v #28023 > > 00:22:31 v #28024 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:31 v #28025 > > │ ### zip_with 00:22:31 v #28026 > > 00:22:31 v #28027 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:31 v #28028 > > inl zip_with fn seq1 seq2 = 00:22:31 v #28029 > > fun n => 00:22:31 v #28030 > > fn (seq1 n) (seq2 n) 00:22:32 v #28031 > > 00:22:32 v #28032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28033 > > //// test 00:22:32 v #28034 > > 00:22:32 v #28035 > > ((listm.init 10i32 id |> from_list), (listm.init 10i32 ((*) 2) |> from_list)) 00:22:32 v #28036 > > ||> zip_with (optionm'.choose (+)) 00:22:32 v #28037 > > |> try_item 2i32 00:22:32 v #28038 > > |> _assert_eq (Some 6) 00:22:32 v #28039 > > 00:22:32 v #28040 > > ── [ 189.14ms - stdout ] ─────────────────────────────────────────────────────── 00:22:32 v #28041 > > │ __assert_eq / actual: US0_0 6 / expected: US0_0 6 00:22:32 v #28042 > > │ 00:22:32 v #28043 > > 00:22:32 v #28044 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:32 v #28045 > > │ ### fold 00:22:32 v #28046 > > 00:22:32 v #28047 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28048 > > inl fold fn init seq = 00:22:32 v #28049 > > inl rec loop acc n = 00:22:32 v #28050 > > match seq n with 00:22:32 v #28051 > > | Some x => loop (fn acc x) (n + 1) 00:22:32 v #28052 > > | None => acc 00:22:32 v #28053 > > loop init 0 00:22:32 v #28054 > > 00:22:32 v #28055 > > inl fold_ fn init seq = 00:22:32 v #28056 > > let rec loop acc n = 00:22:32 v #28057 > > match seq n with 00:22:32 v #28058 > > | Some x => loop (fn acc x) (n + 1) 00:22:32 v #28059 > > | None => acc 00:22:32 v #28060 > > loop init 0 00:22:32 v #28061 > > 00:22:32 v #28062 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:32 v #28063 > > │ ### sum 00:22:32 v #28064 > > 00:22:32 v #28065 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28066 > > inl sum seq = 00:22:32 v #28067 > > seq |> fold (+) 0 00:22:32 v #28068 > > 00:22:32 v #28069 > > inl sum_ seq = 00:22:32 v #28070 > > seq |> fold_ (+) 0 00:22:32 v #28071 > > 00:22:32 v #28072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28073 > > //// test 00:22:32 v #28074 > > 00:22:32 v #28075 > > listm.init 10i32 id 00:22:32 v #28076 > > |> from_list 00:22:32 v #28077 > > |> fun f (n : i32) => f n 00:22:32 v #28078 > > |> sum 00:22:32 v #28079 > > |> _assert_eq 45 00:22:32 v #28080 > > 00:22:32 v #28081 > > ── [ 202.92ms - stdout ] ─────────────────────────────────────────────────────── 00:22:32 v #28082 > > │ __assert_eq / actual: 45 / expected: 45 00:22:32 v #28083 > > │ 00:22:32 v #28084 > > 00:22:32 v #28085 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:32 v #28086 > > │ ### to_list 00:22:32 v #28087 > > 00:22:32 v #28088 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28089 > > inl to_list seq = 00:22:32 v #28090 > > seq 00:22:32 v #28091 > > |> fold (fun acc x => x :: acc) [[]] 00:22:32 v #28092 > > |> listm.rev 00:22:32 v #28093 > > 00:22:32 v #28094 > > inl to_list_ seq = 00:22:32 v #28095 > > seq 00:22:32 v #28096 > > |> fold_ (fun acc x => x :: acc) [[]] 00:22:32 v #28097 > > |> listm.rev 00:22:32 v #28098 > > 00:22:32 v #28099 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:32 v #28100 > > //// test 00:22:32 v #28101 > > 00:22:32 v #28102 > > listm.init 10i32 id 00:22:32 v #28103 > > |> from_list 00:22:32 v #28104 > > |> fun f (n : i32) => f n 00:22:32 v #28105 > > |> to_list 00:22:32 v #28106 > > |> _assert_eq (listm.init 10i32 id) 00:22:33 v #28107 > > 00:22:33 v #28108 > > ── [ 203.08ms - stdout ] ─────────────────────────────────────────────────────── 00:22:33 v #28109 > > │ __assert_eq / actual: UH0_1 00:22:33 v #28110 > > │ (0, 00:22:33 v #28111 > > │ UH0_1 00:22:33 v #28112 > > │ (1, 00:22:33 v #28113 > > │ UH0_1 00:22:33 v #28114 > > │ (2, 00:22:33 v #28115 > > │ UH0_1 00:22:33 v #28116 > > │ (3, 00:22:33 v #28117 > > │ UH0_1 00:22:33 v #28118 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, 00:22:33 v #28119 > > UH0_1 (9, UH0_0)))))))))) / expected: UH0_1 00:22:33 v #28120 > > │ (0, 00:22:33 v #28121 > > │ UH0_1 00:22:33 v #28122 > > │ (1, 00:22:33 v #28123 > > │ UH0_1 00:22:33 v #28124 > > │ (2, 00:22:33 v #28125 > > │ UH0_1 00:22:33 v #28126 > > │ (3, 00:22:33 v #28127 > > │ UH0_1 00:22:33 v #28128 > > │ (4, UH0_1 (5, UH0_1 (6, UH0_1 (7, UH0_1 (8, 00:22:33 v #28129 > > UH0_1 (9, UH0_0)))))))))) 00:22:33 v #28130 > > │ 00:22:33 v #28131 > > 00:22:33 v #28132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:33 v #28133 > > │ ### from_array 00:22:33 v #28134 > > 00:22:33 v #28135 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:33 v #28136 > > inl from_array forall dim {number; int} el. (array : a dim el) : seq dim el = 00:22:33 v #28137 > > fun n => 00:22:33 v #28138 > > if n >= length array 00:22:33 v #28139 > > then None 00:22:33 v #28140 > > else index array n |> Some 00:22:33 v #28141 > > 00:22:33 v #28142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:33 v #28143 > > //// test 00:22:33 v #28144 > > 00:22:33 v #28145 > > a ;[[ 1; 2; 3 ]] 00:22:33 v #28146 > > |> from_array 00:22:33 v #28147 > > |> try_item 1i32 00:22:33 v #28148 > > |> _assert_eq (Some 2i32) 00:22:33 v #28149 > > 00:22:33 v #28150 > > ── [ 268.43ms - stdout ] ─────────────────────────────────────────────────────── 00:22:33 v #28151 > > │ __assert_eq / actual: US0_0 2 / expected: US0_0 2 00:22:33 v #28152 > > │ 00:22:33 v #28153 > > 00:22:33 v #28154 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:33 v #28155 > > │ ### to_array 00:22:33 v #28156 > > 00:22:33 v #28157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:33 v #28158 > > inl to_array seq = 00:22:33 v #28159 > > inl ar = a ;[[]] |> mut 00:22:33 v #28160 > > ((), seq) 00:22:33 v #28161 > > ||> fold fun _ x => 00:22:33 v #28162 > > ar <- *ar ++ a ;[[x]] 00:22:33 v #28163 > > *ar 00:22:33 v #28164 > > 00:22:33 v #28165 > > inl to_array_ seq = 00:22:33 v #28166 > > inl ar = a ;[[]] |> mut 00:22:33 v #28167 > > ((), seq) 00:22:33 v #28168 > > ||> fold_ fun _ x => 00:22:33 v #28169 > > ar <- *ar ++ a ;[[x]] 00:22:33 v #28170 > > *ar 00:22:33 v #28171 > > 00:22:33 v #28172 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:33 v #28173 > > //// test 00:22:33 v #28174 > > 00:22:33 v #28175 > > listm.init 10i32 id 00:22:33 v #28176 > > |> from_list 00:22:33 v #28177 > > |> fun (x : i32 -> _) => x 00:22:33 v #28178 > > |> to_array 00:22:33 v #28179 > > |> _assert_eq (a ;[[ 0; 1; 2; 3; 4; 5; 6; 7; 8; 9 ]] : _ i32 _) 00:22:34 v #28180 > > 00:22:34 v #28181 > > ── [ 372.68ms - stdout ] ─────────────────────────────────────────────────────── 00:22:34 v #28182 > > │ __assert_eq / actual: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] 00:22:34 v #28183 > > expected: [|0; 1; 2; 3; 4; 5; 6; 7; 8; 9|] 00:22:34 v #28184 > > │ 00:22:34 v #28185 > > 00:22:34 v #28186 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:34 v #28187 > > │ ### take_while 00:22:34 v #28188 > > 00:22:34 v #28189 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28190 > > inl take_while cond seq = 00:22:34 v #28191 > > inl rec loop acc i = 00:22:34 v #28192 > > match seq i with 00:22:34 v #28193 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:22:34 v #28194 > > | _ => acc |> listm.rev 00:22:34 v #28195 > > loop [[]] 0 00:22:34 v #28196 > > 00:22:34 v #28197 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28198 > > //// test 00:22:34 v #28199 > > 00:22:34 v #28200 > > listm.init 10i32 id 00:22:34 v #28201 > > |> from_list 00:22:34 v #28202 > > |> take_while (fun n (_ : i32) => n < 5) 00:22:34 v #28203 > > |> listm'.sum 00:22:34 v #28204 > > |> _assert_eq 10 00:22:34 v #28205 > > 00:22:34 v #28206 > > ── [ 171.85ms - stdout ] ─────────────────────────────────────────────────────── 00:22:34 v #28207 > > │ __assert_eq / actual: 10 / expected: 10 00:22:34 v #28208 > > │ 00:22:34 v #28209 > > 00:22:34 v #28210 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28211 > > //// test 00:22:34 v #28212 > > 00:22:34 v #28213 > > stream.new_finite_stream print_and_return 10i32 00:22:34 v #28214 > > |> flip stream.try_item 00:22:34 v #28215 > > |> take_while (fun n (_ : i32) => n < 5) 00:22:34 v #28216 > > |> listm'.sum 00:22:34 v #28217 > > |> _assert_eq 10 00:22:34 v #28218 > > 00:22:34 v #28219 > > ── [ 204.89ms - stdout ] ─────────────────────────────────────────────────────── 00:22:34 v #28220 > > │ print_and_return / x: 0 00:22:34 v #28221 > > │ print_and_return / x: 1 00:22:34 v #28222 > > │ print_and_return / x: 1 00:22:34 v #28223 > > │ print_and_return / x: 2 00:22:34 v #28224 > > │ print_and_return / x: 1 00:22:34 v #28225 > > │ print_and_return / x: 2 00:22:34 v #28226 > > │ print_and_return / x: 3 00:22:34 v #28227 > > │ print_and_return / x: 1 00:22:34 v #28228 > > │ print_and_return / x: 2 00:22:34 v #28229 > > │ print_and_return / x: 3 00:22:34 v #28230 > > │ print_and_return / x: 4 00:22:34 v #28231 > > │ print_and_return / x: 1 00:22:34 v #28232 > > │ print_and_return / x: 2 00:22:34 v #28233 > > │ print_and_return / x: 3 00:22:34 v #28234 > > │ print_and_return / x: 4 00:22:34 v #28235 > > │ print_and_return / x: 5 00:22:34 v #28236 > > │ __assert_eq / actual: 10 / expected: 10 00:22:34 v #28237 > > │ 00:22:34 v #28238 > > 00:22:34 v #28239 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:34 v #28240 > > │ ### take_while_ 00:22:34 v #28241 > > 00:22:34 v #28242 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28243 > > inl take_while_ cond seq = 00:22:34 v #28244 > > let rec loop acc i = 00:22:34 v #28245 > > match seq i with 00:22:34 v #28246 > > | Some st when cond st i => loop (st :: acc) (i + 1) 00:22:34 v #28247 > > | _ => acc |> listm.rev 00:22:34 v #28248 > > loop [[]] 0 00:22:34 v #28249 > > 00:22:34 v #28250 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28251 > > //// test 00:22:34 v #28252 > > 00:22:34 v #28253 > > stream.new_infinite_stream_ print_and_return 00:22:34 v #28254 > > |> flip stream.try_item 00:22:34 v #28255 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:22:34 v #28256 > > |> listm'.sum 00:22:34 v #28257 > > |> _assert_eq 10 00:22:34 v #28258 > > 00:22:34 v #28259 > > ── [ 260.98ms - stdout ] ─────────────────────────────────────────────────────── 00:22:34 v #28260 > > │ print_and_return / x: 0 00:22:34 v #28261 > > │ print_and_return / x: 1 00:22:34 v #28262 > > │ print_and_return / x: 1 00:22:34 v #28263 > > │ print_and_return / x: 2 00:22:34 v #28264 > > │ print_and_return / x: 1 00:22:34 v #28265 > > │ print_and_return / x: 2 00:22:34 v #28266 > > │ print_and_return / x: 3 00:22:34 v #28267 > > │ print_and_return / x: 1 00:22:34 v #28268 > > │ print_and_return / x: 2 00:22:34 v #28269 > > │ print_and_return / x: 3 00:22:34 v #28270 > > │ print_and_return / x: 4 00:22:34 v #28271 > > │ print_and_return / x: 1 00:22:34 v #28272 > > │ print_and_return / x: 2 00:22:34 v #28273 > > │ print_and_return / x: 3 00:22:34 v #28274 > > │ print_and_return / x: 4 00:22:34 v #28275 > > │ print_and_return / x: 5 00:22:34 v #28276 > > │ __assert_eq / actual: 10 / expected: 10 00:22:34 v #28277 > > │ 00:22:34 v #28278 > > 00:22:34 v #28279 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:34 v #28280 > > //// test 00:22:34 v #28281 > > 00:22:34 v #28282 > > stream.new_infinite_stream_ print_and_return 00:22:34 v #28283 > > |> stream.memoize 00:22:34 v #28284 > > |> fun list => 00:22:34 v #28285 > > inl list = list () 00:22:34 v #28286 > > fun n => 00:22:34 v #28287 > > list |> stream.try_item n 00:22:34 v #28288 > > |> take_while_ (fun n (_ : i32) => n < 5i32) 00:22:34 v #28289 > > |> listm'.sum 00:22:34 v #28290 > > |> _assert_eq 10 00:22:35 v #28291 > > 00:22:35 v #28292 > > ── [ 267.54ms - stdout ] ─────────────────────────────────────────────────────── 00:22:35 v #28293 > > │ print_and_return / x: 0 00:22:35 v #28294 > > │ print_and_return / x: 1 00:22:35 v #28295 > > │ print_and_return / x: 2 00:22:35 v #28296 > > │ print_and_return / x: 3 00:22:35 v #28297 > > │ print_and_return / x: 4 00:22:35 v #28298 > > │ print_and_return / x: 5 00:22:35 v #28299 > > │ __assert_eq / actual: 10 / expected: 10 00:22:35 v #28300 > > │ 00:22:35 v #28301 > > 00:22:35 v #28302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #28303 > > //// test 00:22:35 v #28304 > > 00:22:35 v #28305 > > stream.new_finite_stream print_and_return 10i32 00:22:35 v #28306 > > |> stream.memoize 00:22:35 v #28307 > > |> fun list => 00:22:35 v #28308 > > inl list = list () 00:22:35 v #28309 > > fun n => 00:22:35 v #28310 > > list |> stream.try_item n 00:22:35 v #28311 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:22:35 v #28312 > > |> listm'.sum 00:22:35 v #28313 > > |> _assert_eq 10 00:22:35 v #28314 > > 00:22:35 v #28315 > > ── [ 289.74ms - stdout ] ─────────────────────────────────────────────────────── 00:22:35 v #28316 > > │ print_and_return / x: 0 00:22:35 v #28317 > > │ print_and_return / x: 1 00:22:35 v #28318 > > │ print_and_return / x: 2 00:22:35 v #28319 > > │ print_and_return / x: 3 00:22:35 v #28320 > > │ print_and_return / x: 4 00:22:35 v #28321 > > │ print_and_return / x: 5 00:22:35 v #28322 > > │ __assert_eq / actual: 10 / expected: 10 00:22:35 v #28323 > > │ 00:22:35 v #28324 > > 00:22:35 v #28325 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:35 v #28326 > > │ ### memoize 00:22:35 v #28327 > > 00:22:35 v #28328 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #28329 > > inl memoize seq = 00:22:35 v #28330 > > inl state = mut [[]] 00:22:35 v #28331 > > fun n => 00:22:35 v #28332 > > match *state |> listm'.try_find (fun (n', _) => n' = n) with 00:22:35 v #28333 > > | Some (_, v) => v 00:22:35 v #28334 > > | None => 00:22:35 v #28335 > > inl new_state = seq n 00:22:35 v #28336 > > state <- (n, new_state) :: *state 00:22:35 v #28337 > > new_state 00:22:35 v #28338 > > 00:22:35 v #28339 > > inl memoize_ seq = 00:22:35 v #28340 > > inl state = mut [[]] 00:22:35 v #28341 > > fun n => 00:22:35 v #28342 > > match *state |> listm'.try_find_ (fun (n', _) => n' = n) with 00:22:35 v #28343 > > | Some (_, v) => v 00:22:35 v #28344 > > | None => 00:22:35 v #28345 > > inl new_state = seq n 00:22:35 v #28346 > > state <- (n, new_state) :: *state 00:22:35 v #28347 > > new_state 00:22:35 v #28348 > > 00:22:35 v #28349 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #28350 > > //// test 00:22:35 v #28351 > > 00:22:35 v #28352 > > inl seq = 00:22:35 v #28353 > > fun n => 00:22:35 v #28354 > > n |> print_and_return |> Some 00:22:35 v #28355 > > |> memoize_ 00:22:35 v #28356 > > 00:22:35 v #28357 > > seq 00:22:35 v #28358 > > |> take_while_ (fun n (_ : i32) => n < 5) 00:22:35 v #28359 > > |> listm'.sum 00:22:35 v #28360 > > |> _assert_eq 10 00:22:35 v #28361 > > 00:22:35 v #28362 > > seq 00:22:35 v #28363 > > |> take_while_ (fun n _ => n < 5) 00:22:35 v #28364 > > |> listm'.sum 00:22:35 v #28365 > > |> _assert_eq 10 00:22:35 v #28366 > > 00:22:35 v #28367 > > ── [ 302.54ms - stdout ] ─────────────────────────────────────────────────────── 00:22:35 v #28368 > > │ print_and_return / x: 0 00:22:35 v #28369 > > │ print_and_return / x: 1 00:22:35 v #28370 > > │ print_and_return / x: 2 00:22:35 v #28371 > > │ print_and_return / x: 3 00:22:35 v #28372 > > │ print_and_return / x: 4 00:22:35 v #28373 > > │ print_and_return / x: 5 00:22:35 v #28374 > > │ __assert_eq / actual: 10 / expected: 10 00:22:35 v #28375 > > │ __assert_eq / actual: 10 / expected: 10 00:22:35 v #28376 > > │ 00:22:35 v #28377 > > 00:22:35 v #28378 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:35 v #28379 > > │ ### iterate 00:22:35 v #28380 > > 00:22:35 v #28381 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:35 v #28382 > > inl iterate f x0 num_steps = 00:22:35 v #28383 > > inl rec loop x n = 00:22:35 v #28384 > > if n <= 0 00:22:35 v #28385 > > then x 00:22:35 v #28386 > > else loop (f x) (n - 1) 00:22:35 v #28387 > > loop x0 num_steps 00:22:36 v #28388 > > 00:22:36 v #28389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28390 > > //// test 00:22:36 v #28391 > > 00:22:36 v #28392 > > 10i32 |> iterate ((*) 2) 1i32 00:22:36 v #28393 > > |> _assert_eq 1024 00:22:36 v #28394 > > 00:22:36 v #28395 > > ── [ 162.56ms - stdout ] ─────────────────────────────────────────────────────── 00:22:36 v #28396 > > │ __assert_eq / actual: 1024 / expected: 1024 00:22:36 v #28397 > > │ 00:22:36 v #28398 > > 00:22:36 v #28399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28400 > > inl iterate_ f x0 num_steps = 00:22:36 v #28401 > > let rec loop x n = 00:22:36 v #28402 > > if n <= 0 00:22:36 v #28403 > > then x 00:22:36 v #28404 > > else loop (f x) (n - 1) 00:22:36 v #28405 > > loop x0 num_steps 00:22:36 v #28406 > > 00:22:36 v #28407 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28408 > > //// test 00:22:36 v #28409 > > 00:22:36 v #28410 > > 10i32 |> iterate_ ((*) 2) 1i32 00:22:36 v #28411 > > |> _assert_eq 1024 00:22:36 v #28412 > > 00:22:36 v #28413 > > ── [ 180.50ms - stdout ] ─────────────────────────────────────────────────────── 00:22:36 v #28414 > > │ __assert_eq / actual: 1024 / expected: 1024 00:22:36 v #28415 > > │ 00:22:36 v #28416 > > 00:22:36 v #28417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28418 > > inl iterate' f x0 num_steps = 00:22:36 v #28419 > > listm.init num_steps id 00:22:36 v #28420 > > |> listm.fold (fun x _ => f x) x0 00:22:36 v #28421 > > 00:22:36 v #28422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28423 > > //// test 00:22:36 v #28424 > > 00:22:36 v #28425 > > 10i32 |> iterate' ((*) 2) 1i32 00:22:36 v #28426 > > |> _assert_eq 1024 00:22:36 v #28427 > > 00:22:36 v #28428 > > ── [ 169.39ms - stdout ] ─────────────────────────────────────────────────────── 00:22:36 v #28429 > > │ __assert_eq / actual: 1024 / expected: 1024 00:22:36 v #28430 > > │ 00:22:36 v #28431 > > 00:22:36 v #28432 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:36 v #28433 > > │ ### find_last 00:22:36 v #28434 > > 00:22:36 v #28435 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:36 v #28436 > > inl find_last forall item result. fold_fn fn target : option result = 00:22:36 v #28437 > > fold_fn (fun (item : item) (result : option result) => 00:22:36 v #28438 > > match result with 00:22:36 v #28439 > > | None => fn item 00:22:36 v #28440 > > | result => result 00:22:36 v #28441 > > ) target (None : option result) 00:22:36 v #28442 > > 00:22:36 v #28443 > > inl array_find_last forall item result. (fn : item -> option result) (target : a 00:22:36 v #28444 > > i32 item) : option result = 00:22:36 v #28445 > > find_last am.foldBack fn target 00:22:36 v #28446 > > 00:22:36 v #28447 > > inl list_find_last forall item result. (fn : item -> option result) (target : 00:22:36 v #28448 > > list item) : option result = 00:22:36 v #28449 > > find_last listm.foldBack fn target 00:22:37 v #28450 > > 00:22:37 v #28451 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #28452 > > │ ## fsharp 00:22:37 v #28453 > > 00:22:37 v #28454 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #28455 > > │ ### seq' 00:22:37 v #28456 > > 00:22:37 v #28457 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #28458 > > nominal seq' t = $"backend_switch `({ Fsharp : $'`t seq'; Python : $'list' })" 00:22:37 v #28459 > > 00:22:37 v #28460 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #28461 > > │ ### length' 00:22:37 v #28462 > > 00:22:37 v #28463 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #28464 > > inl length' forall t. (items : seq' t) : int = 00:22:37 v #28465 > > backend_switch { 00:22:37 v #28466 > > Fsharp = fun () => items |> $'Seq.length' : int 00:22:37 v #28467 > > Python = fun () => $'len(!items)' : int 00:22:37 v #28468 > > } 00:22:37 v #28469 > > 00:22:37 v #28470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #28471 > > │ ### to_list' 00:22:37 v #28472 > > 00:22:37 v #28473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #28474 > > inl to_list' forall t. (items : seq' t) : listm'.list' t = 00:22:37 v #28475 > > backend_switch { 00:22:37 v #28476 > > Fsharp = fun () => items |> $'Seq.toList' : listm'.list' t 00:22:37 v #28477 > > Python = fun () => $'!items ' : listm'.list' t 00:22:37 v #28478 > > } 00:22:37 v #28479 > > 00:22:37 v #28480 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:37 v #28481 > > │ ### new_seq 00:22:37 v #28482 > > 00:22:37 v #28483 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #28484 > > inl new_seq forall t. fn : seq' t = 00:22:37 v #28485 > > backend_switch { 00:22:37 v #28486 > > Fsharp = fun () => 00:22:37 v #28487 > > fun () => 00:22:37 v #28488 > > $'seq {' 00:22:37 v #28489 > > fn |> indent 00:22:37 v #28490 > > $'}' : () 00:22:37 v #28491 > > |> let' 00:22:37 v #28492 > > |> fun x => x : seq' t 00:22:37 v #28493 > > Python = fun () => 00:22:37 v #28494 > > $'list(!fn())' : seq' t 00:22:37 v #28495 > > } 00:22:37 v #28496 > > 00:22:37 v #28497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:37 v #28498 > > //// test 00:22:37 v #28499 > > ///! fsharp 00:22:37 v #28500 > > ///! cuda 00:22:37 v #28501 > > 00:22:37 v #28502 > > fun () => 00:22:37 v #28503 > > "a" |> yield 00:22:37 v #28504 > > "b" |> yield 00:22:37 v #28505 > > |> new_seq 00:22:37 v #28506 > > |> to_list' 00:22:37 v #28507 > > |> listm'.unbox 00:22:37 v #28508 > > |> _assert_eq [[ "a"; "b" ]] 00:22:38 v #28509 > > 00:22:38 v #28510 > > ── [ 755.65ms - return value ] ───────────────────────────────────────────────── 00:22:38 v #28511 > > │ .py output (Cuda): 00:22:38 v #28512 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', 00:22:38 v #28513 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) 00:22:38 v #28514 > > │ 00:22:38 v #28515 > > │ 00:22:38 v #28516 > > 00:22:38 v #28517 > > ── [ 756.27ms - stdout ] ─────────────────────────────────────────────────────── 00:22:38 v #28518 > > │ .fsx output: 00:22:38 v #28519 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:38 v #28520 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:38 v #28521 > > │ 00:22:38 v #28522 > > 00:22:38 v #28523 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:38 v #28524 > > │ ### of_array' 00:22:38 v #28525 > > 00:22:38 v #28526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:38 v #28527 > > inl of_array' forall dim t. (items : a dim t) : seq' t = 00:22:38 v #28528 > > backend_switch { 00:22:38 v #28529 > > Fsharp = fun () => 00:22:38 v #28530 > > fun () => 00:22:38 v #28531 > > $'for i = 0 to !items.Length - 1 do yield !items.[[i]]' 00:22:38 v #28532 > > |> new_seq 00:22:38 v #28533 > > |> fun x => x : seq' t 00:22:38 v #28534 > > Python = fun () => $'[[item for item in !items]]' : seq' t 00:22:38 v #28535 > > } 00:22:38 v #28536 > > 00:22:38 v #28537 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:38 v #28538 > > //// test 00:22:38 v #28539 > > ///! fsharp 00:22:38 v #28540 > > ///! cuda 00:22:38 v #28541 > > ///! rust 00:22:38 v #28542 > > ///! typescript 00:22:38 v #28543 > > ///! python 00:22:38 v #28544 > > 00:22:38 v #28545 > > (a ;[[ "a"; "b" ]] : _ int _) 00:22:38 v #28546 > > |> of_array' 00:22:38 v #28547 > > |> to_list' 00:22:38 v #28548 > > |> listm'.unbox 00:22:38 v #28549 > > |> _assert_eq [[ "a"; "b" ]] 00:22:48 v #28550 > > 00:22:48 v #28551 > > ── [ 9.66s - return value ] ──────────────────────────────────────────────────── 00:22:48 v #28552 > > │ .py output (Cuda): 00:22:48 v #28553 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', 00:22:48 v #28554 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) 00:22:48 v #28555 > > │ 00:22:48 v #28556 > > │ .rs output: 00:22:48 v #28557 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) 00:22:48 v #28558 > > expected: UH0_1("a", UH0_1("b", UH0_0)) 00:22:48 v #28559 > > │ 00:22:48 v #28560 > > │ .ts output: 00:22:48 v #28561 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: 00:22:48 v #28562 > > UH0_1 (a, UH0_1 (b, UH0_0)) 00:22:48 v #28563 > > │ 00:22:48 v #28564 > > │ .py output: 00:22:48 v #28565 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:48 v #28566 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:48 v #28567 > > │ 00:22:48 v #28568 > > │ 00:22:48 v #28569 > > 00:22:48 v #28570 > > ── [ 9.66s - stdout ] ────────────────────────────────────────────────────────── 00:22:48 v #28571 > > │ .fsx output: 00:22:48 v #28572 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:48 v #28573 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:48 v #28574 > > │ 00:22:48 v #28575 > > 00:22:48 v #28576 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:48 v #28577 > > │ ### of_array 00:22:48 v #28578 > > 00:22:48 v #28579 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:48 v #28580 > > inl of_array forall dim t. (items : a dim t) : seq' t = 00:22:48 v #28581 > > backend_switch { 00:22:48 v #28582 > > Fsharp = fun () => $'!items |> Seq.ofArray' : seq' t 00:22:48 v #28583 > > Python = fun () => $'list(iter(!items))' : seq' t 00:22:48 v #28584 > > } 00:22:48 v #28585 > > 00:22:48 v #28586 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:48 v #28587 > > //// test 00:22:48 v #28588 > > ///! fsharp 00:22:48 v #28589 > > ///! cuda 00:22:48 v #28590 > > ///! rust 00:22:48 v #28591 > > ///! typescript 00:22:48 v #28592 > > ///! python 00:22:48 v #28593 > > 00:22:48 v #28594 > > (a ;[[ "a"; "b" ]] : _ int _) 00:22:48 v #28595 > > |> of_array 00:22:48 v #28596 > > |> to_list' 00:22:48 v #28597 > > |> listm'.unbox 00:22:48 v #28598 > > |> _assert_eq [[ "a"; "b" ]] 00:22:57 v #28599 > > 00:22:57 v #28600 > > ── [ 8.81s - return value ] ──────────────────────────────────────────────────── 00:22:57 v #28601 > > │ .py output (Cuda): 00:22:57 v #28602 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', 00:22:57 v #28603 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) 00:22:57 v #28604 > > │ 00:22:57 v #28605 > > │ .rs output: 00:22:57 v #28606 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) 00:22:57 v #28607 > > expected: UH0_1("a", UH0_1("b", UH0_0)) 00:22:57 v #28608 > > │ 00:22:57 v #28609 > > │ .ts output: 00:22:57 v #28610 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: 00:22:57 v #28611 > > UH0_1 (a, UH0_1 (b, UH0_0)) 00:22:57 v #28612 > > │ 00:22:57 v #28613 > > │ .py output: 00:22:57 v #28614 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:57 v #28615 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:57 v #28616 > > │ 00:22:57 v #28617 > > │ 00:22:57 v #28618 > > 00:22:57 v #28619 > > ── [ 8.81s - stdout ] ────────────────────────────────────────────────────────── 00:22:57 v #28620 > > │ .fsx output: 00:22:57 v #28621 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:57 v #28622 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:57 v #28623 > > │ 00:22:57 v #28624 > > 00:22:57 v #28625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:57 v #28626 > > │ ### of_array_base 00:22:57 v #28627 > > 00:22:57 v #28628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:57 v #28629 > > inl of_array_base forall t. (items : array_base t) : seq' t = 00:22:57 v #28630 > > a items 00:22:57 v #28631 > > |> fun x => x : _ int _ 00:22:57 v #28632 > > |> of_array 00:22:57 v #28633 > > 00:22:57 v #28634 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:57 v #28635 > > //// test 00:22:57 v #28636 > > ///! fsharp 00:22:57 v #28637 > > ///! cuda 00:22:57 v #28638 > > ///! rust 00:22:57 v #28639 > > ///! typescript 00:22:57 v #28640 > > ///! python 00:22:57 v #28641 > > 00:22:57 v #28642 > > ;[[ "a"; "b" ]] 00:22:57 v #28643 > > |> of_array_base 00:22:57 v #28644 > > |> to_list' 00:22:57 v #28645 > > |> listm'.unbox 00:22:57 v #28646 > > |> _assert_eq [[ "a"; "b" ]] 00:22:59 v #28647 > > 00:22:59 v #28648 > > ── [ 1.88s - return value ] ──────────────────────────────────────────────────── 00:22:59 v #28649 > > │ .py output (Cuda): 00:22:59 v #28650 > > │ __assert_eq / actual: UH0_1(v0='a', v1=UH0_1(v0='b', 00:22:59 v #28651 > > v1=UH0_0())) / expected: UH0_1(v0='a', v1=UH0_1(v0='b', v1=UH0_0())) 00:22:59 v #28652 > > │ 00:22:59 v #28653 > > │ .rs output: 00:22:59 v #28654 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) 00:22:59 v #28655 > > expected: UH0_1("a", UH0_1("b", UH0_0)) 00:22:59 v #28656 > > │ 00:22:59 v #28657 > > │ .ts output: 00:22:59 v #28658 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: 00:22:59 v #28659 > > UH0_1 (a, UH0_1 (b, UH0_0)) 00:22:59 v #28660 > > │ 00:22:59 v #28661 > > │ .py output: 00:22:59 v #28662 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:59 v #28663 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:59 v #28664 > > │ 00:22:59 v #28665 > > │ 00:22:59 v #28666 > > 00:22:59 v #28667 > > ── [ 1.88s - stdout ] ────────────────────────────────────────────────────────── 00:22:59 v #28668 > > │ .fsx output: 00:22:59 v #28669 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:59 v #28670 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:22:59 v #28671 > > │ 00:22:59 v #28672 > > 00:22:59 v #28673 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:22:59 v #28674 > > │ ### to_array' 00:22:59 v #28675 > > 00:22:59 v #28676 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:59 v #28677 > > inl to_array' forall dim t. (items : seq' t) : a dim t = 00:22:59 v #28678 > > backend_switch { 00:22:59 v #28679 > > Fsharp = fun () => items |> $'Seq.toArray' : a dim t 00:22:59 v #28680 > > Python = fun () => $'(cp if cuda else np).array(!items)' : a dim t 00:22:59 v #28681 > > } 00:22:59 v #28682 > > 00:22:59 v #28683 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:22:59 v #28684 > > //// test 00:22:59 v #28685 > > ///! fsharp 00:22:59 v #28686 > > ///! cuda 00:22:59 v #28687 > > ///! rust 00:22:59 v #28688 > > ///! typescript 00:22:59 v #28689 > > ///! python 00:22:59 v #28690 > > 00:22:59 v #28691 > > ;[[ "a"; "b" ]] 00:22:59 v #28692 > > |> of_array_base 00:22:59 v #28693 > > |> to_array' 00:22:59 v #28694 > > |> fun x => x : _ int _ 00:22:59 v #28695 > > |> am'.to_list' 00:22:59 v #28696 > > |> listm'.unbox 00:22:59 v #28697 > > |> _assert_eq [[ "a"; "b" ]] 00:23:08 v #28698 > > 00:23:08 v #28699 > > ── [ 8.49s - return value ] ──────────────────────────────────────────────────── 00:23:08 v #28700 > > │ .py output (Cuda): 00:23:08 v #28701 > > │ __assert_eq / actual: UH0_1(v0=np.str_('a'), 00:23:08 v #28702 > > v1=UH0_1(v0=np.str_('b'), v1=UH0_0())) / expected: UH0_1(v0='a', 00:23:08 v #28703 > > v1=UH0_1(v0='b', v1=UH0_0())) 00:23:08 v #28704 > > │ 00:23:08 v #28705 > > │ .rs output: 00:23:08 v #28706 > > │ __assert_eq / actual: UH0_1("a", UH0_1("b", UH0_0)) 00:23:08 v #28707 > > expected: UH0_1("a", UH0_1("b", UH0_0)) 00:23:08 v #28708 > > │ 00:23:08 v #28709 > > │ .ts output: 00:23:08 v #28710 > > │ __assert_eq / actual: UH0_1 (a, UH0_1 (b, UH0_0)) / expected: 00:23:08 v #28711 > > UH0_1 (a, UH0_1 (b, UH0_0)) 00:23:08 v #28712 > > │ 00:23:08 v #28713 > > │ .py output: 00:23:08 v #28714 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:23:08 v #28715 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:23:08 v #28716 > > │ 00:23:08 v #28717 > > │ 00:23:08 v #28718 > > 00:23:08 v #28719 > > ── [ 8.49s - stdout ] ────────────────────────────────────────────────────────── 00:23:08 v #28720 > > │ .fsx output: 00:23:08 v #28721 > > │ __assert_eq / actual: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:23:08 v #28722 > > expected: UH0_1 ("a", UH0_1 ("b", UH0_0)) 00:23:08 v #28723 > > │ 00:23:08 v #28724 > > 00:23:08 v #28725 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:08 v #28726 > > │ ### of_list' 00:23:08 v #28727 > > 00:23:08 v #28728 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:08 v #28729 > > inl of_list' forall t. (items : listm'.list' t) : seq' t = 00:23:08 v #28730 > > backend_switch { 00:23:08 v #28731 > > Fsharp = fun () => 00:23:08 v #28732 > > fun () => 00:23:08 v #28733 > > items |> yield_from 00:23:08 v #28734 > > |> new_seq 00:23:08 v #28735 > > |> fun x => x : seq' t 00:23:08 v #28736 > > Python = fun () => $'!items ' : seq' t 00:23:08 v #28737 > > } 00:23:08 v #28738 > > 00:23:08 v #28739 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:08 v #28740 > > │ ### cast' 00:23:08 v #28741 > > 00:23:08 v #28742 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:08 v #28743 > > inl cast' forall t u. (items : u) : seq' t = 00:23:08 v #28744 > > backend_switch { 00:23:08 v #28745 > > Fsharp = fun () => items |> $'Seq.cast' : seq' t 00:23:08 v #28746 > > Python = fun () => $'list(!items)' : seq' t 00:23:08 v #28747 > > } 00:23:08 v #28748 > > 00:23:08 v #28749 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:08 v #28750 > > │ ### rev' 00:23:08 v #28751 > > 00:23:08 v #28752 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:08 v #28753 > > inl rev'' forall t. (items : seq' t) : seq' t = 00:23:08 v #28754 > > backend_switch { 00:23:08 v #28755 > > Fsharp = fun () => items |> $'Seq.rev' : seq' t 00:23:08 v #28756 > > Python = fun () => $'list(reversed(!items))' : seq' t 00:23:08 v #28757 > > } 00:23:08 v #28758 > > 00:23:08 v #28759 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:08 v #28760 > > //// test 00:23:08 v #28761 > > ///! fsharp 00:23:08 v #28762 > > ///! cuda 00:23:08 v #28763 > > ///! rust 00:23:08 v #28764 > > ///! typescript 00:23:08 v #28765 > > ///! python 00:23:08 v #28766 > > 00:23:08 v #28767 > > [[ "a"; "b" ]] 00:23:08 v #28768 > > |> listm'.box 00:23:08 v #28769 > > |> of_list' 00:23:08 v #28770 > > |> rev'' 00:23:08 v #28771 > > |> to_list' 00:23:08 v #28772 > > |> listm'.unbox 00:23:08 v #28773 > > |> _assert_eq [[ "b"; "a" ]] 00:23:17 v #28774 > > 00:23:17 v #28775 > > ── [ 8.62s - return value ] ──────────────────────────────────────────────────── 00:23:17 v #28776 > > │ .py output (Cuda): 00:23:17 v #28777 > > │ __assert_eq / actual: UH0_1(v0='b', v1=UH0_1(v0='a', 00:23:17 v #28778 > > v1=UH0_0())) / expected: UH0_1(v0='b', v1=UH0_1(v0='a', v1=UH0_0())) 00:23:17 v #28779 > > │ 00:23:17 v #28780 > > │ .rs output: 00:23:17 v #28781 > > │ __assert_eq / actual: UH0_1("b", UH0_1("a", UH0_0)) 00:23:17 v #28782 > > expected: UH0_1("b", UH0_1("a", UH0_0)) 00:23:17 v #28783 > > │ 00:23:17 v #28784 > > │ .ts output: 00:23:17 v #28785 > > │ __assert_eq / actual: UH0_1 (b, UH0_1 (a, UH0_0)) / expected: 00:23:17 v #28786 > > UH0_1 (b, UH0_1 (a, UH0_0)) 00:23:17 v #28787 > > │ 00:23:17 v #28788 > > │ .py output: 00:23:17 v #28789 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) 00:23:17 v #28790 > > expected: UH0_1 ("b", UH0_1 ("a", UH0_0)) 00:23:17 v #28791 > > │ 00:23:17 v #28792 > > │ 00:23:17 v #28793 > > 00:23:17 v #28794 > > ── [ 8.62s - stdout ] ────────────────────────────────────────────────────────── 00:23:17 v #28795 > > │ .fsx output: 00:23:17 v #28796 > > │ __assert_eq / actual: UH0_1 ("b", UH0_1 ("a", UH0_0)) 00:23:17 v #28797 > > expected: UH0_1 ("b", UH0_1 ("a", UH0_0)) 00:23:17 v #28798 > > │ 00:23:17 v #28799 > > 00:23:17 v #28800 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:17 v #28801 > > │ ## rust 00:23:17 v #28802 > > 00:23:17 v #28803 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:17 v #28804 > > │ ### fuse 00:23:17 v #28805 > > 00:23:17 v #28806 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:17 v #28807 > > nominal fuse t = 00:23:17 v #28808 > > `( 00:23:17 v #28809 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:23:17 v #28810 > > Fable.Core.Emit(\"core::iter::Fuse<$0>\")>]]\n#endif\ntype core_iter_Fuse<'T> = 00:23:17 v #28811 > > class end" 00:23:17 v #28812 > > $'' : $'core_iter_Fuse<`t>' 00:23:17 v #28813 > > ) 00:23:17 v #28814 > 00:00:53 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 35370 } 00:23:17 v #28815 > 00:00:53 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:18 v #28816 > 00:00:53 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.ipynb to html 00:23:18 v #28817 > 00:00:53 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:23:18 v #28818 > 00:00:53 v #7 ! validate(nb) 00:23:18 v #28819 > 00:00:54 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:23:18 v #28820 > 00:00:54 v #9 ! return _pygments_highlight( 00:23:18 v #28821 > 00:00:54 v #10 ! [NbConvertApp] Writing 398688 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html 00:23:19 v #28822 > 00:00:54 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:23:19 v #28823 > 00:00:54 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:23:19 v #28824 > 00:00:54 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/seq.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:19 v #28825 > 00:00:55 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:23:19 v #28826 > 00:00:55 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:23:19 v #28827 > 00:00:55 d #16 spiral.run / dib / { exit_code = 0; result_length = 36319 } 00:23:19 d #28828 runtime.execute_with_options_async / { exit_code = 0; output_length = 40927 } 00:23:19 d #35 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path seq.dib --retries 3 00:23:19 d #28829 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path env.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:19 v #28830 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "env.dib", "--retries", "3"])) } 00:23:19 v #28831 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:23:20 v #28832 > > 00:23:20 v #28833 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:20 v #28834 > > │ # env 00:23:23 v #28835 > > 00:23:23 v #28836 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:23 v #28837 > > //// test 00:23:23 v #28838 > > 00:23:23 v #28839 > > open testing 00:23:23 v #28840 > > 00:23:23 v #28841 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:23 v #28842 > > │ ## rust 00:23:23 v #28843 > > 00:23:23 v #28844 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:23 v #28845 > > │ ### var_error 00:23:23 v #28846 > > 00:23:23 v #28847 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:23 v #28848 > > nominal var_error = 00:23:23 v #28849 > > `( 00:23:23 v #28850 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:23:23 v #28851 > > Fable.Core.Emit(\"std::env::VarError\")>]]\n#endif\ntype std_env_VarError = 00:23:23 v #28852 > > class end" 00:23:23 v #28853 > > $'' : $'std_env_VarError' 00:23:23 v #28854 > > ) 00:23:24 v #28855 > > 00:23:24 v #28856 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #28857 > > │ ### get_environment_variable_comptime 00:23:24 v #28858 > > 00:23:24 v #28859 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28860 > > inl get_environment_variable_comptime (var : string) : string = 00:23:24 v #28861 > > run_target_args (fun () => var) function 00:23:24 v #28862 > > | Rust _ => fun var => 00:23:24 v #28863 > > open rust.rust_operators 00:23:24 v #28864 > > !\($'"option_env\!(\\\"" + !var + "\\\").unwrap_or(\\\"\\\")"') 00:23:24 v #28865 > > |> sm'.ref_to_std_string 00:23:24 v #28866 > > |> sm'.from_std_string 00:23:24 v #28867 > > | target => fun _ => null () 00:23:24 v #28868 > > 00:23:24 v #28869 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #28870 > > │ ## python 00:23:24 v #28871 > > 00:23:24 v #28872 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #28873 > > │ ### os_environ 00:23:24 v #28874 > > 00:23:24 v #28875 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28876 > > nominal os_environ = any 00:23:24 v #28877 > > 00:23:24 v #28878 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28879 > > inl os_environ () : os_environ = 00:23:24 v #28880 > > backend_switch { 00:23:24 v #28881 > > Fsharp = fun () => 00:23:24 v #28882 > > open python_operators 00:23:24 v #28883 > > global "type IOsEnviron = abstract environ: x: unit -> obj" 00:23:24 v #28884 > > inl os : $'IOsEnviron' = python.import_all "os" 00:23:24 v #28885 > > !\($'"!os.environ"') : os_environ 00:23:24 v #28886 > > Python = fun () => 00:23:24 v #28887 > > global "import os" 00:23:24 v #28888 > > $'os.environ' : os_environ 00:23:24 v #28889 > > } 00:23:24 v #28890 > > 00:23:24 v #28891 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28892 > > inl environ_get (key : string) (os_environ : os_environ) : string = 00:23:24 v #28893 > > backend_switch { 00:23:24 v #28894 > > Fsharp = fun () => 00:23:24 v #28895 > > open python_operators 00:23:24 v #28896 > > !\\(key, $'"!os_environ.get($0)"') : string 00:23:24 v #28897 > > Python = fun () => 00:23:24 v #28898 > > $'!os_environ.get(!key)' : string 00:23:24 v #28899 > > } 00:23:24 v #28900 > > 00:23:24 v #28901 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #28902 > > │ ## env 00:23:24 v #28903 > > 00:23:24 v #28904 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:24 v #28905 > > │ ### get_environment_variable 00:23:24 v #28906 > > 00:23:24 v #28907 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28908 > > let get_environment_variable (var : string) : string = 00:23:24 v #28909 > > run_target_args (fun () => var) function 00:23:24 v #28910 > > | Rust (Native) => fun var => 00:23:24 v #28911 > > inl var = join var 00:23:24 v #28912 > > open rust.rust_operators 00:23:24 v #28913 > > !\\(var, $'"std::env::var(&*$0)"') 00:23:24 v #28914 > > |> fun x => x : resultm.result' sm'.std_string var_error 00:23:24 v #28915 > > |> resultm.map' sm'.from_std_string 00:23:24 v #28916 > > |> resultm.unwrap_or' (join "") 00:23:24 v #28917 > > | Fsharp (Native) => fun var => 00:23:24 v #28918 > > var 00:23:24 v #28919 > > |> $'System.Environment.GetEnvironmentVariable' 00:23:24 v #28920 > > |> optionm'.of_obj 00:23:24 v #28921 > > |> optionm'.unbox 00:23:24 v #28922 > > |> optionm'.default_value "" 00:23:24 v #28923 > > | TypeScript _ => fun var => 00:23:24 v #28924 > > open typescript_operators 00:23:24 v #28925 > > !\\(var, $'"process.env[[$0]] ?? \\\"\\\""') 00:23:24 v #28926 > > | Python _ | Cuda _ => fun var => 00:23:24 v #28927 > > os_environ () 00:23:24 v #28928 > > |> environ_get var 00:23:24 v #28929 > > |> optionm'.of_obj 00:23:24 v #28930 > > |> optionm'.unbox 00:23:24 v #28931 > > |> optionm'.default_value "" 00:23:24 v #28932 > > | target => fun var => failwith $'$"env.get_environment_variable 00:23:24 v #28933 > > target: {!target} / var: {!var}"' 00:23:24 v #28934 > > 00:23:24 v #28935 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:24 v #28936 > > //// test 00:23:24 v #28937 > > ///! fsharp 00:23:24 v #28938 > > ///! cuda 00:23:24 v #28939 > > ///! rust 00:23:24 v #28940 > > ///! typescript 00:23:24 v #28941 > > ///! python 00:23:24 v #28942 > > 00:23:24 v #28943 > > "PATH" 00:23:24 v #28944 > > |> get_environment_variable 00:23:24 v #28945 > > |> sm'.length 00:23:24 v #28946 > > |> fun x => 00:23:24 v #28947 > > if x > 0i32 00:23:24 v #28948 > > then 1 00:23:24 v #28949 > > else 0 00:23:24 v #28950 > > |> _assert_ne 0i32 00:23:34 v #28951 > > 00:23:34 v #28952 > > ── [ 10.03s - return value ] ─────────────────────────────────────────────────── 00:23:34 v #28953 > > │ .py output (Cuda): 00:23:34 v #28954 > > │ __assert_ne / actual: 1 / expected: 0 00:23:34 v #28955 > > │ 00:23:34 v #28956 > > │ .rs output: 00:23:34 v #28957 > > │ __assert_ne / actual: 1 / expected: 0 00:23:34 v #28958 > > │ 00:23:34 v #28959 > > │ .ts output: 00:23:34 v #28960 > > │ __assert_ne / actual: 1 / expected: 0 00:23:34 v #28961 > > │ 00:23:34 v #28962 > > │ .py output: 00:23:34 v #28963 > > │ __assert_ne / actual: 1 / expected: 0 00:23:34 v #28964 > > │ 00:23:34 v #28965 > > │ 00:23:34 v #28966 > > 00:23:34 v #28967 > > ── [ 10.04s - stdout ] ───────────────────────────────────────────────────────── 00:23:34 v #28968 > > │ .fsx output: 00:23:34 v #28969 > > │ __assert_ne / actual: 1 / expected: 0 00:23:34 v #28970 > > │ 00:23:34 v #28971 > > 00:23:34 v #28972 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:34 v #28973 > > │ ### get_entry_assembly_name 00:23:34 v #28974 > > 00:23:34 v #28975 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:34 v #28976 > > let get_entry_assembly_name () : string = 00:23:34 v #28977 > > run_target function 00:23:34 v #28978 > > | Rust _ => fun () => (join "CARGO_PKG_NAME") |> 00:23:34 v #28979 > > get_environment_variable 00:23:34 v #28980 > > | Fsharp _ => fun () => 00:23:34 v #28981 > > $'System.Reflection.Assembly.GetEntryAssembly().GetName().Name' 00:23:34 v #28982 > > | target => fun () => failwith $'$"env.get_entry_assembly_name / target: 00:23:34 v #28983 > > {!target}"' 00:23:34 v #28984 > > 00:23:34 v #28985 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:34 v #28986 > > │ ### append_path 00:23:34 v #28987 > > 00:23:34 v #28988 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:34 v #28989 > > inl append_path (path : string) : option string = 00:23:34 v #28990 > > inl env_path = "PATH" |> get_environment_variable 00:23:34 v #28991 > > if env_path = "" 00:23:34 v #28992 > > then None 00:23:34 v #28993 > > else 00:23:34 v #28994 > > inl env_sep = 00:23:34 v #28995 > > if platform.is_windows () 00:23:34 v #28996 > > then ";" 00:23:34 v #28997 > > else ":" 00:23:34 v #28998 > > Some $'$"{!path}{!env_sep}{!env_path}"' 00:23:35 v #28999 > 00:00:15 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 6392 } 00:23:35 v #29000 > 00:00:15 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:35 v #29001 > 00:00:16 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.ipynb to html 00:23:35 v #29002 > 00:00:16 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:23:35 v #29003 > 00:00:16 v #7 ! validate(nb) 00:23:36 v #29004 > 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:23:36 v #29005 > 00:00:17 v #9 ! return _pygments_highlight( 00:23:36 v #29006 > 00:00:17 v #10 ! [NbConvertApp] Writing 294865 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html 00:23:36 v #29007 > 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 890 } 00:23:36 v #29008 > 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 890 } 00:23:36 v #29009 > 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/env.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:36 v #29010 > 00:00:17 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:23:36 v #29011 > 00:00:17 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:23:36 v #29012 > 00:00:17 d #16 spiral.run / dib / { exit_code = 0; result_length = 7341 } 00:23:36 d #29013 runtime.execute_with_options_async / { exit_code = 0; output_length = 10301 } 00:23:36 d #36 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path env.dib --retries 3 00:23:36 d #29014 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path python.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:36 v #29015 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "python.dib", "--retries", "3"])) } 00:23:36 v #29016 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:23:38 v #29017 > > 00:23:38 v #29018 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:38 v #29019 > > │ # python 00:23:38 v #29020 > > 00:23:38 v #29021 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:38 v #29022 > > │ ### emit_expr 00:23:40 v #29023 > > 00:23:40 v #29024 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:40 v #29025 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:23:40 v #29026 > > real 00:23:40 v #29027 > > $'Fable.Core.PyInterop.emitPyExpr !args !code ' : t 00:23:41 v #29028 > > 00:23:41 v #29029 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:41 v #29030 > > │ ### 00:23:41 v #29031 > > 00:23:41 v #29032 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:41 v #29033 > > inl (~!\) forall t. (code : string) : t = 00:23:41 v #29034 > > emit_expr () code 00:23:41 v #29035 > > 00:23:41 v #29036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:41 v #29037 > > │ ### 00:23:41 v #29038 > > 00:23:41 v #29039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:41 v #29040 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:23:41 v #29041 > > emit_expr args code 00:23:41 v #29042 > > 00:23:41 v #29043 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:41 v #29044 > > │ ### 00:23:41 v #29045 > > 00:23:41 v #29046 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:41 v #29047 > > inl import_all forall t. (file : string) : t = 00:23:41 v #29048 > > real 00:23:41 v #29049 > > $'Fable.Core.PyInterop.importAll !file ' : t 00:23:41 v #29050 > > 00:23:41 v #29051 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:42 v #29052 > > │ ### 00:23:42 v #29053 > > 00:23:42 v #29054 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:42 v #29055 > > inl import forall t. (name : string) (file : string) : t = 00:23:42 v #29056 > > real 00:23:42 v #29057 > > $'Fable.Core.PyInterop.import !name !file ' : t 00:23:42 v #29058 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1763 } 00:23:42 v #29059 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:42 v #29060 > 00:00:06 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.ipynb to html 00:23:42 v #29061 > 00:00:06 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:23:42 v #29062 > 00:00:06 v #7 ! validate(nb) 00:23:43 v #29063 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:23:43 v #29064 > 00:00:06 v #9 ! return _pygments_highlight( 00:23:43 v #29065 > 00:00:06 v #10 ! [NbConvertApp] Writing 278675 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html 00:23:43 v #29066 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:23:43 v #29067 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:23:43 v #29068 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/python.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:43 v #29069 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:23:43 v #29070 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:23:43 v #29071 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 2718 } 00:23:43 d #29072 runtime.execute_with_options_async / { exit_code = 0; output_length = 5453 } 00:23:43 d #37 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path python.dib --retries 3 00:23:43 d #29073 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path typescript.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:43 v #29074 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "typescript.dib", "--retries", "3"])) } 00:23:43 v #29075 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:23:45 v #29076 > > 00:23:45 v #29077 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:45 v #29078 > > │ # typescript 00:23:45 v #29079 > > 00:23:45 v #29080 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:45 v #29081 > > │ ### emit_expr 00:23:47 v #29082 > > 00:23:47 v #29083 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:47 v #29084 > > inl emit_expr forall a t. (args : a) (code : string) : t = 00:23:47 v #29085 > > real 00:23:47 v #29086 > > $'Fable.Core.JsInterop.emitJsExpr !args !code ' : t 00:23:48 v #29087 > > 00:23:48 v #29088 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #29089 > > │ ### 00:23:48 v #29090 > > 00:23:48 v #29091 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #29092 > > inl (~!\) forall t. (code : string) : t = 00:23:48 v #29093 > > emit_expr () code 00:23:48 v #29094 > > 00:23:48 v #29095 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #29096 > > │ ### 00:23:48 v #29097 > > 00:23:48 v #29098 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #29099 > > inl (~!\\) forall t u. ((args : t), (code : string)) : u = 00:23:48 v #29100 > > emit_expr args code 00:23:48 v #29101 > > 00:23:48 v #29102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #29103 > > │ ### 00:23:48 v #29104 > > 00:23:48 v #29105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #29106 > > inl import_all forall t. (file : string) : t = 00:23:48 v #29107 > > real 00:23:48 v #29108 > > $'Fable.Core.JsInterop.importAll !file ' : t 00:23:48 v #29109 > > 00:23:48 v #29110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:48 v #29111 > > │ ### 00:23:48 v #29112 > > 00:23:48 v #29113 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:48 v #29114 > > inl import forall t. (name : string) (file : string) : t = 00:23:48 v #29115 > > real 00:23:48 v #29116 > > $'Fable.Core.JsInterop.import !name !file ' : t 00:23:49 v #29117 > 00:00:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 1767 } 00:23:49 v #29118 > 00:00:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:49 v #29119 > 00:00:06 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.ipynb to html 00:23:49 v #29120 > 00:00:06 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:23:49 v #29121 > 00:00:06 v #7 ! validate(nb) 00:23:50 v #29122 > 00:00:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:23:50 v #29123 > 00:00:06 v #9 ! return _pygments_highlight( 00:23:50 v #29124 > 00:00:06 v #10 ! [NbConvertApp] Writing 278691 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html 00:23:50 v #29125 > 00:00:06 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:23:50 v #29126 > 00:00:06 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:23:50 v #29127 > 00:00:06 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/typescript.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:50 v #29128 > 00:00:06 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:23:50 v #29129 > 00:00:06 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:23:50 v #29130 > 00:00:06 d #16 spiral.run / dib / { exit_code = 0; result_length = 2730 } 00:23:50 d #29131 runtime.execute_with_options_async / { exit_code = 0; output_length = 5501 } 00:23:50 d #38 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path typescript.dib --retries 3 00:23:50 d #29132 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path file_system.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:50 v #29133 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "file_system.dib", "--retries", "3"])) } 00:23:50 v #29134 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:23:52 v #29135 > > 00:23:52 v #29136 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:52 v #29137 > > │ # file_system 00:23:54 v #29138 > > 00:23:54 v #29139 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:54 v #29140 > > open sm'_operators 00:23:54 v #29141 > > open rust 00:23:54 v #29142 > > open rust_operators 00:23:55 v #29143 > > 00:23:55 v #29144 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:55 v #29145 > > //// test 00:23:55 v #29146 > > 00:23:55 v #29147 > > open testing 00:23:55 v #29148 > > 00:23:55 v #29149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:55 v #29150 > > │ ## fsharp 00:23:55 v #29151 > > 00:23:55 v #29152 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:55 v #29153 > > │ ### file_mode 00:23:55 v #29154 > > 00:23:55 v #29155 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:55 v #29156 > > nominal file_mode' = $'System.IO.FileMode' 00:23:55 v #29157 > > 00:23:55 v #29158 > > union file_mode = 00:23:55 v #29159 > > | ModeCreateNew 00:23:55 v #29160 > > | ModeCreate 00:23:55 v #29161 > > | ModeOpen 00:23:55 v #29162 > > | ModeOpenOrCreate 00:23:55 v #29163 > > | Truncate 00:23:55 v #29164 > > | Append 00:23:55 v #29165 > > 00:23:55 v #29166 > > inl file_mode = function 00:23:55 v #29167 > > | ModeCreateNew => $'System.IO.FileMode.CreateNew' : file_mode' 00:23:55 v #29168 > > | ModeCreate => $'System.IO.FileMode.Create' : file_mode' 00:23:55 v #29169 > > | ModeOpen => $'System.IO.FileMode.Open' : file_mode' 00:23:55 v #29170 > > | ModeOpenOrCreate => $'System.IO.FileMode.OpenOrCreate' : file_mode' 00:23:55 v #29171 > > | Truncate => $'System.IO.FileMode.Truncate' : file_mode' 00:23:55 v #29172 > > | Append => $'System.IO.FileMode.Append' : file_mode' 00:23:55 v #29173 > > 00:23:55 v #29174 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:55 v #29175 > > │ ### file_access 00:23:55 v #29176 > > 00:23:55 v #29177 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:55 v #29178 > > nominal file_access' = $'System.IO.FileAccess' 00:23:55 v #29179 > > 00:23:55 v #29180 > > union file_access = 00:23:55 v #29181 > > | AccessRead 00:23:55 v #29182 > > | AccessWrite 00:23:55 v #29183 > > | AccessReadWrite 00:23:55 v #29184 > > 00:23:55 v #29185 > > inl file_access = function 00:23:55 v #29186 > > | AccessRead => $'System.IO.FileAccess.Read' : file_access' 00:23:55 v #29187 > > | AccessWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:23:55 v #29188 > > | AccessReadWrite => $'System.IO.FileAccess.ReadWrite' : file_access' 00:23:55 v #29189 > > 00:23:55 v #29190 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:55 v #29191 > > │ ### file_share 00:23:55 v #29192 > > 00:23:55 v #29193 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:55 v #29194 > > nominal file_share' = $'System.IO.FileShare' 00:23:55 v #29195 > > 00:23:55 v #29196 > > union file_share = 00:23:55 v #29197 > > | ShareNone 00:23:55 v #29198 > > | ShareRead 00:23:55 v #29199 > > | ShareWrite 00:23:55 v #29200 > > | ShareReadWrite 00:23:55 v #29201 > > | ShareDelete 00:23:55 v #29202 > > 00:23:55 v #29203 > > inl file_share = function 00:23:55 v #29204 > > | ShareNone => $'System.IO.FileShare.None' : file_share' 00:23:55 v #29205 > > | ShareRead => $'System.IO.FileShare.Read' : file_share' 00:23:55 v #29206 > > | ShareWrite => $'System.IO.FileShare.Write' : file_share' 00:23:55 v #29207 > > | ShareReadWrite => $'System.IO.FileShare.ReadWrite' : file_share' 00:23:55 v #29208 > > | ShareDelete => $'System.IO.FileShare.Delete' : file_share' 00:23:56 v #29209 > > 00:23:56 v #29210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29211 > > │ ### file_stream 00:23:56 v #29212 > > 00:23:56 v #29213 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29214 > > nominal file_stream' = $'System.IO.FileStream' 00:23:56 v #29215 > > 00:23:56 v #29216 > > inl file_stream (path : string) mode access share : file_stream' = 00:23:56 v #29217 > > run_target function 00:23:56 v #29218 > > | Fsharp (Native) => fun () => 00:23:56 v #29219 > > inl mode = mode |> file_mode 00:23:56 v #29220 > > inl access = access |> file_access 00:23:56 v #29221 > > inl share = share |> file_share 00:23:56 v #29222 > > $'new System.IO.FileStream (!path, !mode, !access, !share)' 00:23:56 v #29223 > > | _ => fun () => null () 00:23:56 v #29224 > > 00:23:56 v #29225 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29226 > > │ ### file_info 00:23:56 v #29227 > > 00:23:56 v #29228 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29229 > > nominal file_info = 00:23:56 v #29230 > > `( 00:23:56 v #29231 > > global "#if FABLE_COMPILER\ntype System_IO_FileInfo = bool\n#else\ntype 00:23:56 v #29232 > > System_IO_FileInfo = System.IO.FileInfo\n#endif\n" 00:23:56 v #29233 > > $'' : $'System_IO_FileInfo' 00:23:56 v #29234 > > ) 00:23:56 v #29235 > > 00:23:56 v #29236 > > inl file_info (path : string) : file_info = 00:23:56 v #29237 > > run_target function 00:23:56 v #29238 > > | Fsharp (Native) => fun () => path |> convert 00:23:56 v #29239 > > | _ => fun () => null () 00:23:56 v #29240 > > 00:23:56 v #29241 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29242 > > │ ### directory_info 00:23:56 v #29243 > > 00:23:56 v #29244 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29245 > > nominal directory_info = 00:23:56 v #29246 > > `( 00:23:56 v #29247 > > global "#if FABLE_COMPILER\ntype System_IO_DirectoryInfo = 00:23:56 v #29248 > > bool\n#else\ntype System_IO_DirectoryInfo = System.IO.DirectoryInfo\n#endif\n" 00:23:56 v #29249 > > $'' : $'System_IO_DirectoryInfo' 00:23:56 v #29250 > > ) 00:23:56 v #29251 > > 00:23:56 v #29252 > > inl directory_info (path : string) : directory_info = 00:23:56 v #29253 > > run_target function 00:23:56 v #29254 > > | Fsharp (Native) => fun () => path |> convert 00:23:56 v #29255 > > | _ => fun () => null () 00:23:56 v #29256 > > 00:23:56 v #29257 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29258 > > │ ### directory_info_exists 00:23:56 v #29259 > > 00:23:56 v #29260 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29261 > > inl directory_info_exists (info : directory_info) : bool = 00:23:56 v #29262 > > run_target function 00:23:56 v #29263 > > | Fsharp (Native) => fun () => info |> $'_.Exists' 00:23:56 v #29264 > > | _ => fun () => null () 00:23:56 v #29265 > > 00:23:56 v #29266 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29267 > > │ ### directory_info_creation_time 00:23:56 v #29268 > > 00:23:56 v #29269 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29270 > > inl directory_info_creation_time (info : directory_info) : date_time.date_time = 00:23:56 v #29271 > > run_target function 00:23:56 v #29272 > > | Fsharp (Native) => fun () => info |> $'_.CreationTime' 00:23:56 v #29273 > > | _ => fun () => null () 00:23:56 v #29274 > > 00:23:56 v #29275 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29276 > > │ ### directory_info_name 00:23:56 v #29277 > > 00:23:56 v #29278 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29279 > > inl directory_info_name (info : directory_info) : string = 00:23:56 v #29280 > > run_target function 00:23:56 v #29281 > > | Fsharp (Native) => fun () => info |> $'_.Name' 00:23:56 v #29282 > > | _ => fun () => null () 00:23:56 v #29283 > > 00:23:56 v #29284 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:56 v #29285 > > │ ### directory_info_full_name 00:23:56 v #29286 > > 00:23:56 v #29287 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:56 v #29288 > > inl directory_info_full_name (info : directory_info) : string = 00:23:56 v #29289 > > run_target function 00:23:56 v #29290 > > | Fsharp (Native) => fun () => info |> $'_.FullName' 00:23:56 v #29291 > > | _ => fun () => null () 00:23:57 v #29292 > > 00:23:57 v #29293 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29294 > > │ ### file_attributes 00:23:57 v #29295 > > 00:23:57 v #29296 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29297 > > nominal file_attributes = $'System.IO.FileAttributes' 00:23:57 v #29298 > > 00:23:57 v #29299 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29300 > > │ ### directory_info_attributes 00:23:57 v #29301 > > 00:23:57 v #29302 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29303 > > let directory_info_attributes (info : directory_info) : file_attributes = 00:23:57 v #29304 > > run_target function 00:23:57 v #29305 > > | Fsharp (Native) => fun () => info |> $'_.Attributes' 00:23:57 v #29306 > > | _ => fun () => null () 00:23:57 v #29307 > > 00:23:57 v #29308 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29309 > > │ ### file_attributes_reparse_point 00:23:57 v #29310 > > 00:23:57 v #29311 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29312 > > let file_attributes_reparse_point () : file_attributes = 00:23:57 v #29313 > > run_target function 00:23:57 v #29314 > > | Fsharp (Native) => fun () => $'`file_attributes.ReparsePoint' 00:23:57 v #29315 > > | _ => fun () => null () 00:23:57 v #29316 > > 00:23:57 v #29317 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29318 > > │ ### file_attributes_has_flag 00:23:57 v #29319 > > 00:23:57 v #29320 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29321 > > let file_attributes_has_flag (flag : file_attributes) (file_attributes : 00:23:57 v #29322 > > file_attributes) : bool = 00:23:57 v #29323 > > run_target function 00:23:57 v #29324 > > | Fsharp (Native) => fun () => $'!file_attributes.HasFlag !flag ' 00:23:57 v #29325 > > | _ => fun () => null () 00:23:57 v #29326 > > 00:23:57 v #29327 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29328 > > │ ### create_directory 00:23:57 v #29329 > > 00:23:57 v #29330 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29331 > > let create_directory (path : string) : directory_info = 00:23:57 v #29332 > > run_target function 00:23:57 v #29333 > > | Fsharp (Native) => fun () => path |> 00:23:57 v #29334 > > $'System.IO.Directory.CreateDirectory' 00:23:57 v #29335 > > | _ => fun () => null () 00:23:57 v #29336 > > 00:23:57 v #29337 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:57 v #29338 > > │ ### directory_get_files 00:23:57 v #29339 > > 00:23:57 v #29340 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:57 v #29341 > > let directory_get_files (path : string) : array_base string = 00:23:57 v #29342 > > run_target function 00:23:57 v #29343 > > | Fsharp (Native) => fun () => path |> $'System.IO.Directory.GetFiles' 00:23:57 v #29344 > > | _ => fun () => null () 00:23:58 v #29345 > > 00:23:58 v #29346 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:58 v #29347 > > │ ### file_move 00:23:58 v #29348 > > 00:23:58 v #29349 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29350 > > let file_move (new_path : string) (old_path : string) : () = 00:23:58 v #29351 > > run_target function 00:23:58 v #29352 > > | Fsharp (Native) => fun () => $'System.IO.File.Move (!old_path, 00:23:58 v #29353 > > !new_path)' 00:23:58 v #29354 > > | _ => fun () => () 00:23:58 v #29355 > > 00:23:58 v #29356 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:58 v #29357 > > │ ### read_all_text_async 00:23:58 v #29358 > > 00:23:58 v #29359 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29360 > > let read_all_text_async (path : string) : _ string = 00:23:58 v #29361 > > run_target function 00:23:58 v #29362 > > | Fsharp (Native) => fun () => path |> 00:23:58 v #29363 > > $'System.IO.File.ReadAllTextAsync' |> async.await_task 00:23:58 v #29364 > > | _ => fun () => null () 00:23:58 v #29365 > > 00:23:58 v #29366 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:58 v #29367 > > │ ### write_all_text_async 00:23:58 v #29368 > > 00:23:58 v #29369 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29370 > > let write_all_text_async (path : string) (text : string) : _ () = 00:23:58 v #29371 > > run_target function 00:23:58 v #29372 > > | Fsharp (Native) => fun () => $'System.IO.File.WriteAllTextAsync 00:23:58 v #29373 > > (!path, !text)' |> async.await_task 00:23:58 v #29374 > > | _ => fun () => null () 00:23:58 v #29375 > > 00:23:58 v #29376 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:58 v #29377 > > │ ### file_system_info 00:23:58 v #29378 > > 00:23:58 v #29379 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29380 > > nominal file_system_info = $'System.IO.FileSystemInfo' 00:23:58 v #29381 > > 00:23:58 v #29382 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:58 v #29383 > > │ ### get_source_directory 00:23:58 v #29384 > > 00:23:58 v #29385 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29386 > > inl get_source_directory () = 00:23:58 v #29387 > > $'__SOURCE_DIRECTORY__' : string 00:23:58 v #29388 > > 00:23:58 v #29389 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:58 v #29390 > > //// test 00:23:58 v #29391 > > 00:23:58 v #29392 > > get_source_directory () 00:23:58 v #29393 > > |> directory_info 00:23:58 v #29394 > > |> directory_info_name 00:23:58 v #29395 > > |> _assert_eq "spiral" 00:23:59 v #29396 > > 00:23:59 v #29397 > > ── [ 811.98ms - stdout ] ─────────────────────────────────────────────────────── 00:23:59 v #29398 > > │ __assert_eq / actual: "spiral" / expected: "spiral" 00:23:59 v #29399 > > │ 00:23:59 v #29400 > > 00:23:59 v #29401 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:59 v #29402 > > │ ## rust 00:23:59 v #29403 > > 00:23:59 v #29404 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:59 v #29405 > > │ ### display 00:23:59 v #29406 > > 00:23:59 v #29407 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:59 v #29408 > > nominal display = 00:23:59 v #29409 > > `( 00:23:59 v #29410 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:23:59 v #29411 > > Fable.Core.Emit(\"std::path::Display\")>]]\ntype std_path_Display = class 00:23:59 v #29412 > > end\n#else\ntype std_path_Display = string\n#endif\n" 00:23:59 v #29413 > > $'' : $'std_path_Display' 00:23:59 v #29414 > > ) 00:23:59 v #29415 > > 00:23:59 v #29416 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:59 v #29417 > > │ ### path 00:23:59 v #29418 > > 00:23:59 v #29419 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:59 v #29420 > > nominal path = 00:23:59 v #29421 > > `( 00:23:59 v #29422 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:23:59 v #29423 > > Fable.Core.Emit(\"std::path::Path\")>]]\n#endif\ntype std_path_Path = class end" 00:23:59 v #29424 > > $'' : $'std_path_Path' 00:23:59 v #29425 > > ) 00:23:59 v #29426 > > 00:23:59 v #29427 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:23:59 v #29428 > > │ ### path_buf 00:23:59 v #29429 > > 00:23:59 v #29430 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:23:59 v #29431 > > nominal path_buf = 00:23:59 v #29432 > > `( 00:23:59 v #29433 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:23:59 v #29434 > > Fable.Core.Emit(\"std::path::PathBuf\")>]]\ntype std_path_PathBuf = class 00:23:59 v #29435 > > end\n#else\ntype std_path_PathBuf = string\n#endif\n" 00:23:59 v #29436 > > $'' : $'std_path_PathBuf' 00:23:59 v #29437 > > ) 00:24:00 v #29438 > > 00:24:00 v #29439 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29440 > > │ ### new_path_buf 00:24:00 v #29441 > > 00:24:00 v #29442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29443 > > inl new_path_buf (path : sm'.std_string) : path_buf = 00:24:00 v #29444 > > run_target function 00:24:00 v #29445 > > | Rust _ => fun () => !\\(path, $'"std::path::PathBuf::from($0)"') 00:24:00 v #29446 > > | _ => fun () => path |> unbox 00:24:00 v #29447 > > 00:24:00 v #29448 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29449 > > │ ### path_buf_from 00:24:00 v #29450 > > 00:24:00 v #29451 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29452 > > inl path_buf_from (path : rust.box path) : path_buf = 00:24:00 v #29453 > > !\\(path, $'"std::path::PathBuf::from($0)"') 00:24:00 v #29454 > > 00:24:00 v #29455 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29456 > > │ ### path_buf_join 00:24:00 v #29457 > > 00:24:00 v #29458 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29459 > > inl path_buf_join (s : string) (path_buf : path_buf) : path_buf = 00:24:00 v #29460 > > !\\((path_buf, s |> sm'.to_std_string), $'"$0.join($1)"') 00:24:00 v #29461 > > 00:24:00 v #29462 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29463 > > │ ### path_buf_strip_prefix 00:24:00 v #29464 > > 00:24:00 v #29465 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29466 > > inl path_buf_strip_prefix (s : string) (path_buf : path_buf) : path_buf = 00:24:00 v #29467 > > !\\((path_buf, s |> sm'.to_std_string), 00:24:00 v #29468 > > $'"$0.strip_prefix($1).unwrap().to_path_buf()"') 00:24:00 v #29469 > > 00:24:00 v #29470 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29471 > > │ ### path_display 00:24:00 v #29472 > > 00:24:00 v #29473 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29474 > > inl path_display (path : rust.ref path) : display = 00:24:00 v #29475 > > !\\(path, $'"$0.display()"') 00:24:00 v #29476 > > 00:24:00 v #29477 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:00 v #29478 > > │ ### path_buf_display 00:24:00 v #29479 > > 00:24:00 v #29480 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:00 v #29481 > > inl path_buf_display (path_buf : path_buf) : display = 00:24:00 v #29482 > > run_target_args (fun () => path_buf) function 00:24:00 v #29483 > > | Rust _ => fun path_buf => !\\(path_buf, $'"$0.display()"') 00:24:00 v #29484 > > | _ => fun path_buf => path_buf |> unbox 00:24:01 v #29485 > > 00:24:01 v #29486 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29487 > > │ ### path_buf_file_name 00:24:01 v #29488 > > 00:24:01 v #29489 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29490 > > inl path_buf_file_name (path : path_buf) : optionm'.option' (rust.ref 00:24:01 v #29491 > > sm'.os_str) = 00:24:01 v #29492 > > !\\(path, $'"$0.file_name()"') 00:24:01 v #29493 > > 00:24:01 v #29494 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29495 > > │ ### path_buf_exists 00:24:01 v #29496 > > 00:24:01 v #29497 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29498 > > inl path_buf_exists (path_buf : path_buf) : bool = 00:24:01 v #29499 > > !\\(path_buf, $'"$0.exists()"') 00:24:01 v #29500 > > 00:24:01 v #29501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29502 > > │ ### path_buf_is_dir 00:24:01 v #29503 > > 00:24:01 v #29504 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29505 > > inl path_buf_is_dir (path_buf : path_buf) : bool = 00:24:01 v #29506 > > !\\(path_buf, $'"$0.is_dir()"') 00:24:01 v #29507 > > 00:24:01 v #29508 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29509 > > │ ### path_buf_is_file 00:24:01 v #29510 > > 00:24:01 v #29511 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29512 > > inl path_buf_is_file (path_buf : path_buf) : bool = 00:24:01 v #29513 > > !\\(path_buf, $'"$0.is_file()"') 00:24:01 v #29514 > > 00:24:01 v #29515 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29516 > > │ ### path_buf_is_symlink 00:24:01 v #29517 > > 00:24:01 v #29518 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29519 > > inl path_buf_is_symlink (path_buf : path_buf) : bool = 00:24:01 v #29520 > > !\\(path_buf, $'"$0.is_symlink()"') 00:24:01 v #29521 > > 00:24:01 v #29522 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:01 v #29523 > > │ ### path_buf_parent 00:24:01 v #29524 > > 00:24:01 v #29525 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:01 v #29526 > > inl path_buf_parent (path_buf : path_buf) : optionm'.option' path_buf = 00:24:01 v #29527 > > !\\(path_buf, $'"$0.parent().map(std::path::PathBuf::from)"') 00:24:02 v #29528 > > 00:24:02 v #29529 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29530 > > │ ### dir_entry 00:24:02 v #29531 > > 00:24:02 v #29532 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29533 > > nominal dir_entry = 00:24:02 v #29534 > > `( 00:24:02 v #29535 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:02 v #29536 > > Fable.Core.Emit(\"async_walkdir::DirEntry\")>]]\n#endif\ntype 00:24:02 v #29537 > > async_walkdir_DirEntry = class end" 00:24:02 v #29538 > > $'' : $'async_walkdir_DirEntry' 00:24:02 v #29539 > > ) 00:24:02 v #29540 > > 00:24:02 v #29541 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29542 > > │ ### walk_dir 00:24:02 v #29543 > > 00:24:02 v #29544 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29545 > > nominal walk_dir = 00:24:02 v #29546 > > `( 00:24:02 v #29547 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:02 v #29548 > > Fable.Core.Emit(\"async_walkdir::WalkDir\")>]]\n#endif\ntype 00:24:02 v #29549 > > async_walkdir_WalkDir = class end" 00:24:02 v #29550 > > $'' : $'async_walkdir_WalkDir' 00:24:02 v #29551 > > ) 00:24:02 v #29552 > > 00:24:02 v #29553 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29554 > > │ ### async_walkdir_filtering 00:24:02 v #29555 > > 00:24:02 v #29556 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29557 > > nominal async_walkdir_filtering = 00:24:02 v #29558 > > `( 00:24:02 v #29559 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:02 v #29560 > > Fable.Core.Emit(\"async_walkdir::Filtering\")>]]\n#endif\ntype 00:24:02 v #29561 > > async_walkdir_Filtering = class end" 00:24:02 v #29562 > > $'' : $'async_walkdir_Filtering' 00:24:02 v #29563 > > ) 00:24:02 v #29564 > > 00:24:02 v #29565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29566 > > │ ### filtering 00:24:02 v #29567 > > 00:24:02 v #29568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29569 > > union filtering = 00:24:02 v #29570 > > | Ignore 00:24:02 v #29571 > > | IgnoreDir 00:24:02 v #29572 > > | Continue 00:24:02 v #29573 > > 00:24:02 v #29574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29575 > > │ ### async_walkdir_error 00:24:02 v #29576 > > 00:24:02 v #29577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29578 > > nominal async_walkdir_error = 00:24:02 v #29579 > > `( 00:24:02 v #29580 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:02 v #29581 > > Fable.Core.Emit(\"async_walkdir::Error\")>]]\n#endif\ntype async_walkdir_Error = 00:24:02 v #29582 > > class end" 00:24:02 v #29583 > > $'' : $'async_walkdir_Error' 00:24:02 v #29584 > > ) 00:24:02 v #29585 > > 00:24:02 v #29586 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29587 > > │ ### new_walk_dir 00:24:02 v #29588 > > 00:24:02 v #29589 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29590 > > inl new_walk_dir (dir : string) : walk_dir = 00:24:02 v #29591 > > !\\(dir, $'"async_walkdir::WalkDir::new(&*$0)"') 00:24:02 v #29592 > > // inl walk_dir : walk_dir = walk_dir |> rust.to_mut 00:24:02 v #29593 > > // (!\($'"true; let mut !walk_dir = !walk_dir"') : bool) |> ignore 00:24:02 v #29594 > > 00:24:02 v #29595 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:02 v #29596 > > │ ### walk_dir_filter 00:24:02 v #29597 > > 00:24:02 v #29598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:02 v #29599 > > inl walk_dir_filter (fn : dir_entry -> async.future_pin_send filtering) 00:24:02 v #29600 > > (walk_dir : walk_dir) : walk_dir = 00:24:02 v #29601 > > inl fn entry = async.new_future_send fun () => 00:24:02 v #29602 > > inl result = fn entry |> async.await_send 00:24:02 v #29603 > > inl filtering : async_walkdir_filtering = 00:24:02 v #29604 > > match result with 00:24:02 v #29605 > > | Ignore => !\($'"async_walkdir::Filtering::Ignore"') 00:24:02 v #29606 > > | IgnoreDir => !\($'"async_walkdir::Filtering::IgnoreDir"') 00:24:02 v #29607 > > | Continue => !\($'"async_walkdir::Filtering::Continue"') 00:24:02 v #29608 > > filtering 00:24:02 v #29609 > > !\\((walk_dir, fn), $'"async_walkdir::WalkDir::filter($0, move |x| $1(x))"') 00:24:03 v #29610 > > 00:24:03 v #29611 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29612 > > │ ### file_type 00:24:03 v #29613 > > 00:24:03 v #29614 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29615 > > nominal file_type = 00:24:03 v #29616 > > `( 00:24:03 v #29617 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:03 v #29618 > > Fable.Core.Emit(\"std::fs::FileType\")>]]\n#endif\ntype std_fs_FileType = class 00:24:03 v #29619 > > end" 00:24:03 v #29620 > > $'' : $'std_fs_FileType' 00:24:03 v #29621 > > ) 00:24:03 v #29622 > > 00:24:03 v #29623 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29624 > > │ ### dir_entry_file_type 00:24:03 v #29625 > > 00:24:03 v #29626 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29627 > > inl dir_entry_file_type (dir_entry : dir_entry) : async.future_pin_send 00:24:03 v #29628 > > (resultm.result' file_type stream.io_error) = 00:24:03 v #29629 > > inl dir_entry = dir_entry |> rust.emit 00:24:03 v #29630 > > !\($'"Box::pin(async_walkdir::DirEntry::file_type(&!dir_entry))"') 00:24:03 v #29631 > > 00:24:03 v #29632 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29633 > > │ ### file_type_is_dir 00:24:03 v #29634 > > 00:24:03 v #29635 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29636 > > inl file_type_is_dir (file_type : file_type) : bool = 00:24:03 v #29637 > > !\\(file_type, $'"std::fs::FileType::is_dir(&$0)"') 00:24:03 v #29638 > > 00:24:03 v #29639 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29640 > > │ ### file 00:24:03 v #29641 > > 00:24:03 v #29642 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29643 > > nominal file = 00:24:03 v #29644 > > `( 00:24:03 v #29645 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:24:03 v #29646 > > Fable.Core.Emit(\"std::fs::File\")>]]\n#endif\ntype std_fs_File = class end" 00:24:03 v #29647 > > $'' : $'std_fs_File' 00:24:03 v #29648 > > ) 00:24:03 v #29649 > > 00:24:03 v #29650 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29651 > > │ ### file_open 00:24:03 v #29652 > > 00:24:03 v #29653 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29654 > > inl file_open (path : string) : resultm.result' file stream.io_error = 00:24:03 v #29655 > > !\($'"std::fs::File::open(&*!path)"') 00:24:03 v #29656 > > 00:24:03 v #29657 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:03 v #29658 > > │ ### rename 00:24:03 v #29659 > > 00:24:03 v #29660 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:03 v #29661 > > inl rename (to : string) (path : string) : resultm.result' () stream.io_error = 00:24:03 v #29662 > > !\($'"std::fs::rename(&*!path, &*!to)"') 00:24:04 v #29663 > > 00:24:04 v #29664 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29665 > > │ ### dir_entry_path 00:24:04 v #29666 > > 00:24:04 v #29667 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29668 > > inl dir_entry_path (dir_entry : dir_entry) : path_buf = 00:24:04 v #29669 > > !\\(dir_entry, $'"async_walkdir::DirEntry::path(&$0)"') 00:24:04 v #29670 > > 00:24:04 v #29671 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29672 > > │ ### create_dir_all 00:24:04 v #29673 > > 00:24:04 v #29674 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29675 > > inl create_dir_all (path : string) : resultm.result' () stream.io_error = 00:24:04 v #29676 > > !\\(path, $'"std::fs::create_dir_all(&*$0)"') 00:24:04 v #29677 > > 00:24:04 v #29678 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29679 > > │ ### file_info_link_target 00:24:04 v #29680 > > 00:24:04 v #29681 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29682 > > inl file_info_link_target (file_info : file_info) : string = 00:24:04 v #29683 > > run_target function 00:24:04 v #29684 > > | Fsharp (Native) => fun () => 00:24:04 v #29685 > > file_info |> $'_.LinkTarget' 00:24:04 v #29686 > > | _ => fun () => null () 00:24:04 v #29687 > > 00:24:04 v #29688 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29689 > > │ ### read 00:24:04 v #29690 > > 00:24:04 v #29691 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29692 > > inl read (path : string) : resultm.result' (am'.vec u8) stream.io_error = 00:24:04 v #29693 > > !\\(path, $'"std::fs::read(&*$0)"') 00:24:04 v #29694 > > 00:24:04 v #29695 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29696 > > │ ## typescript 00:24:04 v #29697 > > 00:24:04 v #29698 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29699 > > │ ### ts_path_join 00:24:04 v #29700 > > 00:24:04 v #29701 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29702 > > inl ts_path_join (b : string) (a : string) : string = 00:24:04 v #29703 > > open typescript_operators 00:24:04 v #29704 > > global "type IPathJoin = abstract join: [[<System.ParamArray>]] paths: 00:24:04 v #29705 > > string[[]] -> string" 00:24:04 v #29706 > > inl path : $'IPathJoin' = typescript.import_all "path" 00:24:04 v #29707 > > !\\((a, b), $'"!path.join($0, $1)"') 00:24:04 v #29708 > > 00:24:04 v #29709 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29710 > > │ ## file_system 00:24:04 v #29711 > > 00:24:04 v #29712 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:04 v #29713 > > │ ### (< />) 00:24:04 v #29714 > > 00:24:04 v #29715 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:04 v #29716 > > let (</>) (a : string) (b : string) : string = 00:24:04 v #29717 > > run_target_args (fun () => a, b) function 00:24:04 v #29718 > > | Rust (Contract) => fun _ => null () 00:24:04 v #29719 > > | Rust (Native) => fun a, b => 00:24:04 v #29720 > > a 00:24:04 v #29721 > > |> sm'.to_std_string 00:24:04 v #29722 > > |> new_path_buf 00:24:04 v #29723 > > |> path_buf_join b 00:24:04 v #29724 > > |> path_buf_display 00:24:04 v #29725 > > |> sm'.format' 00:24:04 v #29726 > > |> sm'.from_std_string 00:24:04 v #29727 > > | TypeScript (Native) => fun a, b => 00:24:04 v #29728 > > a |> ts_path_join b 00:24:04 v #29729 > > | Fsharp (Native) => fun a, b => 00:24:04 v #29730 > > $'System.IO.Path.Combine (!a, !b)' 00:24:04 v #29731 > > | target => fun a, b => failwith $'$"file_system.(</>) / target: 00:24:04 v #29732 > > {!target} / a: {!a} / b: {!b}"' 00:24:05 v #29733 > > 00:24:05 v #29734 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29735 > > │ ### get_temp_path 00:24:05 v #29736 > > 00:24:05 v #29737 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29738 > > let get_temp_path () : string = 00:24:05 v #29739 > > run_target function 00:24:05 v #29740 > > | Rust (Contract) => fun () => null () 00:24:05 v #29741 > > | Rust (Native) => fun () => 00:24:05 v #29742 > > !\($'"std::env::temp_dir()"') 00:24:05 v #29743 > > |> path_buf_display 00:24:05 v #29744 > > |> sm'.format' 00:24:05 v #29745 > > |> sm'.from_std_string 00:24:05 v #29746 > > | Fsharp (Native) => fun () => 00:24:05 v #29747 > > $'System.IO.Path.GetTempPath' () 00:24:05 v #29748 > > | target => fun () => failwith $'$"file_system.get_temp_path / target: 00:24:05 v #29749 > > {!target}"' 00:24:05 v #29750 > > 00:24:05 v #29751 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29752 > > │ ### get_file_name 00:24:05 v #29753 > > 00:24:05 v #29754 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29755 > > let get_file_name (path : string) : string = 00:24:05 v #29756 > > run_target_args' path function 00:24:05 v #29757 > > | Fsharp (Native) => fun path => 00:24:05 v #29758 > > path |> $'System.IO.Path.GetFileName' 00:24:05 v #29759 > > | Rust (Native) => fun path => 00:24:05 v #29760 > > path 00:24:05 v #29761 > > |> sm'.to_std_string 00:24:05 v #29762 > > |> new_path_buf 00:24:05 v #29763 > > |> path_buf_file_name 00:24:05 v #29764 > > |> optionm'.map' sm'.from_os_str_ref 00:24:05 v #29765 > > |> optionm'.unbox 00:24:05 v #29766 > > |> optionm'.default_value "" 00:24:05 v #29767 > > | Rust (Contract) => fun _ => null () 00:24:05 v #29768 > > | target => fun path => failwith $'$"file_system.get_file_name / target: 00:24:05 v #29769 > > {!target} / path: {!path}"' 00:24:05 v #29770 > > 00:24:05 v #29771 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29772 > > │ ### get_file_name_without_extension 00:24:05 v #29773 > > 00:24:05 v #29774 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29775 > > let get_file_name_without_extension (path : string) : string = 00:24:05 v #29776 > > run_target_args' path function 00:24:05 v #29777 > > | Rust (Contract) => fun _ => null () 00:24:05 v #29778 > > | Rust (Native) => fun path => 00:24:05 v #29779 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:24:05 v #29780 > > inl file_stem = !\\(path_buf, $'"$0.file_stem()"') 00:24:05 v #29781 > > match file_stem |> optionm'.map' sm'.from_os_str_ref |> 00:24:05 v #29782 > > optionm'.unbox with 00:24:05 v #29783 > > | Some file_stem => file_stem 00:24:05 v #29784 > > | None => "" 00:24:05 v #29785 > > | _ => fun path => 00:24:05 v #29786 > > path |> $'System.IO.Path.GetFileNameWithoutExtension' 00:24:05 v #29787 > > 00:24:05 v #29788 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29789 > > │ ### get_directory_name 00:24:05 v #29790 > > 00:24:05 v #29791 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29792 > > let get_directory_name (path : string) : string = 00:24:05 v #29793 > > run_target_args' path function 00:24:05 v #29794 > > | Fsharp _ => fun path => 00:24:05 v #29795 > > path |> $'System.IO.Path.GetDirectoryName' 00:24:05 v #29796 > > | Rust (Native) => fun path => 00:24:05 v #29797 > > path 00:24:05 v #29798 > > |> sm'.to_std_string 00:24:05 v #29799 > > |> new_path_buf 00:24:05 v #29800 > > |> path_buf_file_name 00:24:05 v #29801 > > |> optionm'.map' sm'.from_os_str_ref 00:24:05 v #29802 > > |> optionm'.unbox 00:24:05 v #29803 > > |> optionm'.default_value "" 00:24:05 v #29804 > > | _ => fun _ => null () 00:24:05 v #29805 > > 00:24:05 v #29806 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29807 > > │ ### get_extension 00:24:05 v #29808 > > 00:24:05 v #29809 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29810 > > let get_extension (path : string) : string = 00:24:05 v #29811 > > run_target_args' path function 00:24:05 v #29812 > > | Rust (Contract) => fun _ => null () 00:24:05 v #29813 > > | Rust (Native) => fun path => 00:24:05 v #29814 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:24:05 v #29815 > > !\\(path_buf, $'"$0.extension()"') 00:24:05 v #29816 > > |> optionm'.unwrap 00:24:05 v #29817 > > |> sm'.from_os_str_ref 00:24:05 v #29818 > > | _ => fun path => 00:24:05 v #29819 > > path |> $'System.IO.Path.GetExtension' 00:24:05 v #29820 > > 00:24:05 v #29821 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:05 v #29822 > > │ ### directory_separator_char 00:24:05 v #29823 > > 00:24:05 v #29824 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:05 v #29825 > > let directory_separator_char () : char = 00:24:05 v #29826 > > run_target function 00:24:05 v #29827 > > | Rust (Native) => fun () => !\($'"std::path::MAIN_SEPARATOR"') 00:24:05 v #29828 > > | _ => fun () => $'System.IO.Path.DirectorySeparatorChar' 00:24:06 v #29829 > > 00:24:06 v #29830 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:06 v #29831 > > │ ### get_current_directory 00:24:06 v #29832 > > 00:24:06 v #29833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:06 v #29834 > > let get_current_directory () : string = 00:24:06 v #29835 > > run_target function 00:24:06 v #29836 > > | Rust (Contract | Wasm) => fun () => null () 00:24:06 v #29837 > > | Rust (Native) => fun () => 00:24:06 v #29838 > > inl current_dir = !\($'"std::env::current_dir()"') : resultm.result' 00:24:06 v #29839 > > path_buf stream.io_error 00:24:06 v #29840 > > current_dir 00:24:06 v #29841 > > |> resultm.unwrap' 00:24:06 v #29842 > > |> path_buf_display 00:24:06 v #29843 > > |> sm'.format' 00:24:06 v #29844 > > |> sm'.from_std_string 00:24:06 v #29845 > > | Fsharp (Native) => fun () => 00:24:06 v #29846 > > $'System.IO.Directory.GetCurrentDirectory' () 00:24:06 v #29847 > > | _ => fun () => null () 00:24:06 v #29848 > > 00:24:06 v #29849 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:06 v #29850 > > //// test 00:24:06 v #29851 > > 00:24:06 v #29852 > > get_current_directory () 00:24:06 v #29853 > > |> _assert_contains (directory_separator_char ()) 00:24:06 v #29854 > > 00:24:06 v #29855 > > ── [ 453.28ms - stdout ] ─────────────────────────────────────────────────────── 00:24:06 v #29856 > > │ __assert_contains / actual: 00:24:06 v #29857 > > "/home/runner/work/polyglot/polyglot/lib/spiral" / expected: '/' 00:24:06 v #29858 > > │ 00:24:06 v #29859 > > 00:24:06 v #29860 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:06 v #29861 > > │ ### directory_exists 00:24:06 v #29862 > > 00:24:06 v #29863 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:06 v #29864 > > let directory_exists (path : string) : bool = 00:24:06 v #29865 > > run_target_args' path function 00:24:06 v #29866 > > | Fsharp (Native) => fun path => 00:24:06 v #29867 > > path |> $'System.IO.Directory.Exists' 00:24:06 v #29868 > > | Rust (Native) => fun path => 00:24:06 v #29869 > > inl path = path |> sm'.to_std_string |> new_path_buf 00:24:06 v #29870 > > path_buf_exists path && path_buf_is_dir path 00:24:06 v #29871 > > | TypeScript (Native) => fun path => 00:24:06 v #29872 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:24:06 v #29873 > > bool" 00:24:06 v #29874 > > open typescript_operators 00:24:06 v #29875 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:24:06 v #29876 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:24:06 v #29877 > > | _ => fun _ => null () 00:24:06 v #29878 > > 00:24:06 v #29879 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:06 v #29880 > > │ ### directory_get_parent 00:24:06 v #29881 > > 00:24:06 v #29882 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:06 v #29883 > > let directory_get_parent (path : string) : optionm'.option' string = 00:24:06 v #29884 > > run_target_args' path function 00:24:06 v #29885 > > | Fsharp (Native) => fun path => 00:24:06 v #29886 > > inl parent : directory_info = path |> 00:24:06 v #29887 > > $'System.IO.Directory.GetParent' 00:24:06 v #29888 > > if parent =. null () 00:24:06 v #29889 > > then None 00:24:06 v #29890 > > else parent |> directory_info_full_name |> Some 00:24:06 v #29891 > > |> optionm'.box 00:24:06 v #29892 > > | Rust (Native) => fun path => 00:24:06 v #29893 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:24:06 v #29894 > > inl parent = path_buf |> path_buf_parent 00:24:06 v #29895 > > parent 00:24:06 v #29896 > > |> optionm'.map' (path_buf_display >> sm'.format' >> 00:24:06 v #29897 > > sm'.from_std_string) 00:24:06 v #29898 > > | TypeScript _ => fun path => 00:24:06 v #29899 > > open typescript_operators 00:24:06 v #29900 > > global "type IPathDirname = abstract dirname: path: string -> 00:24:06 v #29901 > > string" 00:24:06 v #29902 > > inl fs : $'IPathDirname' = typescript.import_all "path" 00:24:06 v #29903 > > !\\(path, $'"!fs.dirname($0)"') |> Some |> optionm'.box 00:24:06 v #29904 > > | _ => fun _ => null () 00:24:07 v #29905 > > 00:24:07 v #29906 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:07 v #29907 > > │ ### create_temp_path' 00:24:07 v #29908 > > 00:24:07 v #29909 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:07 v #29910 > > let create_temp_path' (guid : guid.guid) = 00:24:07 v #29911 > > run_target_args' guid function 00:24:07 v #29912 > > | Rust (Contract) => fun _ => null () 00:24:07 v #29913 > > | _ => fun guid => 00:24:07 v #29914 > > get_temp_path () 00:24:07 v #29915 > > </> join "!create_temp_path_" 00:24:07 v #29916 > > </> (env.get_entry_assembly_name ()) 00:24:07 v #29917 > > </> (guid |> sm'.obj_to_string) 00:24:07 v #29918 > > 00:24:07 v #29919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:07 v #29920 > > //// test 00:24:07 v #29921 > > ///! fsharp 00:24:07 v #29922 > > ///! rust -d chrono 00:24:07 v #29923 > > 00:24:07 v #29924 > > guid.hash_guid "" 00:24:07 v #29925 > > |> create_temp_path' 00:24:07 v #29926 > > |> _assert_contains (directory_separator_char ()) 00:24:14 v #29927 > > 00:24:14 v #29928 > > ── [ 6.81s - return value ] ──────────────────────────────────────────────────── 00:24:14 v #29929 > > │ .rs output (rust -d chrono): 00:24:14 v #29930 > > │ __assert_contains / actual: 00:24:14 v #29931 > > "/tmp/!create_temp_path_/spiral_a91033c289203d6116e67bba253db81c55521ee192297005 00:24:14 v #29932 > > e965f38074b89344/00000000-0000-0000-0000-000000000000" / expected: '/' 00:24:14 v #29933 > > │ 00:24:14 v #29934 > > │ 00:24:14 v #29935 > > 00:24:14 v #29936 > > ── [ 6.81s - stdout ] ────────────────────────────────────────────────────────── 00:24:14 v #29937 > > │ .fsx output: 00:24:14 v #29938 > > │ __assert_contains / actual: 00:24:14 v #29939 > > "/tmp/!create_temp_path_/dotnet-repl/00000000-0000-0000-0000-000000000000" 00:24:14 v #29940 > > expected: '/' 00:24:14 v #29941 > > │ 00:24:14 v #29942 > > 00:24:14 v #29943 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #29944 > > │ ### create_temp_path 00:24:14 v #29945 > > 00:24:14 v #29946 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #29947 > > let create_temp_path () = 00:24:14 v #29948 > > run_target function 00:24:14 v #29949 > > | Rust (Contract) => fun () => null () 00:24:14 v #29950 > > | _ => fun () => 00:24:14 v #29951 > > date_time.now () 00:24:14 v #29952 > > |> date_time.new_guid_from_date_time 00:24:14 v #29953 > > |> create_temp_path' 00:24:14 v #29954 > > 00:24:14 v #29955 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #29956 > > │ ### file_copy 00:24:14 v #29957 > > 00:24:14 v #29958 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #29959 > > let file_copy (new_path : string) (old_path : string) : () = 00:24:14 v #29960 > > run_target_args' (old_path, new_path) function 00:24:14 v #29961 > > | Fsharp (Native) => fun old_path, new_path => 00:24:14 v #29962 > > $'System.IO.File.Copy (!old_path, !new_path, true)' 00:24:14 v #29963 > > | Rust (Native) => fun old_path, new_path => 00:24:14 v #29964 > > inl result : _ _ stream.io_error = !\\((old_path, new_path), 00:24:14 v #29965 > > $'"std::fs::copy(&*$0, &*$1)"') 00:24:14 v #29966 > > match result |> resultm.map_error' sm'.format' |> resultm.unbox with 00:24:14 v #29967 > > | Ok (result : u64) => 00:24:14 v #29968 > > trace Debug 00:24:14 v #29969 > > fun () => "file_system.file_copy" 00:24:14 v #29970 > > fun () => { old_path new_path result } 00:24:14 v #29971 > > | Error error => 00:24:14 v #29972 > > trace Warning 00:24:14 v #29973 > > fun () => "file_system.file_copy" 00:24:14 v #29974 > > fun () => { old_path new_path error } 00:24:14 v #29975 > > | _ => fun _ => () 00:24:14 v #29976 > > 00:24:14 v #29977 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #29978 > > │ ### file_exists 00:24:14 v #29979 > > 00:24:14 v #29980 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #29981 > > let file_exists (path : string) : bool = 00:24:14 v #29982 > > run_target_args' path function 00:24:14 v #29983 > > | Fsharp (Native) => fun path => 00:24:14 v #29984 > > path |> $'System.IO.File.Exists' 00:24:14 v #29985 > > | Rust (Native) => fun path => 00:24:14 v #29986 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:24:14 v #29987 > > path_buf_exists path_buf && path_buf_is_file path_buf 00:24:14 v #29988 > > | TypeScript (Native) => fun path => 00:24:14 v #29989 > > open typescript_operators 00:24:14 v #29990 > > global "type IFsExistsSync = abstract existsSync: path: string -> 00:24:14 v #29991 > > bool" 00:24:14 v #29992 > > inl fs : $'IFsExistsSync' = typescript.import_all "fs" 00:24:14 v #29993 > > !\\((fs, path), $'"$0.existsSync($1)"') 00:24:14 v #29994 > > | _ => fun _ => null () 00:24:14 v #29995 > > 00:24:14 v #29996 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #29997 > > │ ### directory_delete 00:24:14 v #29998 > > 00:24:14 v #29999 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #30000 > > let directory_delete recursive (path : string) : () = 00:24:14 v #30001 > > run_target_args' (path, recursive) function 00:24:14 v #30002 > > | Fsharp (Native) => fun path, recursive => 00:24:14 v #30003 > > $'System.IO.Directory.Delete (!path, !recursive)' 00:24:14 v #30004 > > | Rust (Native) => fun path, recursive => 00:24:14 v #30005 > > if path |> directory_exists then 00:24:14 v #30006 > > if recursive 00:24:14 v #30007 > > then !\\(path, $'"std::fs::remove_dir_all(&*$0).unwrap()"') 00:24:14 v #30008 > > else !\\(path, $'"std::fs::remove_dir(&*$0).unwrap()"') 00:24:14 v #30009 > > | _ => fun _ => () 00:24:14 v #30010 > > 00:24:14 v #30011 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #30012 > > │ ### write_all_text 00:24:14 v #30013 > > 00:24:14 v #30014 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #30015 > > inl write_all_text (path : string) (text : string) : () = 00:24:14 v #30016 > > run_target_args' (path, text) function 00:24:14 v #30017 > > | Fsharp (Native) => fun path, text => 00:24:14 v #30018 > > $'System.IO.File.WriteAllText (!path, !text)' 00:24:14 v #30019 > > | Rust (Native) => fun path, text => 00:24:14 v #30020 > > !\\((path, text), $'"std::fs::write(&*$0, &*$1).unwrap()"') 00:24:14 v #30021 > > | _ => fun _ => () 00:24:14 v #30022 > > 00:24:14 v #30023 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #30024 > > │ ### read_all_bytes 00:24:14 v #30025 > > 00:24:14 v #30026 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #30027 > > inl read_all_bytes (path : string) : am'.vec u8 = 00:24:14 v #30028 > > run_target function 00:24:14 v #30029 > > | Fsharp (Native) => fun () => 00:24:14 v #30030 > > $'!path |> System.IO.File.ReadAllBytes' 00:24:14 v #30031 > > |> am'.to_vec 00:24:14 v #30032 > > | Rust (Native) => fun () => 00:24:14 v #30033 > > path |> read |> resultm.unwrap' 00:24:14 v #30034 > > | _ => fun () => null () 00:24:14 v #30035 > > 00:24:14 v #30036 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:14 v #30037 > > │ ### read_all_text 00:24:14 v #30038 > > 00:24:14 v #30039 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:14 v #30040 > > inl read_all_text (path : string) : string = 00:24:14 v #30041 > > run_target function 00:24:14 v #30042 > > | Fsharp (Native) => fun () => 00:24:14 v #30043 > > $'!path |> System.IO.File.ReadAllText' 00:24:14 v #30044 > > | Rust (Native) => fun () => 00:24:14 v #30045 > > path 00:24:14 v #30046 > > |> read_all_bytes 00:24:14 v #30047 > > |> sm'.string_from_utf8 00:24:14 v #30048 > > |> resultm.unwrap' 00:24:14 v #30049 > > |> sm'.from_std_string 00:24:14 v #30050 > > | _ => fun () => null () 00:24:15 v #30051 > > 00:24:15 v #30052 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:15 v #30053 > > │ ### directory_create_symbolic_link 00:24:15 v #30054 > > 00:24:15 v #30055 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30056 > > inl directory_create_symbolic_link (target : string) (path : string) : () = 00:24:15 v #30057 > > run_target function 00:24:15 v #30058 > > | Fsharp (Native) => fun () => 00:24:15 v #30059 > > ($'System.IO.Directory.CreateSymbolicLink (!path, !target)' : 00:24:15 v #30060 > > file_system_info) 00:24:15 v #30061 > > |> ignore 00:24:15 v #30062 > > | Rust (Native) => fun () => 00:24:15 v #30063 > > (!\\((target, path), $'"true; #[[cfg(windows)]] 00:24:15 v #30064 > > std::os::windows::fs::symlink_dir(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:24:15 v #30065 > > (!\\((target, path), $'"true; #[[cfg(unix)]] 00:24:15 v #30066 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:24:15 v #30067 > > | _ => fun () => () 00:24:15 v #30068 > > 00:24:15 v #30069 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:15 v #30070 > > │ ### file_create_symbolic_link 00:24:15 v #30071 > > 00:24:15 v #30072 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30073 > > inl file_create_symbolic_link (target : string) (path : string) : () = 00:24:15 v #30074 > > run_target function 00:24:15 v #30075 > > | Fsharp (Native) => fun () => 00:24:15 v #30076 > > ($'System.IO.File.CreateSymbolicLink (!path, !target)' : 00:24:15 v #30077 > > file_system_info) 00:24:15 v #30078 > > |> ignore 00:24:15 v #30079 > > | Rust (Native) => fun () => 00:24:15 v #30080 > > (!\\((target, path), $'"true; #[[cfg(windows)]] 00:24:15 v #30081 > > std::os::windows::fs::symlink_file(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:24:15 v #30082 > > (!\\((target, path), $'"true; #[[cfg(unix)]] 00:24:15 v #30083 > > std::os::unix::fs::symlink(&*$0, &*$1).unwrap()"') : bool) |> ignore 00:24:15 v #30084 > > | _ => fun () => () 00:24:15 v #30085 > > 00:24:15 v #30086 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:15 v #30087 > > │ ### file_type 00:24:15 v #30088 > > 00:24:15 v #30089 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30090 > > union file_type = 00:24:15 v #30091 > > | File 00:24:15 v #30092 > > | Directory 00:24:15 v #30093 > > 00:24:15 v #30094 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:15 v #30095 > > │ ### find_parent 00:24:15 v #30096 > > 00:24:15 v #30097 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30098 > > inl find_parent file_type name root_dir = 00:24:15 v #30099 > > inl is_file = file_type = File 00:24:15 v #30100 > > let rec loop dir = 00:24:15 v #30101 > > if dir </> name |> (if is_file then file_exists else directory_exists) 00:24:15 v #30102 > > then dir |> Ok 00:24:15 v #30103 > > else 00:24:15 v #30104 > > inl result = dir |> directory_get_parent 00:24:15 v #30105 > > match result |> optionm'.unbox with 00:24:15 v #30106 > > | Some parent => parent |> loop 00:24:15 v #30107 > > | None => ($'$"""No parent for {if !is_file then "file" else "dir"} 00:24:15 v #30108 > > \'{!name}\' at \'{!root_dir}\' (until \'{!dir}\')"""' : string) |> Error 00:24:15 v #30109 > > loop root_dir 00:24:15 v #30110 > > 00:24:15 v #30111 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:15 v #30112 > > //// test 00:24:15 v #30113 > > 00:24:15 v #30114 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]] 00:24:15 v #30115 > > |> am.map fun file_type, file => 00:24:15 v #30116 > > get_source_directory () 00:24:15 v #30117 > > |> find_parent file_type file 00:24:15 v #30118 > > |> resultm.get 00:24:15 v #30119 > > |> directory_info 00:24:15 v #30120 > > |> directory_info_name 00:24:15 v #30121 > > |> am'.distinct 00:24:15 v #30122 > > |> fun (a x : _ int _) => x 00:24:15 v #30123 > > |> _assert_eq' ;[[ "polyglot" ]] 00:24:16 v #30124 > > 00:24:16 v #30125 > > ── [ 395.94ms - stdout ] ─────────────────────────────────────────────────────── 00:24:16 v #30126 > > │ __assert_eq' / actual: [|"polyglot"|] / expected: 00:24:16 v #30127 > > [|"polyglot"|] 00:24:16 v #30128 > > │ 00:24:16 v #30129 > > 00:24:16 v #30130 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:16 v #30131 > > //// test 00:24:16 v #30132 > > ///! rust 00:24:16 v #30133 > > 00:24:16 v #30134 > > a ;[[ Directory, ".paket"; File, "paket.dependencies" ]] 00:24:16 v #30135 > > |> am.map fun file_type, file => 00:24:16 v #30136 > > fun () => 00:24:16 v #30137 > > join 00:24:16 v #30138 > > get_source_directory () 00:24:16 v #30139 > > |> find_parent file_type file 00:24:16 v #30140 > > |> resultm.get 00:24:16 v #30141 > > |> sm'.to_std_string 00:24:16 v #30142 > > |> new_path_buf 00:24:16 v #30143 > > |> path_buf_file_name 00:24:16 v #30144 > > |> optionm'.try' 00:24:16 v #30145 > > |> sm'.from_os_str_ref 00:24:16 v #30146 > > |> Some 00:24:16 v #30147 > > |> optionm'.box 00:24:16 v #30148 > > |> fun x => x () |> optionm'.unbox 00:24:16 v #30149 > > |> optionm'.default_value "" 00:24:16 v #30150 > > |> am'.distinct 00:24:16 v #30151 > > |> fun result => 00:24:16 v #30152 > > result |> am'.length |> _assert_eq 1i32 00:24:16 v #30153 > > index result 0i32 |> _assert_eq "polyglot" 00:24:22 v #30154 > > 00:24:22 v #30155 > > ── [ 6.60s - return value ] ──────────────────────────────────────────────────── 00:24:22 v #30156 > > │ __assert_eq / actual: 1 / expected: 1 00:24:22 v #30157 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" 00:24:22 v #30158 > > │ 00:24:22 v #30159 > > 00:24:22 v #30160 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:22 v #30161 > > │ ### get_workspace_root 00:24:22 v #30162 > > 00:24:22 v #30163 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:22 v #30164 > > inl get_workspace_root () = 00:24:22 v #30165 > > (None, [[ get_source_directory; get_current_directory ]]) 00:24:22 v #30166 > > ||> listm.fold fun acc path => 00:24:22 v #30167 > > match acc with 00:24:22 v #30168 > > | Some path => Some path 00:24:22 v #30169 > > | None => 00:24:22 v #30170 > > path () 00:24:22 v #30171 > > |> find_parent Directory ("polyglot" </> "workspace") 00:24:22 v #30172 > > |> function 00:24:22 v #30173 > > | Ok path => Some path 00:24:22 v #30174 > > | Error error => 00:24:22 v #30175 > > trace Warning 00:24:22 v #30176 > > fun () => "file_system.get_workspace_root" 00:24:22 v #30177 > > fun () => { error } 00:24:22 v #30178 > > None 00:24:22 v #30179 > > |> optionm.value 00:24:22 v #30180 > > |> fun root => root </> "polyglot" 00:24:23 v #30181 > > 00:24:23 v #30182 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:23 v #30183 > > │ ### get_workspace_root_external 00:24:23 v #30184 > > 00:24:23 v #30185 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:23 v #30186 > > inl get_workspace_root_external () = 00:24:23 v #30187 > > inl workspace_root = get_workspace_root () 00:24:23 v #30188 > > inl current_dir = get_current_directory () |> sm'.to_lower 00:24:23 v #30189 > > inl workspace_root = workspace_root |> sm'.to_lower 00:24:23 v #30190 > > if current_dir |> sm'.starts_with workspace_root 00:24:23 v #30191 > > then Error workspace_root 00:24:23 v #30192 > > else Ok workspace_root 00:24:23 v #30193 > > 00:24:23 v #30194 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:23 v #30195 > > //// test 00:24:23 v #30196 > > 00:24:23 v #30197 > > get_workspace_root_external () 00:24:23 v #30198 > > |> resultm.unwrap_err 00:24:23 v #30199 > > |> get_file_name 00:24:23 v #30200 > > |> _assert_eq "polyglot" 00:24:23 v #30201 > > 00:24:23 v #30202 > > ── [ 591.45ms - stdout ] ─────────────────────────────────────────────────────── 00:24:23 v #30203 > > │ __assert_eq / actual: "polyglot" / expected: "polyglot" 00:24:23 v #30204 > > │ 00:24:23 v #30205 > > 00:24:23 v #30206 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:23 v #30207 > > │ ### file_delete 00:24:23 v #30208 > > 00:24:23 v #30209 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:23 v #30210 > > inl file_delete (path : string) : () = 00:24:23 v #30211 > > run_target function 00:24:23 v #30212 > > | Fsharp (Native) => fun () => 00:24:23 v #30213 > > path |> $'System.IO.File.Delete' 00:24:23 v #30214 > > | Rust (Native) => fun () => 00:24:23 v #30215 > > !\\(path, $'"std::fs::remove_file(&*$0).unwrap()"') 00:24:23 v #30216 > > | _ => fun () => () 00:24:23 v #30217 > > 00:24:23 v #30218 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:23 v #30219 > > │ ### read_link 00:24:23 v #30220 > > 00:24:23 v #30221 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:23 v #30222 > > let read_link (path : string) : resultm.result' path_buf stream.io_error = 00:24:23 v #30223 > > let run loop n error path' = 00:24:23 v #30224 > > inl name = path' |> get_file_name 00:24:23 v #30225 > > inl parent = path' |> directory_get_parent |> optionm'.unbox 00:24:23 v #30226 > > inl error'' = error |> sm'.format 00:24:23 v #30227 > > match parent with 00:24:23 v #30228 > > | _ when n >= 11 => 00:24:23 v #30229 > > ($'$"file_system.read_link / "' : string) 00:24:23 v #30230 > > +. $'$"path: {!path} / n: {!n} / path\': {!path'} / name: {!name}"' 00:24:23 v #30231 > > |> stream.new_io_error 00:24:23 v #30232 > > |> resultm.err 00:24:23 v #30233 > > | Some parent when path' <>. "" => 00:24:23 v #30234 > > match loop (n + 1) parent |> resultm.map_error' sm'.format |> 00:24:23 v #30235 > > resultm.unbox with 00:24:23 v #30236 > > | Ok parent' => 00:24:23 v #30237 > > (parent' |> path_buf_display |> convert) </> name 00:24:23 v #30238 > > |> sm'.to_std_string 00:24:23 v #30239 > > |> new_path_buf 00:24:23 v #30240 > > |> resultm.ok'' 00:24:23 v #30241 > > | Error error' => 00:24:23 v #30242 > > ($'$"file_system.read_link / "' : string) 00:24:23 v #30243 > > +. $'$"error\': {!error'} / error: {!error''} / name: {!name}"' 00:24:23 v #30244 > > |> stream.new_io_error 00:24:23 v #30245 > > |> resultm.err 00:24:23 v #30246 > > | _ => 00:24:23 v #30247 > > ($'$"file_system.read_link / run / The file or directory is not a 00:24:23 v #30248 > > reparse point. / "' : string) 00:24:23 v #30249 > > +. $'$"path: {!path} / error: {!error''} / path\': {!path'} / name: 00:24:23 v #30250 > > {!name}"' 00:24:23 v #30251 > > |> stream.new_io_error 00:24:23 v #30252 > > |> resultm.err 00:24:23 v #30253 > > 00:24:23 v #30254 > > run_target function 00:24:23 v #30255 > > | Rust _ => fun () => 00:24:23 v #30256 > > if path |> directory_exists 00:24:23 v #30257 > > then !\\(path, $'"std::fs::read_link(&*$0)"') 00:24:23 v #30258 > > else 00:24:23 v #30259 > > let rec loop n path' = 00:24:23 v #30260 > > run_target function 00:24:23 v #30261 > > | Rust _ => fun () => 00:24:23 v #30262 > > inl result : _ _ stream.io_error = !\\(path', 00:24:23 v #30263 > > $'"std::fs::read_link(&*$0)"') 00:24:23 v #30264 > > inl result = result |> resultm.map_error' sm'.format 00:24:23 v #30265 > > |> resultm.unbox 00:24:23 v #30266 > > match result with 00:24:23 v #30267 > > | Ok x => x |> resultm.ok'' 00:24:23 v #30268 > > | Error error => path' |> run loop n error 00:24:23 v #30269 > > | _ => fun () => null () 00:24:23 v #30270 > > path |> loop 0u8 00:24:23 v #30271 > > | TypeScript _ => fun () => null () 00:24:23 v #30272 > > | Fsharp _ => fun () => 00:24:23 v #30273 > > let rec loop n path' = 00:24:23 v #30274 > > inl result = 00:24:23 v #30275 > > path' 00:24:23 v #30276 > > |> directory_info 00:24:23 v #30277 > > |> directory_info_attributes 00:24:23 v #30278 > > |> file_attributes_has_flag (file_attributes_reparse_point 00:24:23 v #30279 > > ()) 00:24:23 v #30280 > > if result then 00:24:23 v #30281 > > path' 00:24:23 v #30282 > > |> file_info 00:24:23 v #30283 > > |> file_info_link_target 00:24:23 v #30284 > > |> unbox 00:24:23 v #30285 > > |> resultm.ok'' 00:24:23 v #30286 > > else 00:24:23 v #30287 > > inl error = 00:24:23 v #30288 > > ($'$"file_system.read_link / Fsharp / "' : string) 00:24:23 v #30289 > > +. $'$"The file or directory is not a reparse point. 00:24:23 v #30290 > > "' 00:24:23 v #30291 > > +. $'$"path: {!path} / result: {!result} / path\': 00:24:23 v #30292 > > {!path'} / n: {!n}"' 00:24:23 v #30293 > > |> stream.new_io_error 00:24:23 v #30294 > > path' |> run loop n error 00:24:23 v #30295 > > path |> loop 0u8 00:24:23 v #30296 > > | _ => fun () => $'Unchecked.defaultof<_>' 00:24:24 v #30297 > > 00:24:24 v #30298 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:24 v #30299 > > │ ### normalize_path 00:24:24 v #30300 > > 00:24:24 v #30301 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:24 v #30302 > > let normalize_path (path : string) : string = 00:24:24 v #30303 > > if path = "" 00:24:24 v #30304 > > then "" 00:24:24 v #30305 > > else 00:24:24 v #30306 > > inl path = 00:24:24 v #30307 > > match path |> read_link |> resultm.ok' |> optionm'.unbox with 00:24:24 v #30308 > > | Some path_buf => 00:24:24 v #30309 > > inl result = 00:24:24 v #30310 > > path_buf 00:24:24 v #30311 > > |> path_buf_display 00:24:24 v #30312 > > |> convert 00:24:24 v #30313 > > if result = "" 00:24:24 v #30314 > > then path 00:24:24 v #30315 > > else result 00:24:24 v #30316 > > | None => path 00:24:24 v #30317 > > if path = "" 00:24:24 v #30318 > > then "" 00:24:24 v #30319 > > else 00:24:24 v #30320 > > inl path = path |> sm'.replace_regex @"^\\\\\?\\" "" 00:24:24 v #30321 > > $'$"{!path.[[0]] |> string |> _.ToLower()}{!path.[[1..]]}"' |> 00:24:24 v #30322 > > sm'.replace "\\" "/" 00:24:24 v #30323 > > 00:24:24 v #30324 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:24 v #30325 > > │ ### get_full_path 00:24:24 v #30326 > > 00:24:24 v #30327 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:24 v #30328 > > let get_full_path (path : string) : string = 00:24:24 v #30329 > > run_target_args (fun () => path) function 00:24:24 v #30330 > > | Fsharp (Native) => fun path => 00:24:24 v #30331 > > path |> $'System.IO.Path.GetFullPath' 00:24:24 v #30332 > > | Rust (Native) => fun path => 00:24:24 v #30333 > > inl path_buf = path |> sm'.to_std_string |> new_path_buf 00:24:24 v #30334 > > if path_buf |> path_buf_exists |> not then 00:24:24 v #30335 > > inl current_dir = get_current_directory () 00:24:24 v #30336 > > current_dir </> path 00:24:24 v #30337 > > |> normalize_path 00:24:24 v #30338 > > |> sm'.split "/" 00:24:24 v #30339 > > |> fun x => 00:24:24 v #30340 > > ((a x : _ i32 _), (0i32, (a ;[[]] : _ i32 _))) 00:24:24 v #30341 > > ||> am.foldBack fun x level, acc => 00:24:24 v #30342 > > match x, level with 00:24:24 v #30343 > > | "..", _ => level + 1, acc 00:24:24 v #30344 > > | ".", _ => level, acc 00:24:24 v #30345 > > | _, 0 when x |> sm'.ends_with ":" => 0, a ;[[ 00:24:24 v #30346 > > $'$"{!current_dir.[[0]]}:"' ]] ++ acc 00:24:24 v #30347 > > | _, 0 => 0, a ;[[ x ]] ++ acc 00:24:24 v #30348 > > | _ => level - 1, acc 00:24:24 v #30349 > > |> snd 00:24:24 v #30350 > > |> seq.of_array' 00:24:24 v #30351 > > |> sm'.concat (directory_separator_char () |> sm'.obj_to_string) 00:24:24 v #30352 > > else 00:24:24 v #30353 > > inl path = !\\(path, $'"std::fs::canonicalize(&*$0)"') : 00:24:24 v #30354 > > resultm.result' path_buf stream.io_error 00:24:24 v #30355 > > path 00:24:24 v #30356 > > |> resultm.unwrap' 00:24:24 v #30357 > > |> path_buf_display 00:24:24 v #30358 > > |> sm'.format' 00:24:24 v #30359 > > |> sm'.from_std_string 00:24:24 v #30360 > > | _ => fun _ => null () 00:24:24 v #30361 > > 00:24:24 v #30362 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:24 v #30363 > > //// test 00:24:24 v #30364 > > 00:24:24 v #30365 > > "." 00:24:24 v #30366 > > |> get_full_path 00:24:24 v #30367 > > |> directory_info 00:24:24 v #30368 > > |> directory_info_name 00:24:24 v #30369 > > |> _assert_eq "spiral" 00:24:25 v #30370 > > 00:24:25 v #30371 > > ── [ 677.87ms - stdout ] ─────────────────────────────────────────────────────── 00:24:25 v #30372 > > │ __assert_eq / actual: "spiral" / expected: "spiral" 00:24:25 v #30373 > > │ 00:24:25 v #30374 > > 00:24:25 v #30375 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:25 v #30376 > > //// test 00:24:25 v #30377 > > 00:24:25 v #30378 > > "dir/.././._file" 00:24:25 v #30379 > > |> get_full_path 00:24:25 v #30380 > > |> _assert_eq (get_current_directory () </> "._file") 00:24:25 v #30381 > > 00:24:25 v #30382 > > ── [ 672.77ms - stdout ] ─────────────────────────────────────────────────────── 00:24:25 v #30383 > > │ __assert_eq / actual: 00:24:25 v #30384 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected: 00:24:25 v #30385 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" 00:24:25 v #30386 > > │ 00:24:25 v #30387 > > 00:24:25 v #30388 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:25 v #30389 > > //// test 00:24:25 v #30390 > > ///! rust -d regex 00:24:25 v #30391 > > 00:24:25 v #30392 > > "." 00:24:25 v #30393 > > |> get_full_path 00:24:25 v #30394 > > |> sm'.to_std_string 00:24:25 v #30395 > > |> new_path_buf 00:24:25 v #30396 > > |> path_buf_file_name 00:24:25 v #30397 > > |> optionm'.unwrap 00:24:25 v #30398 > > |> sm'.from_os_str_ref 00:24:25 v #30399 > > |> _assert_eq "spiral" 00:24:33 v #30400 > > 00:24:33 v #30401 > > ── [ 7.56s - return value ] ──────────────────────────────────────────────────── 00:24:33 v #30402 > > │ __assert_eq / actual: "spiral" / expected: "spiral" 00:24:33 v #30403 > > │ 00:24:33 v #30404 > > 00:24:33 v #30405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:33 v #30406 > > //// test 00:24:33 v #30407 > > ///! rust -d regex 00:24:33 v #30408 > > 00:24:33 v #30409 > > "dir/.././._file" 00:24:33 v #30410 > > |> get_full_path 00:24:33 v #30411 > > |> _assert_eq (get_current_directory () </> "._file") 00:24:40 v #30412 > > 00:24:40 v #30413 > > ── [ 7.53s - return value ] ──────────────────────────────────────────────────── 00:24:40 v #30414 > > │ __assert_eq / actual: 00:24:40 v #30415 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" / expected: 00:24:40 v #30416 > > "/home/runner/work/polyglot/polyglot/lib/spiral/._file" 00:24:40 v #30417 > > │ 00:24:40 v #30418 > > 00:24:40 v #30419 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:40 v #30420 > > │ ### standardize_path 00:24:40 v #30421 > > 00:24:40 v #30422 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:40 v #30423 > > let standardize_path path = 00:24:40 v #30424 > > path |> get_full_path |> normalize_path 00:24:41 v #30425 > > 00:24:41 v #30426 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:41 v #30427 > > │ ### absolute_path 00:24:41 v #30428 > > 00:24:41 v #30429 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:41 v #30430 > > let absolute_path path = 00:24:41 v #30431 > > inl current_dir = get_current_directory () 00:24:41 v #30432 > > current_dir </> path |> standardize_path 00:24:41 v #30433 > > 00:24:41 v #30434 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:41 v #30435 > > │ ### new_file_uri 00:24:41 v #30436 > > 00:24:41 v #30437 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:41 v #30438 > > inl new_file_uri (path : string) : string = 00:24:41 v #30439 > > inl path = path |> sm'.trim_start [[ '/' ]] 00:24:41 v #30440 > > $'$"file:///{!path}"' 00:24:41 v #30441 > > 00:24:41 v #30442 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:41 v #30443 > > //// test 00:24:41 v #30444 > > 00:24:41 v #30445 > > @"\\?\C:\test" 00:24:41 v #30446 > > |> normalize_path 00:24:41 v #30447 > > |> new_file_uri 00:24:41 v #30448 > > |> _assert_eq "file:///c:/test" 00:24:42 v #30449 > > 00:24:42 v #30450 > > ── [ 649.92ms - stdout ] ─────────────────────────────────────────────────────── 00:24:42 v #30451 > > │ __assert_eq / actual: "file:///c:/test" / expected: 00:24:42 v #30452 > > "file:///c:/test" 00:24:42 v #30453 > > │ 00:24:42 v #30454 > > 00:24:42 v #30455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:42 v #30456 > > //// test 00:24:42 v #30457 > > ///! rust -d regex 00:24:42 v #30458 > > 00:24:42 v #30459 > > @"\\?\C:\test" 00:24:42 v #30460 > > |> normalize_path 00:24:42 v #30461 > > |> new_file_uri 00:24:42 v #30462 > > |> _assert_eq "file:///c:/test" 00:24:49 v #30463 > > 00:24:49 v #30464 > > ── [ 7.11s - return value ] ──────────────────────────────────────────────────── 00:24:49 v #30465 > > │ __assert_eq / actual: "file:///c:/test" / expected: 00:24:49 v #30466 > > "file:///c:/test" 00:24:49 v #30467 > > │ 00:24:49 v #30468 > > 00:24:49 v #30469 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:49 v #30470 > > │ ## fsharp 00:24:49 v #30471 > > 00:24:49 v #30472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:49 v #30473 > > │ ### file_exists_content_async 00:24:49 v #30474 > > 00:24:49 v #30475 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:49 v #30476 > > let file_exists_content_async path content : async.async bool = 00:24:49 v #30477 > > run_target function 00:24:49 v #30478 > > | Fsharp (Native) => fun () => 00:24:49 v #30479 > > fun () => 00:24:49 v #30480 > > fix_condition 00:24:49 v #30481 > > fun () => path |> file_exists |> not 00:24:49 v #30482 > > fun () => false |> return 00:24:49 v #30483 > > fun () => 00:24:49 v #30484 > > inl existing_content = path |> read_all_text_async |> 00:24:49 v #30485 > > async.let' 00:24:49 v #30486 > > content = existing_content |> return 00:24:49 v #30487 > > |> async.new_async_unit 00:24:49 v #30488 > > | _ => fun () => null () 00:24:49 v #30489 > > 00:24:49 v #30490 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:49 v #30491 > > │ ### write_all_text_exists_async 00:24:49 v #30492 > > 00:24:49 v #30493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:49 v #30494 > > let write_all_text_exists_async path contents = 00:24:49 v #30495 > > fun () => 00:24:49 v #30496 > > inl exists' = contents |> file_exists_content_async path |> async.let' 00:24:49 v #30497 > > if not exists' 00:24:49 v #30498 > > then contents |> write_all_text_async path |> async.do 00:24:49 v #30499 > > |> async.new_async 00:24:49 v #30500 > > 00:24:49 v #30501 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:49 v #30502 > > │ ### delete_directory_async 00:24:49 v #30503 > > 00:24:49 v #30504 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:49 v #30505 > > let delete_directory_async path : _ i64 = 00:24:49 v #30506 > > let rec loop (retry : i64) = 00:24:49 v #30507 > > run_target function 00:24:49 v #30508 > > | Fsharp (Native) => fun () => 00:24:49 v #30509 > > fun () => 00:24:49 v #30510 > > try_unit 00:24:49 v #30511 > > fun () => 00:24:49 v #30512 > > path |> directory_delete true 00:24:49 v #30513 > > retry |> return 00:24:49 v #30514 > > fun ex => 00:24:49 v #30515 > > if retry % 100i64 = 0 then 00:24:49 v #30516 > > trace Debug 00:24:49 v #30517 > > fun () => 00:24:49 v #30518 > > "file_system.delete_directory_async" 00:24:49 v #30519 > > fun () => { 00:24:49 v #30520 > > ex = ex () |> sm'.format_exception 00:24:49 v #30521 > > path = path |> get_file_name 00:24:49 v #30522 > > } 00:24:49 v #30523 > > async.sleep 10i32 |> async.do 00:24:49 v #30524 > > loop (retry + 1) |> async.return_await 00:24:49 v #30525 > > |> async.new_async 00:24:49 v #30526 > > | _ => fun () => null () 00:24:49 v #30527 > > loop 0 00:24:49 v #30528 > > 00:24:49 v #30529 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:49 v #30530 > > │ ### trace_file 00:24:49 v #30531 > > 00:24:49 v #30532 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:49 v #30533 > > let rec trace_file text = 00:24:49 v #30534 > > run_target function 00:24:49 v #30535 > > | Fsharp (Native) => fun () => 00:24:49 v #30536 > > try_unit 00:24:49 v #30537 > > fun () => 00:24:49 v #30538 > > inl assembly_name = env.get_entry_assembly_name () 00:24:49 v #30539 > > inl guid = date_time.now () |> date_time.new_guid_from_date_time 00:24:49 v #30540 > > inl file_name = $'$"{!assembly_name}_{!guid}.txt"' 00:24:49 v #30541 > > 00:24:49 v #30542 > > inl workspace_root = get_workspace_root () 00:24:49 v #30543 > > inl trace_dir = workspace_root </> "target/trace" 00:24:49 v #30544 > > trace_dir |> create_directory |> ignore 00:24:49 v #30545 > > inl path = trace_dir </> file_name 00:24:49 v #30546 > > text |> write_all_text_async path |> async.run_synchronously 00:24:49 v #30547 > > fun ex => 00:24:49 v #30548 > > inl text = $'$"file_system.trace_file / ex: %A{!ex}"' 00:24:49 v #30549 > > text |> console.write_line 00:24:49 v #30550 > > text |> trace_file 00:24:49 v #30551 > > | _ => fun () => () 00:24:50 v #30552 > > 00:24:50 v #30553 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:50 v #30554 > > //// test 00:24:50 v #30555 > > 00:24:50 v #30556 > > inl get_count dir : i64 = 00:24:50 v #30557 > > inl files = dir |> directory_get_files 00:24:50 v #30558 > > a files |> am'.length 00:24:50 v #30559 > > 00:24:50 v #30560 > > inl trace_dir = get_workspace_root () </> "target/trace" 00:24:50 v #30561 > > trace_dir |> create_directory |> ignore 00:24:50 v #30562 > > 00:24:50 v #30563 > > inl count = get_count trace_dir 00:24:50 v #30564 > > 00:24:50 v #30565 > > trace_file "test" 00:24:50 v #30566 > > 00:24:50 v #30567 > > get_count trace_dir 00:24:50 v #30568 > > |> _assert_eq (count + 1) 00:24:50 v #30569 > > 00:24:50 v #30570 > > ── [ 802.69ms - stdout ] ─────────────────────────────────────────────────────── 00:24:50 v #30571 > > │ __assert_eq / actual: 1L / expected: 1L 00:24:50 v #30572 > > │ 00:24:50 v #30573 > > 00:24:50 v #30574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:50 v #30575 > > │ ### init_trace_file 00:24:50 v #30576 > > 00:24:50 v #30577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:50 v #30578 > > inl init_trace_file enabled = 00:24:50 v #30579 > > inl state_trace_file = get_trace_state_or_init None .trace_file 00:24:50 v #30580 > > state_trace_file <- if enabled then trace_file else ignore 00:24:51 v #30581 > > 00:24:51 v #30582 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:51 v #30583 > > │ ## file_system 00:24:51 v #30584 > > 00:24:51 v #30585 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:51 v #30586 > > │ ### create_dir 00:24:51 v #30587 > > 00:24:51 v #30588 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:51 v #30589 > > let create_dir dir = 00:24:51 v #30590 > > run_target_args' dir function 00:24:51 v #30591 > > | Rust (Contract | Wasm) => fun _ => null () 00:24:51 v #30592 > > | Rust (Native) => fun dir => 00:24:51 v #30593 > > match dir |> create_dir_all |> resultm.map_error' sm'.format' |> 00:24:51 v #30594 > > resultm.unbox with 00:24:51 v #30595 > > | Ok () => 00:24:51 v #30596 > > trace Verbose 00:24:51 v #30597 > > fun () => "file_system.create_dir" 00:24:51 v #30598 > > fun () => { dir } 00:24:51 v #30599 > > | Error error => 00:24:51 v #30600 > > trace Critical 00:24:51 v #30601 > > fun () => "file_system.create_dir" 00:24:51 v #30602 > > fun () => { dir error } 00:24:51 v #30603 > > inl disposable : _ () = new_disposable fun () => 00:24:51 v #30604 > > dir 00:24:51 v #30605 > > |> directory_delete true 00:24:51 v #30606 > > disposable 00:24:51 v #30607 > > | _ => fun dir => 00:24:51 v #30608 > > inl directory_info = dir |> create_directory 00:24:51 v #30609 > > inl exists' = directory_info |> directory_info_exists 00:24:51 v #30610 > > if not exists' then 00:24:51 v #30611 > > inl creation_time = directory_info |> 00:24:51 v #30612 > > directory_info_creation_time 00:24:51 v #30613 > > inl result = ($'{| Exists = !exists'; CreationTime = 00:24:51 v #30614 > > !creation_time |}' : infer) |> sm'.format_debug 00:24:51 v #30615 > > trace Debug 00:24:51 v #30616 > > fun () => "file_system.create_dir" 00:24:51 v #30617 > > fun () => { dir result } 00:24:51 v #30618 > > inl disposable : _ () = new_disposable fun () => 00:24:51 v #30619 > > dir 00:24:51 v #30620 > > |> delete_directory_async 00:24:51 v #30621 > > |> async.ignore 00:24:51 v #30622 > > |> async.run_synchronously 00:24:51 v #30623 > > disposable 00:24:51 v #30624 > > 00:24:51 v #30625 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:24:51 v #30626 > > │ ### create_temp_dir 00:24:51 v #30627 > > 00:24:51 v #30628 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:51 v #30629 > > inl create_temp_dir () = 00:24:51 v #30630 > > inl dir = create_temp_path () 00:24:51 v #30631 > > dir, dir |> create_dir 00:24:51 v #30632 > > 00:24:51 v #30633 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:24:51 v #30634 > > //// test 00:24:51 v #30635 > > ///! fsharp 00:24:51 v #30636 > > ///! rust -d chrono 00:24:51 v #30637 > > 00:24:51 v #30638 > > inl path, disposable = create_temp_dir () 00:24:51 v #30639 > > join 00:24:51 v #30640 > > path 00:24:51 v #30641 > > |> directory_exists 00:24:51 v #30642 > > |> _assert_eq true 00:24:51 v #30643 > > disposable |> use |> ignore 00:24:51 v #30644 > > path 00:24:51 v #30645 > > |> directory_exists 00:24:51 v #30646 > > |> _assert_eq true 00:24:51 v #30647 > > path 00:24:51 v #30648 > > |> directory_exists 00:24:51 v #30649 > > |> _assert_eq false 00:25:00 v #30650 > > 00:25:00 v #30651 > > ── [ 9.06s - return value ] ──────────────────────────────────────────────────── 00:25:00 v #30652 > > │ 00:25:00 v #30653 > > │ .rs output (rust -d chrono): 00:25:00 v #30654 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:25:00 v #30655 > > /tmp/!create_temp_path_/spiral_0025b4faf07c9d5f6922a5a74e4387bfc57d0f3851911b82d 00:25:00 v #30656 > > a9c5f616c1f552e/20250109-0433-0218-0401-000000e2a8e6 } 00:25:00 v #30657 > > │ __assert_eq / actual: true / expected: true 00:25:00 v #30658 > > │ __assert_eq / actual: true / expected: true 00:25:00 v #30659 > > │ __assert_eq / actual: false / expected: false 00:25:00 v #30660 > > │ 00:25:00 v #30661 > > │ 00:25:00 v #30662 > > 00:25:00 v #30663 > > ── [ 9.06s - stdout ] ────────────────────────────────────────────────────────── 00:25:00 v #30664 > > │ .fsx output: 00:25:00 v #30665 > > │ __assert_eq / actual: true / expected: true 00:25:00 v #30666 > > │ __assert_eq / actual: true / expected: true 00:25:00 v #30667 > > │ __assert_eq / actual: false / expected: false 00:25:00 v #30668 > > │ 00:25:00 v #30669 > > 00:25:00 v #30670 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:00 v #30671 > > //// test 00:25:00 v #30672 > > //// timeout=30000 00:25:00 v #30673 > > 00:25:00 v #30674 > > inl lock_directory path = 00:25:00 v #30675 > > fun () => 00:25:00 v #30676 > > trace Debug (fun () => "_1") id 00:25:00 v #30677 > > "0" |> write_all_text_async (path </> "test.txt") |> async.do 00:25:00 v #30678 > > file_stream 00:25:00 v #30679 > > (path </> "test.txt") 00:25:00 v #30680 > > ModeOpen 00:25:00 v #30681 > > AccessReadWrite 00:25:00 v #30682 > > ShareNone 00:25:00 v #30683 > > |> use 00:25:00 v #30684 > > |> ignore 00:25:00 v #30685 > > trace Debug (fun () => "_2") id 00:25:00 v #30686 > > async.sleep 2000 |> async.do 00:25:00 v #30687 > > trace Debug (fun () => "_3") id 00:25:00 v #30688 > > () |> return 00:25:00 v #30689 > > |> async.new_async 00:25:00 v #30690 > > 00:25:00 v #30691 > > inl temp_dir, disposable = create_temp_dir () 00:25:00 v #30692 > > disposable |> use |> ignore 00:25:00 v #30693 > > inl path = temp_dir </> "test" 00:25:00 v #30694 > > 00:25:00 v #30695 > > fun () => 00:25:00 v #30696 > > trace Debug (fun () => "1") id 00:25:00 v #30697 > > path |> create_directory |> ignore 00:25:00 v #30698 > > trace Debug (fun () => "2") id 00:25:00 v #30699 > > inl child = path |> lock_directory |> async.start_child |> async.let' 00:25:00 v #30700 > > trace Debug (fun () => "3") id 00:25:00 v #30701 > > async.sleep 60 |> async.do 00:25:00 v #30702 > > trace Debug (fun () => "4") id 00:25:00 v #30703 > > inl retries = path |> delete_directory_async |> async.let' 00:25:00 v #30704 > > trace Debug (fun () => "5") id 00:25:00 v #30705 > > child |> async.do 00:25:00 v #30706 > > trace Debug (fun () => "6") id 00:25:00 v #30707 > > retries |> return 00:25:00 v #30708 > > |> async.new_async_unit 00:25:00 v #30709 > > |> async.run_with_timeout 3000 00:25:00 v #30710 > > |> fun x => x : _ i64 00:25:00 v #30711 > > |> function 00:25:00 v #30712 > > | Some (retries : i64) => 00:25:00 v #30713 > > retries 00:25:00 v #30714 > > |> _assert_between 00:25:00 v #30715 > > (if platform.is_windows () then 50 else 0) 00:25:00 v #30716 > > (if platform.is_windows () then 180 else 0) 00:25:00 v #30717 > > 00:25:00 v #30718 > > true 00:25:00 v #30719 > > | _ => false 00:25:00 v #30720 > > |> _assert_eq true 00:25:06 v #30721 > > 00:25:06 v #30722 > > ── [ 5.86s - stdout ] ────────────────────────────────────────────────────────── 00:25:06 v #30723 > > │ 00:00:00 d #1 1 00:25:06 v #30724 > > │ 00:00:00 d #2 2 00:25:06 v #30725 > > │ 00:00:00 d #3 3 00:25:06 v #30726 > > │ 00:00:00 d #4 _1 00:25:06 v #30727 > > │ 00:00:00 d #5 _2 00:25:06 v #30728 > > │ 00:00:00 d #6 4 00:25:06 v #30729 > > │ 00:00:00 d #7 5 00:25:06 v #30730 > > │ 00:00:02 d #8 _3 00:25:06 v #30731 > > │ 00:00:02 d #9 6 00:25:06 v #30732 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) 00:25:06 v #30733 > > │ __assert_eq / actual: true / expected: true 00:25:06 v #30734 > > │ 00:25:06 v #30735 > > 00:25:06 v #30736 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:06 v #30737 > > │ ### create_temp_dir' 00:25:06 v #30738 > > 00:25:06 v #30739 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:06 v #30740 > > inl create_temp_dir' (hash : string) = 00:25:06 v #30741 > > inl dir = hash |> guid.hash_guid |> create_temp_path' 00:25:06 v #30742 > > dir, dir |> create_dir 00:25:06 v #30743 > > 00:25:06 v #30744 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:06 v #30745 > > │ ### link_directory 00:25:06 v #30746 > > 00:25:06 v #30747 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:06 v #30748 > > let link_directory target_path path = 00:25:06 v #30749 > > if target_path |> directory_exists |> not 00:25:06 v #30750 > > then target_path |> create_dir |> ignore 00:25:06 v #30751 > > 00:25:06 v #30752 > > inl lib_dir_path = path |> directory_get_parent |> optionm'.default_value' 00:25:06 v #30753 > > "" 00:25:06 v #30754 > > if lib_dir_path |> directory_exists |> not 00:25:06 v #30755 > > then lib_dir_path |> create_dir |> ignore 00:25:06 v #30756 > > 00:25:06 v #30757 > > if (path |> directory_exists) 00:25:06 v #30758 > > && (path |> read_link |> resultm.is_err) then 00:25:06 v #30759 > > path |> directory_delete true 00:25:06 v #30760 > > 00:25:06 v #30761 > > if path |> directory_exists |> not then 00:25:06 v #30762 > > path |> directory_create_symbolic_link target_path 00:25:06 v #30763 > > 00:25:06 v #30764 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:06 v #30765 > > │ ### link_file 00:25:06 v #30766 > > 00:25:06 v #30767 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:06 v #30768 > > let link_file target_path path = 00:25:06 v #30769 > > if (path |> file_exists) 00:25:06 v #30770 > > && (path |> read_link |> resultm.is_err) then 00:25:06 v #30771 > > path |> file_delete 00:25:06 v #30772 > > 00:25:06 v #30773 > > if path |> file_exists |> not then 00:25:06 v #30774 > > path |> file_create_symbolic_link target_path 00:25:06 v #30775 > > 00:25:06 v #30776 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:06 v #30777 > > //// test 00:25:06 v #30778 > > ///! fsharp 00:25:06 v #30779 > > ///! rust -d sha2 regex 00:25:06 v #30780 > > 00:25:06 v #30781 > > inl file_name = "LICENSE" 00:25:06 v #30782 > > inl text = file_name 00:25:06 v #30783 > > 00:25:06 v #30784 > > inl test_hash = 00:25:06 v #30785 > > (file_name, text) 00:25:06 v #30786 > > |> sm'.format_debug 00:25:06 v #30787 > > |> crypto.hash_text 00:25:06 v #30788 > > 00:25:06 v #30789 > > inl workspace_root = get_workspace_root () 00:25:06 v #30790 > > inl test_dir = workspace_root </> "target/test/file_system" </> test_hash 00:25:06 v #30791 > > 00:25:06 v #30792 > > inl disposable = test_dir |> create_dir 00:25:06 v #30793 > > disposable |> use |> ignore 00:25:06 v #30794 > > 00:25:06 v #30795 > > inl dir_path = test_dir </> "dir1" 00:25:06 v #30796 > > 00:25:06 v #30797 > > if dir_path |> directory_exists 00:25:06 v #30798 > > then dir_path |> directory_delete true 00:25:06 v #30799 > > 00:25:06 v #30800 > > dir_path |> create_dir |> ignore 00:25:06 v #30801 > > 00:25:06 v #30802 > > inl path = dir_path </> file_name 00:25:06 v #30803 > > text |> write_all_text path 00:25:06 v #30804 > > 00:25:06 v #30805 > > inl dir_link_path = test_dir </> "link1" 00:25:06 v #30806 > > 00:25:06 v #30807 > > dir_link_path |> link_directory dir_path 00:25:06 v #30808 > > 00:25:06 v #30809 > > inl link_path = dir_link_path </> file_name 00:25:06 v #30810 > > 00:25:06 v #30811 > > link_path 00:25:06 v #30812 > > |> read_all_text 00:25:06 v #30813 > > |> _assert_eq text 00:25:06 v #30814 > > 00:25:06 v #30815 > > dir_link_path 00:25:06 v #30816 > > |> read_link 00:25:06 v #30817 > > |> resultm.unwrap' 00:25:06 v #30818 > > |> path_buf_display 00:25:06 v #30819 > > |> convert 00:25:06 v #30820 > > |> _assert sm'.ends_with "dir1" 00:25:06 v #30821 > > 00:25:06 v #30822 > > link_path 00:25:06 v #30823 > > |> read_link 00:25:06 v #30824 > > |> resultm.unwrap' 00:25:06 v #30825 > > |> path_buf_display 00:25:06 v #30826 > > |> convert 00:25:06 v #30827 > > |> _assert sm'.ends_with "LICENSE" 00:25:06 v #30828 > > 00:25:06 v #30829 > > inl link_name = "LICENSE_" 00:25:06 v #30830 > > 00:25:06 v #30831 > > inl link_path = dir_path </> link_name 00:25:06 v #30832 > > 00:25:06 v #30833 > > link_path |> link_file path 00:25:06 v #30834 > > 00:25:06 v #30835 > > inl link_path' = dir_link_path </> link_name 00:25:06 v #30836 > > 00:25:06 v #30837 > > link_path' 00:25:06 v #30838 > > |> read_all_text 00:25:06 v #30839 > > |> _assert_eq text 00:25:06 v #30840 > > 00:25:06 v #30841 > > link_path 00:25:06 v #30842 > > |> read_link 00:25:06 v #30843 > > |> resultm.unwrap' 00:25:06 v #30844 > > |> path_buf_display 00:25:06 v #30845 > > |> convert 00:25:06 v #30846 > > |> _assert sm'.ends_with "LICENSE" 00:25:06 v #30847 > > 00:25:06 v #30848 > > link_path' 00:25:06 v #30849 > > |> read_link 00:25:06 v #30850 > > |> resultm.unwrap' 00:25:06 v #30851 > > |> path_buf_display 00:25:06 v #30852 > > |> convert 00:25:06 v #30853 > > |> _assert sm'.ends_with "LICENSE" 00:25:17 v #30854 > > 00:25:17 v #30855 > > ── [ 10.37s - return value ] ─────────────────────────────────────────────────── 00:25:17 v #30856 > > │ 00:25:17 v #30857 > > │ .rs output (rust -d sha2 regex): 00:25:17 v #30858 > > │ 00:00:00 v #1 file_system.create_dir / { dir = 00:25:17 v #30859 > > /home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f403 00:25:17 v #30860 > > 259e33e49592eda85aedd790ed910e9f3e619d9cd257 } 00:25:17 v #30861 > > │ 00:00:00 v #2 file_system.create_dir / { dir = 00:25:17 v #30862 > > /home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f403 00:25:17 v #30863 > > 259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1 } 00:25:17 v #30864 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" 00:25:17 v #30865 > > │ __assert / actual: "dir1" / expected: 00:25:17 v #30866 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40 00:25:17 v #30867 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1" 00:25:17 v #30868 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30869 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40 00:25:17 v #30870 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE" 00:25:17 v #30871 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" 00:25:17 v #30872 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30873 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40 00:25:17 v #30874 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE" 00:25:17 v #30875 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30876 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/17e16cea7984b0e6f40 00:25:17 v #30877 > > 3259e33e49592eda85aedd790ed910e9f3e619d9cd257/dir1/LICENSE" 00:25:17 v #30878 > > │ 00:25:17 v #30879 > > │ 00:25:17 v #30880 > > 00:25:17 v #30881 > > ── [ 10.37s - stdout ] ───────────────────────────────────────────────────────── 00:25:17 v #30882 > > │ .fsx output: 00:25:17 v #30883 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" 00:25:17 v #30884 > > │ __assert / actual: "dir1" / expected: 00:25:17 v #30885 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d 00:25:17 v #30886 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1" 00:25:17 v #30887 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30888 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d 00:25:17 v #30889 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE" 00:25:17 v #30890 > > │ __assert_eq / actual: "LICENSE" / expected: "LICENSE" 00:25:17 v #30891 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30892 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d 00:25:17 v #30893 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE" 00:25:17 v #30894 > > │ __assert / actual: "LICENSE" / expected: 00:25:17 v #30895 > > "/home/runner/work/polyglot/polyglot/target/test/file_system/8f260c25ec3f6eaaf0d 00:25:17 v #30896 > > 0d1b67ed9c47873a182ca04606835404e641a952871da/dir1/LICENSE" 00:25:17 v #30897 > > │ 00:25:17 v #30898 > > 00:25:17 v #30899 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:17 v #30900 > > │ ## rust 00:25:17 v #30901 > > 00:25:17 v #30902 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:17 v #30903 > > │ ### file_exists_content 00:25:17 v #30904 > > 00:25:17 v #30905 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:17 v #30906 > > let file_exists_content path content : bool = 00:25:17 v #30907 > > run_target function 00:25:17 v #30908 > > | Rust (Native) => fun () => 00:25:17 v #30909 > > if path |> file_exists |> not 00:25:17 v #30910 > > then false 00:25:17 v #30911 > > else 00:25:17 v #30912 > > inl existing_content = path |> read_all_text 00:25:17 v #30913 > > content = existing_content 00:25:17 v #30914 > > | _ => fun () => null () 00:25:17 v #30915 > > 00:25:17 v #30916 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:17 v #30917 > > │ ### write_all_text_exists 00:25:17 v #30918 > > 00:25:17 v #30919 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:17 v #30920 > > let write_all_text_exists path contents = 00:25:17 v #30921 > > inl exists' = contents |> file_exists_content path 00:25:17 v #30922 > > if not exists' then 00:25:17 v #30923 > > inl dir = path |> directory_get_parent |> optionm'.default_value' "" 00:25:17 v #30924 > > if dir |> directory_exists |> not 00:25:17 v #30925 > > then dir |> create_dir |> ignore 00:25:17 v #30926 > > contents |> write_all_text path 00:25:17 v #30927 > > 00:25:17 v #30928 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:17 v #30929 > > │ ## fsharp 00:25:17 v #30930 > > 00:25:17 v #30931 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:17 v #30932 > > │ ### wait_for_file_access 00:25:17 v #30933 > > 00:25:17 v #30934 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:17 v #30935 > > let wait_for_file_access access path = 00:25:17 v #30936 > > let rec loop (retry : i64) : _ i64 = 00:25:17 v #30937 > > run_target function 00:25:17 v #30938 > > | Fsharp (Native) => fun () => 00:25:17 v #30939 > > inl file_access, file_share = 00:25:17 v #30940 > > access 00:25:17 v #30941 > > |> optionm'.default_value (AccessReadWrite, ShareRead) 00:25:17 v #30942 > > fun () => 00:25:17 v #30943 > > try_unit 00:25:17 v #30944 > > fun () => 00:25:17 v #30945 > > file_stream 00:25:17 v #30946 > > path 00:25:17 v #30947 > > ModeOpen 00:25:17 v #30948 > > file_access 00:25:17 v #30949 > > file_share 00:25:17 v #30950 > > |> use 00:25:17 v #30951 > > |> ignore 00:25:17 v #30952 > > retry |> return 00:25:17 v #30953 > > fun ex => 00:25:17 v #30954 > > if retry > 0 && retry % 100i64 = 0 then 00:25:17 v #30955 > > trace Debug 00:25:17 v #30956 > > fun () => "file_system.wait_for_file_access" 00:25:17 v #30957 > > fun () => { 00:25:17 v #30958 > > path = path |> get_file_name 00:25:17 v #30959 > > retry 00:25:17 v #30960 > > ex = ex () |> sm'.format_exception 00:25:17 v #30961 > > } 00:25:17 v #30962 > > async.sleep 10i32 |> async.do 00:25:17 v #30963 > > loop (retry + 1) |> async.return_await 00:25:17 v #30964 > > |> async.new_async 00:25:17 v #30965 > > | _ => fun () => null () 00:25:17 v #30966 > > loop 0 00:25:18 v #30967 > > 00:25:18 v #30968 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:18 v #30969 > > │ ### wait_for_file_access_read 00:25:18 v #30970 > > 00:25:18 v #30971 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:18 v #30972 > > let wait_for_file_access_read path = 00:25:18 v #30973 > > path 00:25:18 v #30974 > > |> wait_for_file_access (Some ( 00:25:18 v #30975 > > AccessRead, 00:25:18 v #30976 > > ShareRead 00:25:18 v #30977 > > )) 00:25:18 v #30978 > > 00:25:18 v #30979 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:18 v #30980 > > //// test 00:25:18 v #30981 > > //// timeout=30000 00:25:18 v #30982 > > 00:25:18 v #30983 > > inl lock_file path = 00:25:18 v #30984 > > fun () => 00:25:18 v #30985 > > trace Debug (fun () => "_1") id 00:25:18 v #30986 > > inl stream : file_stream' = 00:25:18 v #30987 > > file_stream 00:25:18 v #30988 > > path 00:25:18 v #30989 > > ModeOpen 00:25:18 v #30990 > > AccessReadWrite 00:25:18 v #30991 > > ShareNone 00:25:18 v #30992 > > |> use 00:25:18 v #30993 > > trace Debug (fun () => "_2") id 00:25:18 v #30994 > > async.sleep 2000 |> async.do 00:25:18 v #30995 > > trace Debug (fun () => "_3") id 00:25:18 v #30996 > > ($'!stream.Seek (0L, System.IO.SeekOrigin.Begin)' : i64) |> ignore 00:25:18 v #30997 > > trace Debug (fun () => "_4") id 00:25:18 v #30998 > > $'!stream.WriteByte' 49u8 00:25:18 v #30999 > > trace Debug (fun () => "_5") id 00:25:18 v #31000 > > stream |> $'_.Flush()' 00:25:18 v #31001 > > trace Debug (fun () => "_6") id 00:25:18 v #31002 > > |> async.new_async 00:25:18 v #31003 > > 00:25:18 v #31004 > > inl file_name = "test.txt" 00:25:18 v #31005 > > inl text = "0" 00:25:18 v #31006 > > 00:25:18 v #31007 > > inl temp_dir, disposable = 00:25:18 v #31008 > > (file_name, text) 00:25:18 v #31009 > > |> sm'.format_debug 00:25:18 v #31010 > > |> crypto.hash_text 00:25:18 v #31011 > > |> create_temp_dir' 00:25:18 v #31012 > > disposable |> use |> ignore 00:25:18 v #31013 > > inl path = temp_dir </> file_name 00:25:18 v #31014 > > 00:25:18 v #31015 > > fun () => 00:25:18 v #31016 > > trace Debug (fun () => "1") id 00:25:18 v #31017 > > text |> write_all_text_async path |> async.do 00:25:18 v #31018 > > trace Debug (fun () => "2") id 00:25:18 v #31019 > > inl child = path |> lock_file |> async.start_child |> async.let' 00:25:18 v #31020 > > trace Debug (fun () => "3") id 00:25:18 v #31021 > > async.sleep 1 |> async.do 00:25:18 v #31022 > > trace Debug (fun () => "4") id 00:25:18 v #31023 > > inl retries = path |> wait_for_file_access None |> async.let' 00:25:18 v #31024 > > trace Debug (fun () => "5") id 00:25:18 v #31025 > > inl text = path |> read_all_text_async |> async.let' 00:25:18 v #31026 > > trace Debug (fun () => "6") id 00:25:18 v #31027 > > child |> async.do 00:25:18 v #31028 > > trace Debug (fun () => "7") id 00:25:18 v #31029 > > (retries, text) |> return 00:25:18 v #31030 > > |> async.new_async_unit 00:25:18 v #31031 > > |> async.run_with_timeout 3000 00:25:18 v #31032 > > |> function 00:25:18 v #31033 > > | Some ((retries : i64), text) => 00:25:18 v #31034 > > retries 00:25:18 v #31035 > > |> _assert_between 00:25:18 v #31036 > > (if platform.is_windows () then 50 else 100) 00:25:18 v #31037 > > (if platform.is_windows () then 180 else 200) 00:25:18 v #31038 > > 00:25:18 v #31039 > > text |> _assert_eq (join "1") 00:25:18 v #31040 > > 00:25:18 v #31041 > > true 00:25:18 v #31042 > > | _ => false 00:25:18 v #31043 > > |> _assert_eq true 00:25:27 v #31044 > > 00:25:27 v #31045 > > ── [ 8.80s - stdout ] ────────────────────────────────────────────────────────── 00:25:27 v #31046 > > │ 00:00:00 d #1 1 00:25:27 v #31047 > > │ 00:00:00 d #2 2 00:25:27 v #31048 > > │ 00:00:00 d #3 3 00:25:27 v #31049 > > │ 00:00:00 d #4 _1 00:25:27 v #31050 > > │ 00:00:00 d #5 _2 00:25:27 v #31051 > > │ 00:00:00 d #6 4 00:25:27 v #31052 > > │ 00:00:01 d #7 file_system.wait_for_file_access / { path 00:25:27 v #31053 > > = test.txt; retry = 100; ex = System.IO.IOException: The process cannot access 00:25:27 v #31054 > > the file 00:25:27 v #31055 > > '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test.t 00:25:27 v #31056 > > xt' because it is being used by another process. } 00:25:27 v #31057 > > │ 00:00:02 d #8 _3 00:25:27 v #31058 > > │ 00:00:02 d #9 _4 00:25:27 v #31059 > > │ 00:00:02 d #10 _5 00:25:27 v #31060 > > │ 00:00:02 d #11 _6 00:25:27 v #31061 > > │ 00:00:02 d #12 5 00:25:27 v #31062 > > │ 00:00:02 d #13 6 00:25:27 v #31063 > > │ 00:00:02 d #14 7 00:25:27 v #31064 > > │ __assert_between / actual: 195L / expected: struct (100L, 00:25:27 v #31065 > > 200L) 00:25:27 v #31066 > > │ __assert_eq / actual: "1" / expected: "1" 00:25:27 v #31067 > > │ __assert_eq / actual: true / expected: true 00:25:27 v #31068 > > │ 00:25:27 v #31069 > > 00:25:27 v #31070 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:27 v #31071 > > │ ### read_all_text_retry_async 00:25:27 v #31072 > > 00:25:27 v #31073 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:27 v #31074 > > let read_all_text_retry_async full_path : async.async (optionm'.option' string) 00:25:27 v #31075 > > = 00:25:27 v #31076 > > let rec loop (retry : i64) = 00:25:27 v #31077 > > fun () => 00:25:27 v #31078 > > try_unit 00:25:27 v #31079 > > fun () => 00:25:27 v #31080 > > if retry > 0 00:25:27 v #31081 > > then 00:25:27 v #31082 > > full_path 00:25:27 v #31083 > > |> wait_for_file_access_read 00:25:27 v #31084 > > |> async.run_with_timeout_async 1000 00:25:27 v #31085 > > |> async.ignore 00:25:27 v #31086 > > |> async.do 00:25:27 v #31087 > > full_path |> read_all_text_async |> async.map (Some >> 00:25:27 v #31088 > > optionm'.box) |> async.return_await 00:25:27 v #31089 > > fun ex => 00:25:27 v #31090 > > fix_condition 00:25:27 v #31091 > > fun () => retry <> 0 00:25:27 v #31092 > > fun () => 00:25:27 v #31093 > > trace Debug 00:25:27 v #31094 > > fun () => 00:25:27 v #31095 > > "file_system.read_all_text_retry_async" 00:25:27 v #31096 > > fun () => { 00:25:27 v #31097 > > retry 00:25:27 v #31098 > > ex = ex () |> sm'.format_exception 00:25:27 v #31099 > > } 00:25:27 v #31100 > > (None : _ string) |> optionm'.box |> return 00:25:27 v #31101 > > fun () => 00:25:27 v #31102 > > loop (retry + 1) |> async.return_await 00:25:27 v #31103 > > |> async.new_async 00:25:27 v #31104 > > loop 0 00:25:27 v #31105 > > 00:25:27 v #31106 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:27 v #31107 > > │ ### move_file_async 00:25:27 v #31108 > > 00:25:27 v #31109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:27 v #31110 > > let move_file_async new_path old_path : _ i64 = 00:25:27 v #31111 > > let rec loop (retry : i64) = 00:25:27 v #31112 > > run_target function 00:25:27 v #31113 > > | Fsharp (Native) => fun () => 00:25:27 v #31114 > > fun () => 00:25:27 v #31115 > > try_unit 00:25:27 v #31116 > > fun () => 00:25:27 v #31117 > > old_path |> file_move new_path 00:25:27 v #31118 > > return retry 00:25:27 v #31119 > > fun ex => 00:25:27 v #31120 > > if retry % 100 = 0 then 00:25:27 v #31121 > > trace Warning 00:25:27 v #31122 > > fun () => "move_file_async" 00:25:27 v #31123 > > fun () => { 00:25:27 v #31124 > > old_path = old_path |> get_file_name 00:25:27 v #31125 > > new_path = new_path |> get_file_name 00:25:27 v #31126 > > ex = ex () |> sm'.format_exception 00:25:27 v #31127 > > } 00:25:27 v #31128 > > async.sleep 10 |> async.do 00:25:27 v #31129 > > loop (retry + 1) |> async.return_await 00:25:27 v #31130 > > |> async.new_async_unit 00:25:27 v #31131 > > | _ => fun () => null () 00:25:27 v #31132 > > loop 0 00:25:27 v #31133 > > 00:25:27 v #31134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:27 v #31135 > > //// test 00:25:27 v #31136 > > //// timeout=30000 00:25:27 v #31137 > > 00:25:27 v #31138 > > inl lock_file path = 00:25:27 v #31139 > > fun () => 00:25:27 v #31140 > > trace Debug (fun () => "_1") id 00:25:27 v #31141 > > file_stream 00:25:27 v #31142 > > path 00:25:27 v #31143 > > ModeOpen 00:25:27 v #31144 > > AccessReadWrite 00:25:27 v #31145 > > ShareNone 00:25:27 v #31146 > > |> use 00:25:27 v #31147 > > |> ignore 00:25:27 v #31148 > > trace Debug (fun () => "_2") id 00:25:27 v #31149 > > async.sleep 2000 |> async.do 00:25:27 v #31150 > > trace Debug (fun () => "_3") id 00:25:27 v #31151 > > |> async.new_async 00:25:27 v #31152 > > 00:25:27 v #31153 > > fun () => 00:25:27 v #31154 > > inl file_name = "test.txt" 00:25:27 v #31155 > > inl text = "0" 00:25:27 v #31156 > > 00:25:27 v #31157 > > inl temp_dir, disposable = 00:25:27 v #31158 > > (file_name, text) 00:25:27 v #31159 > > |> sm'.format_debug 00:25:27 v #31160 > > |> crypto.hash_text 00:25:27 v #31161 > > |> create_temp_dir' 00:25:27 v #31162 > > disposable |> use |> ignore 00:25:27 v #31163 > > let path = temp_dir </> file_name 00:25:27 v #31164 > > let new_path = temp_dir </> "test2.txt" 00:25:27 v #31165 > > 00:25:27 v #31166 > > trace Debug (fun () => "1") id 00:25:27 v #31167 > > text |> write_all_text_async path |> async.do 00:25:27 v #31168 > > trace Debug (fun () => "2") id 00:25:27 v #31169 > > inl child = lock_file path |> async.start_child |> async.let' 00:25:27 v #31170 > > trace Debug (fun () => "3") id 00:25:27 v #31171 > > async.sleep 1 |> async.do 00:25:27 v #31172 > > trace Debug (fun () => "4") id 00:25:27 v #31173 > > inl retries1 = path |> move_file_async new_path |> async.let' 00:25:27 v #31174 > > trace Debug (fun () => "5") id 00:25:27 v #31175 > > inl retries2 = new_path |> wait_for_file_access None |> async.let' 00:25:27 v #31176 > > trace Debug (fun () => "6") id 00:25:27 v #31177 > > inl text = new_path |> read_all_text_async |> async.let' 00:25:27 v #31178 > > trace Debug (fun () => "7") id 00:25:27 v #31179 > > child |> async.do 00:25:27 v #31180 > > trace Debug (fun () => "8") id 00:25:27 v #31181 > > (retries1, retries2, text) |> return 00:25:27 v #31182 > > |> async.new_async_unit 00:25:27 v #31183 > > |> async.run_with_timeout 3000 00:25:27 v #31184 > > |> function 00:25:27 v #31185 > > | Some (retries1, retries2, text) => 00:25:27 v #31186 > > retries1 00:25:27 v #31187 > > |> _assert_between 00:25:27 v #31188 > > (if platform.is_windows () then 50i64 else 0) 00:25:27 v #31189 > > (if platform.is_windows () then 200 else 0) 00:25:27 v #31190 > > 00:25:27 v #31191 > > retries2 00:25:27 v #31192 > > |> _assert_between 00:25:27 v #31193 > > (if platform.is_windows () then 0i64 else 100) 00:25:27 v #31194 > > (if platform.is_windows () then 0 else 200) 00:25:27 v #31195 > > 00:25:27 v #31196 > > text |> _assert_eq (join "0") 00:25:27 v #31197 > > 00:25:27 v #31198 > > true 00:25:27 v #31199 > > | _ => false 00:25:27 v #31200 > > |> _assert_eq true 00:25:38 v #31201 > > 00:25:38 v #31202 > > ── [ 10.79s - stdout ] ───────────────────────────────────────────────────────── 00:25:38 v #31203 > > │ 00:00:00 d #1 1 00:25:38 v #31204 > > │ 00:00:00 d #2 2 00:25:38 v #31205 > > │ 00:00:00 d #3 3 00:25:38 v #31206 > > │ 00:00:00 d #4 _1 00:25:38 v #31207 > > │ 00:00:00 d #5 _2 00:25:38 v #31208 > > │ 00:00:00 d #6 4 00:25:38 v #31209 > > │ 00:00:00 d #7 5 00:25:38 v #31210 > > │ 00:00:01 d #8 file_system.wait_for_file_access / { path 00:25:38 v #31211 > > = test2.txt; retry = 100; ex = System.IO.IOException: The process cannot access 00:25:38 v #31212 > > the file 00:25:38 v #31213 > > '/tmp/!create_temp_path_/dotnet-repl/613830ed-016e-d959-8d21-02dc1c63c252/test2. 00:25:38 v #31214 > > txt' because it is being used by another process. } 00:25:38 v #31215 > > │ 00:00:02 d #9 _3 00:25:38 v #31216 > > │ 00:00:02 d #10 6 00:25:38 v #31217 > > │ 00:00:02 d #11 7 00:25:38 v #31218 > > │ 00:00:02 d #12 8 00:25:38 v #31219 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) 00:25:38 v #31220 > > │ __assert_between / actual: 193L / expected: struct (100L, 00:25:38 v #31221 > > 200L) 00:25:38 v #31222 > > │ __assert_eq / actual: "0" / expected: "0" 00:25:38 v #31223 > > │ __assert_eq / actual: true / expected: true 00:25:38 v #31224 > > │ 00:25:38 v #31225 > > 00:25:38 v #31226 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:38 v #31227 > > │ ### delete_file_async 00:25:38 v #31228 > > 00:25:38 v #31229 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:38 v #31230 > > let delete_file_async path : _ i64 = 00:25:38 v #31231 > > let rec loop (retry : i64) = 00:25:38 v #31232 > > run_target function 00:25:38 v #31233 > > | Fsharp (Native) => fun () => 00:25:38 v #31234 > > fun () => 00:25:38 v #31235 > > try_unit 00:25:38 v #31236 > > fun () => 00:25:38 v #31237 > > path |> file_delete 00:25:38 v #31238 > > return retry 00:25:38 v #31239 > > fun ex => 00:25:38 v #31240 > > if retry % 100 = 0 then 00:25:38 v #31241 > > trace Warning 00:25:38 v #31242 > > fun () => "delete_file_async" 00:25:38 v #31243 > > fun () => { 00:25:38 v #31244 > > path = path |> get_file_name 00:25:38 v #31245 > > ex = ex () |> sm'.format_exception 00:25:38 v #31246 > > } 00:25:38 v #31247 > > async.sleep 10 |> async.do 00:25:38 v #31248 > > loop (retry + 1) |> async.return_await 00:25:38 v #31249 > > |> async.new_async 00:25:38 v #31250 > > | _ => fun () => null () 00:25:38 v #31251 > > loop 0 00:25:38 v #31252 > > 00:25:38 v #31253 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:38 v #31254 > > //// test 00:25:38 v #31255 > > //// timeout=30000 00:25:38 v #31256 > > 00:25:38 v #31257 > > inl lock_file path = 00:25:38 v #31258 > > fun () => 00:25:38 v #31259 > > trace Debug (fun () => "_1") id 00:25:38 v #31260 > > file_stream 00:25:38 v #31261 > > path 00:25:38 v #31262 > > ModeOpen 00:25:38 v #31263 > > AccessReadWrite 00:25:38 v #31264 > > ShareNone 00:25:38 v #31265 > > |> use 00:25:38 v #31266 > > |> ignore 00:25:38 v #31267 > > trace Debug (fun () => "_2") id 00:25:38 v #31268 > > async.sleep 2000 |> async.do 00:25:38 v #31269 > > trace Debug (fun () => "_3") id 00:25:38 v #31270 > > |> async.new_async 00:25:38 v #31271 > > 00:25:38 v #31272 > > fun () => 00:25:38 v #31273 > > inl file_name = "test.txt" 00:25:38 v #31274 > > inl text = "0" 00:25:38 v #31275 > > 00:25:38 v #31276 > > inl temp_dir, disposable = 00:25:38 v #31277 > > (file_name, text) 00:25:38 v #31278 > > |> sm'.format_debug 00:25:38 v #31279 > > |> crypto.hash_text 00:25:38 v #31280 > > |> create_temp_dir' 00:25:38 v #31281 > > disposable |> use |> ignore 00:25:38 v #31282 > > inl path = temp_dir </> file_name 00:25:38 v #31283 > > 00:25:38 v #31284 > > trace Debug (fun () => "1") id 00:25:38 v #31285 > > text |> write_all_text_async path |> async.do 00:25:38 v #31286 > > trace Debug (fun () => "2") id 00:25:38 v #31287 > > inl child = lock_file path |> async.start_child |> async.let' 00:25:38 v #31288 > > trace Debug (fun () => "3") id 00:25:38 v #31289 > > async.sleep 1 |> async.do 00:25:38 v #31290 > > trace Debug (fun () => "4") id 00:25:38 v #31291 > > inl retries = delete_file_async path |> async.let' 00:25:38 v #31292 > > trace Debug (fun () => "5") id 00:25:38 v #31293 > > child |> async.do 00:25:38 v #31294 > > trace Debug (fun () => "6") id 00:25:38 v #31295 > > return retries 00:25:38 v #31296 > > |> async.new_async_unit 00:25:38 v #31297 > > |> async.run_with_timeout 3000 00:25:38 v #31298 > > |> function 00:25:38 v #31299 > > | Some (retries : i64) => 00:25:38 v #31300 > > retries 00:25:38 v #31301 > > |> _assert_between 00:25:38 v #31302 > > (if platform.is_windows () then 50 else 0) 00:25:38 v #31303 > > (if platform.is_windows () then 180 else 0) 00:25:38 v #31304 > > 00:25:38 v #31305 > > true 00:25:38 v #31306 > > | _ => false 00:25:38 v #31307 > > |> _assert_eq true 00:25:47 v #31308 > > 00:25:47 v #31309 > > ── [ 8.50s - stdout ] ────────────────────────────────────────────────────────── 00:25:47 v #31310 > > │ 00:00:00 d #1 1 00:25:47 v #31311 > > │ 00:00:00 d #2 2 00:25:47 v #31312 > > │ 00:00:00 d #3 3 00:25:47 v #31313 > > │ 00:00:00 d #4 _1 00:25:47 v #31314 > > │ 00:00:00 d #5 _2 00:25:47 v #31315 > > │ 00:00:00 d #6 4 00:25:47 v #31316 > > │ 00:00:00 d #7 5 00:25:47 v #31317 > > │ 00:00:02 d #8 _3 00:25:47 v #31318 > > │ 00:00:02 d #9 6 00:25:47 v #31319 > > │ __assert_between / actual: 0L / expected: struct (0L, 0L) 00:25:47 v #31320 > > │ __assert_eq / actual: true / expected: true 00:25:47 v #31321 > > │ 00:25:47 v #31322 > > 00:25:47 v #31323 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:25:47 v #31324 > > │ ## main 00:25:47 v #31325 > > 00:25:47 v #31326 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:25:47 v #31327 > > inl main () = 00:25:47 v #31328 > > init_trace_state None 00:25:47 v #31329 > > $'let delete_directory_async x = !delete_directory_async x' : () 00:25:47 v #31330 > > $'let wait_for_file_access x = !wait_for_file_access x' : () 00:25:47 v #31331 > > $'let wait_for_file_access_read x = !wait_for_file_access_read x' : () 00:25:47 v #31332 > > $'let read_all_text_async x = !read_all_text_async x' : () 00:25:47 v #31333 > > $'let file_exists_content x = !file_exists_content x' : () 00:25:47 v #31334 > > $'let write_all_text_async x = !write_all_text_async x' : () 00:25:47 v #31335 > > $'let write_all_text_exists x = !write_all_text_exists_async x' : () 00:25:47 v #31336 > > $'let delete_file_async x = !delete_file_async x' : () 00:25:47 v #31337 > > $'let move_file_async x = !move_file_async x' : () 00:25:47 v #31338 > > $'let read_all_text_retry_async x = !read_all_text_retry_async x' : () 00:25:47 v #31339 > > $'let create_temp_path () = !create_temp_path ()' : () 00:25:47 v #31340 > > $'let create_temp_dir () = !create_temp_dir ()' : () 00:25:47 v #31341 > > $'let create_temp_dir\' x = !create_temp_dir' x' : () 00:25:47 v #31342 > > $'let get_source_directory () = !get_source_directory ()' : () 00:25:47 v #31343 > > $'let normalize_path x = !normalize_path x' : () 00:25:47 v #31344 > > $'let new_file_uri x = !new_file_uri x' : () 00:25:47 v #31345 > > $'let get_workspace_root () = !get_workspace_root ()' : () 00:25:47 v #31346 > > $'let trace_file x = !trace_file x' : () 00:25:47 v #31347 > > $'let init_trace_file x = !init_trace_file x' : () 00:25:47 v #31348 > > $'let link_directory x = !link_directory x' : () 00:25:47 v #31349 > > inl combine x = (</>) x 00:25:47 v #31350 > > $'let (</>) x = !combine x' : () 00:25:56 v #31351 > 00:02:05 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 90240 } 00:25:56 v #31352 > 00:02:05 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:56 v #31353 > 00:02:05 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.ipynb to html 00:25:56 v #31354 > 00:02:05 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:25:56 v #31355 > 00:02:05 v #7 ! validate(nb) 00:25:57 v #31356 > 00:02:06 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:25:57 v #31357 > 00:02:06 v #9 ! return _pygments_highlight( 00:25:58 v #31358 > 00:02:07 v #10 ! [NbConvertApp] Writing 630709 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html 00:25:58 v #31359 > 00:02:07 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:25:58 v #31360 > 00:02:07 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:25:58 v #31361 > 00:02:07 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/file_system.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:59 v #31362 > 00:02:08 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:25:59 v #31363 > 00:02:08 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:25:59 v #31364 > 00:02:08 d #16 spiral.run / dib / { exit_code = 0; result_length = 91205 } 00:25:59 d #31365 runtime.execute_with_options_async / { exit_code = 0; output_length = 98337 } 00:25:59 d #39 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path file_system.dib --retries 3 00:25:59 d #31366 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path networking.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:59 v #31367 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "networking.dib", "--retries", "3"])) } 00:25:59 v #31368 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:26:00 v #31369 > > 00:26:00 v #31370 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:00 v #31371 > > │ # networking 00:26:02 v #31372 > > 00:26:02 v #31373 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:02 v #31374 > > open rust.rust_operators 00:26:03 v #31375 > > 00:26:03 v #31376 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:03 v #31377 > > //// test 00:26:03 v #31378 > > 00:26:03 v #31379 > > open testing 00:26:03 v #31380 > > 00:26:03 v #31381 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:03 v #31382 > > │ ## rust 00:26:03 v #31383 > > 00:26:03 v #31384 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:03 v #31385 > > │ ### reqwest_response 00:26:03 v #31386 > > 00:26:03 v #31387 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:03 v #31388 > > nominal reqwest_response = 00:26:03 v #31389 > > `( 00:26:03 v #31390 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:26:03 v #31391 > > Fable.Core.Emit(\"reqwest_wasm::Response\")>]]\n#endif\ntype reqwest_Response = 00:26:03 v #31392 > > class end" 00:26:03 v #31393 > > $'' : $'reqwest_Response' 00:26:03 v #31394 > > ) 00:26:04 v #31395 > > 00:26:04 v #31396 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31397 > > │ ### reqwest_error 00:26:04 v #31398 > > 00:26:04 v #31399 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31400 > > nominal reqwest_error = 00:26:04 v #31401 > > `( 00:26:04 v #31402 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:26:04 v #31403 > > Fable.Core.Emit(\"reqwest_wasm::Error\")>]]\n#endif\ntype reqwest_Error = class 00:26:04 v #31404 > > end" 00:26:04 v #31405 > > $'' : $'reqwest_Error' 00:26:04 v #31406 > > ) 00:26:04 v #31407 > > 00:26:04 v #31408 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31409 > > │ ### request_builder 00:26:04 v #31410 > > 00:26:04 v #31411 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31412 > > nominal request_builder = 00:26:04 v #31413 > > `( 00:26:04 v #31414 > > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; 00:26:04 v #31415 > > Fable.Core.Emit(\"reqwest_wasm::RequestBuilder\")>]]\n#endif\ntype 00:26:04 v #31416 > > reqwest_RequestBuilder = class end" 00:26:04 v #31417 > > $'' : $'reqwest_RequestBuilder' 00:26:04 v #31418 > > ) 00:26:04 v #31419 > > 00:26:04 v #31420 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31421 > > │ ### request_type 00:26:04 v #31422 > > 00:26:04 v #31423 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31424 > > union request_type = 00:26:04 v #31425 > > | Get 00:26:04 v #31426 > > | Post 00:26:04 v #31427 > > 00:26:04 v #31428 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31429 > > │ ### request 00:26:04 v #31430 > > 00:26:04 v #31431 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31432 > > type request = 00:26:04 v #31433 > > { 00:26:04 v #31434 > > url : string 00:26:04 v #31435 > > request_type : request_type 00:26:04 v #31436 > > body : string 00:26:04 v #31437 > > json : bool 00:26:04 v #31438 > > auto_refresh : bool 00:26:04 v #31439 > > } 00:26:04 v #31440 > > 00:26:04 v #31441 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31442 > > │ ### new_request_get 00:26:04 v #31443 > > 00:26:04 v #31444 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31445 > > inl new_request_get (url : string) : request_builder = 00:26:04 v #31446 > > inl url = join url 00:26:04 v #31447 > > inl url = url |> sm'.to_std_string 00:26:04 v #31448 > > inl url = join url 00:26:04 v #31449 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:26:04 v #31450 > > err.to_string())?.get(!url)"') 00:26:04 v #31451 > > 00:26:04 v #31452 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:04 v #31453 > > │ ### new_request_post 00:26:04 v #31454 > > 00:26:04 v #31455 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:04 v #31456 > > inl new_request_post (url : string) : request_builder = 00:26:04 v #31457 > > inl url = join url 00:26:04 v #31458 > > inl url = url |> sm'.to_std_string 00:26:04 v #31459 > > inl url = join url 00:26:04 v #31460 > > !\($'"reqwest_wasm::Client::builder().build().map_err(|err| 00:26:04 v #31461 > > err.to_string())?.post(!url)"') 00:26:05 v #31462 > > 00:26:05 v #31463 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31464 > > │ ### request_send 00:26:05 v #31465 > > 00:26:05 v #31466 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31467 > > inl request_send (request : request_builder) : async.future_pin (resultm.result' 00:26:05 v #31468 > > reqwest_response reqwest_error) = 00:26:05 v #31469 > > inl request = join request 00:26:05 v #31470 > > !\($'"Box::pin(reqwest_wasm::RequestBuilder::send(!request))"') 00:26:05 v #31471 > > 00:26:05 v #31472 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31473 > > │ ### request_body 00:26:05 v #31474 > > 00:26:05 v #31475 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31476 > > inl request_body (body : string) (request : request_builder) : request_builder = 00:26:05 v #31477 > > inl body = body |> sm'.to_std_string 00:26:05 v #31478 > > !\\(body, $'"reqwest_wasm::RequestBuilder::body(!request, $0)"') 00:26:05 v #31479 > > 00:26:05 v #31480 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31481 > > │ ### request_header 00:26:05 v #31482 > > 00:26:05 v #31483 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31484 > > inl request_header (key : string) (value : string) (request : request_builder) : 00:26:05 v #31485 > > request_builder = 00:26:05 v #31486 > > inl request = join request 00:26:05 v #31487 > > inl key = key |> sm'.to_std_string 00:26:05 v #31488 > > inl value = value |> sm'.to_std_string 00:26:05 v #31489 > > !\\((key, value), $'"reqwest_wasm::RequestBuilder::header(!request, $0, 00:26:05 v #31490 > > $1)"') 00:26:05 v #31491 > > 00:26:05 v #31492 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31493 > > │ ### request_json 00:26:05 v #31494 > > 00:26:05 v #31495 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31496 > > inl request_json forall t. (obj : t) (request : request_builder) : 00:26:05 v #31497 > > request_builder = 00:26:05 v #31498 > > !\($'"reqwest_wasm::RequestBuilder::json(!request, &!obj)"') 00:26:05 v #31499 > > 00:26:05 v #31500 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31501 > > │ ### response_text 00:26:05 v #31502 > > 00:26:05 v #31503 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31504 > > inl response_text (response : reqwest_response) : async.future_pin 00:26:05 v #31505 > > (resultm.result' sm'.std_string reqwest_error) = 00:26:05 v #31506 > > !\($'"Box::pin(reqwest_wasm::Response::text(!response))"') 00:26:05 v #31507 > > 00:26:05 v #31508 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31509 > > │ ## fsharp 00:26:05 v #31510 > > 00:26:05 v #31511 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:05 v #31512 > > │ ### tcp_client 00:26:05 v #31513 > > 00:26:05 v #31514 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:05 v #31515 > > nominal tcp_client = 00:26:05 v #31516 > > `( 00:26:05 v #31517 > > global "#if FABLE_COMPILER\n\ntype System_Net_Sockets_TcpClient = 00:26:05 v #31518 > > System.IDisposable\n#else\ntype System_Net_Sockets_TcpClient = 00:26:05 v #31519 > > System.Net.Sockets.TcpClient\n#endif\n" 00:26:05 v #31520 > > $'' : $'System_Net_Sockets_TcpClient' 00:26:05 v #31521 > > ) 00:26:06 v #31522 > > 00:26:06 v #31523 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31524 > > │ ### new_tcp_client 00:26:06 v #31525 > > 00:26:06 v #31526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31527 > > inl new_tcp_client () : tcp_client = 00:26:06 v #31528 > > run_target function 00:26:06 v #31529 > > | Fsharp (Native) => fun () => $'new `tcp_client ()' 00:26:06 v #31530 > > | _ => fun () => null () 00:26:06 v #31531 > > 00:26:06 v #31532 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31533 > > │ ### ip_address 00:26:06 v #31534 > > 00:26:06 v #31535 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31536 > > nominal ip_address = $'System.Net.IPAddress' 00:26:06 v #31537 > > 00:26:06 v #31538 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31539 > > │ ### ip_address_parse 00:26:06 v #31540 > > 00:26:06 v #31541 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31542 > > inl ip_address_parse (s : string) : ip_address = 00:26:06 v #31543 > > s |> $'`ip_address.Parse' 00:26:06 v #31544 > > 00:26:06 v #31545 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31546 > > │ ### tcp_listener 00:26:06 v #31547 > > 00:26:06 v #31548 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31549 > > nominal tcp_listener = $'System.Net.Sockets.TcpListener' 00:26:06 v #31550 > > 00:26:06 v #31551 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31552 > > │ ### new_tcp_listener 00:26:06 v #31553 > > 00:26:06 v #31554 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31555 > > inl new_tcp_listener (ip_address : ip_address) (port : i32) : tcp_listener = 00:26:06 v #31556 > > $'new `tcp_listener (!ip_address, !port)' 00:26:06 v #31557 > > 00:26:06 v #31558 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31559 > > │ ### listener_start 00:26:06 v #31560 > > 00:26:06 v #31561 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31562 > > inl listener_start (listener : tcp_listener) : () = 00:26:06 v #31563 > > listener |> $'_.Start()' 00:26:06 v #31564 > > 00:26:06 v #31565 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:06 v #31566 > > │ ### listener_stop 00:26:06 v #31567 > > 00:26:06 v #31568 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:06 v #31569 > > inl listener_stop (listener : tcp_listener) : () = 00:26:06 v #31570 > > listener |> $'_.Stop()' 00:26:07 v #31571 > > 00:26:07 v #31572 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:07 v #31573 > > │ ### client_connect_async 00:26:07 v #31574 > > 00:26:07 v #31575 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:07 v #31576 > > inl client_connect_async 00:26:07 v #31577 > > (host : string) 00:26:07 v #31578 > > (port : i32) 00:26:07 v #31579 > > (ct : threading.cancellation_token) 00:26:07 v #31580 > > (client : tcp_client) 00:26:07 v #31581 > > : async.value_task 00:26:07 v #31582 > > = 00:26:07 v #31583 > > run_target function 00:26:07 v #31584 > > | Fsharp (Native) => fun () => $'!client.ConnectAsync (!host, !port, 00:26:07 v #31585 > > !ct)' 00:26:07 v #31586 > > | _ => fun () => null () 00:26:07 v #31587 > > 00:26:07 v #31588 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:07 v #31589 > > │ ### test_port_open 00:26:07 v #31590 > > 00:26:07 v #31591 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:07 v #31592 > > let test_port_open host port : _ bool = async.new_async fun () => 00:26:07 v #31593 > > inl ct = async.cancellation_token () |> async.let' 00:26:07 v #31594 > > inl client = new_tcp_client () |> use 00:26:07 v #31595 > > try_unit 00:26:07 v #31596 > > fun () => 00:26:07 v #31597 > > client |> client_connect_async host port ct |> 00:26:07 v #31598 > > async.await_value_task_unit |> async.do 00:26:07 v #31599 > > return true 00:26:07 v #31600 > > fun ex => 00:26:07 v #31601 > > trace Verbose 00:26:07 v #31602 > > fun () => "networking.test_port_open" 00:26:07 v #31603 > > fun () => { port ex = ex () |> sm'.format_exception } 00:26:07 v #31604 > > return false 00:26:07 v #31605 > > 00:26:07 v #31606 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:07 v #31607 > > //// test 00:26:07 v #31608 > > 00:26:07 v #31609 > > test_port_open "127.0.0.1" 65536 00:26:07 v #31610 > > |> async.run_with_timeout 120 00:26:07 v #31611 > > |> _assert_eq (Some false) 00:26:11 v #31612 > > 00:26:11 v #31613 > > ── [ 3.71s - stdout ] ────────────────────────────────────────────────────────── 00:26:11 v #31614 > > │ 00:00:00 v #1 networking.test_port_open / { port = 00:26:11 v #31615 > > 65536; ex = System.ArgumentOutOfRangeException: Specified argument was out of 00:26:11 v #31616 > > the range of valid values. (Parameter 'port') } 00:26:11 v #31617 > > │ __assert_eq / actual: US6_0 false / expected: US6_0 false 00:26:11 v #31618 > > │ 00:26:11 v #31619 > > 00:26:11 v #31620 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:11 v #31621 > > │ ### test_port_open_timeout 00:26:11 v #31622 > > 00:26:11 v #31623 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:11 v #31624 > > let test_port_open_timeout timeout host port : _ bool = async.new_async_unit fun 00:26:11 v #31625 > > () => 00:26:11 v #31626 > > test_port_open host port 00:26:11 v #31627 > > |> async.run_with_timeout_async timeout 00:26:11 v #31628 > > |> async.let' 00:26:11 v #31629 > > |> function 00:26:11 v #31630 > > | None => false 00:26:11 v #31631 > > | Some result => result 00:26:11 v #31632 > > |> return 00:26:11 v #31633 > > 00:26:11 v #31634 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:11 v #31635 > > //// test 00:26:11 v #31636 > > 00:26:11 v #31637 > > test_port_open_timeout 120 "127.0.0.1" 65535 00:26:11 v #31638 > > |> async.run_synchronously 00:26:11 v #31639 > > |> _assert_eq false 00:26:14 v #31640 > > 00:26:14 v #31641 > > ── [ 3.09s - stdout ] ────────────────────────────────────────────────────────── 00:26:14 v #31642 > > │ 00:00:00 v #1 networking.test_port_open / { port = 00:26:14 v #31643 > > 65535; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:14 v #31644 > > refused) } 00:26:14 v #31645 > > │ __assert_eq / actual: false / expected: false 00:26:14 v #31646 > > │ 00:26:14 v #31647 > > 00:26:14 v #31648 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:14 v #31649 > > │ ### wait_for_port_access 00:26:14 v #31650 > > 00:26:14 v #31651 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:14 v #31652 > > let wait_for_port_access timeout status host port : _ i64 = 00:26:14 v #31653 > > let rec loop retry : _ i64 = 00:26:14 v #31654 > > fun () => 00:26:14 v #31655 > > inl is_port_open = 00:26:14 v #31656 > > match timeout |> optionm'.unbox with 00:26:14 v #31657 > > | None => test_port_open host port 00:26:14 v #31658 > > | Some timeout => test_port_open_timeout timeout host port 00:26:14 v #31659 > > |> async.let' 00:26:14 v #31660 > > fix_condition 00:26:14 v #31661 > > fun () => is_port_open = status 00:26:14 v #31662 > > fun () => retry |> return 00:26:14 v #31663 > > fun () => 00:26:14 v #31664 > > if retry % 100 = 0 then 00:26:14 v #31665 > > trace Verbose 00:26:14 v #31666 > > fun () => "networking.wait_for_port_access" 00:26:14 v #31667 > > fun () => { port retry timeout status } 00:26:14 v #31668 > > async.sleep 10 |> async.do 00:26:14 v #31669 > > loop (retry + 1) |> async.return_await 00:26:14 v #31670 > > |> async.new_async_unit 00:26:14 v #31671 > > loop 1i64 00:26:14 v #31672 > > 00:26:14 v #31673 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:14 v #31674 > > //// test 00:26:14 v #31675 > > 00:26:14 v #31676 > > inl lock_port host port = async.new_async fun () => 00:26:14 v #31677 > > trace Debug (fun () => "_1") id 00:26:14 v #31678 > > async.sleep 5000 |> async.do 00:26:14 v #31679 > > inl listener = new_tcp_listener (host |> ip_address_parse) port |> use 00:26:14 v #31680 > > trace Debug (fun () => "_2") id 00:26:14 v #31681 > > listener |> listener_start 00:26:14 v #31682 > > trace Debug (fun () => "_3") id 00:26:14 v #31683 > > async.sleep 2000 |> async.do 00:26:14 v #31684 > > trace Debug (fun () => "_4") id 00:26:14 v #31685 > > $'!listener.Stop' () 00:26:14 v #31686 > > trace Debug (fun () => "_5") id 00:26:14 v #31687 > > 00:26:14 v #31688 > > inl host = "127.0.0.1" 00:26:14 v #31689 > > inl port = 5555i32 00:26:14 v #31690 > > 00:26:14 v #31691 > > fun () => 00:26:14 v #31692 > > trace Debug (fun () => "1") id 00:26:14 v #31693 > > inl child = lock_port host port |> async.start_child |> async.let' 00:26:14 v #31694 > > trace Debug (fun () => "2") id 00:26:14 v #31695 > > async.sleep 1 |> async.do 00:26:14 v #31696 > > trace Debug (fun () => "3") id 00:26:14 v #31697 > > inl retries1 = wait_for_port_access (None |> optionm'.box) true host port |> 00:26:14 v #31698 > > async.let' 00:26:14 v #31699 > > trace Debug (fun () => "4") id 00:26:14 v #31700 > > inl retries2 = wait_for_port_access (None |> optionm'.box) false host port 00:26:14 v #31701 > > |> async.let' 00:26:14 v #31702 > > trace Debug (fun () => "5") id 00:26:14 v #31703 > > child |> async.do 00:26:14 v #31704 > > trace Debug (fun () => "6") id 00:26:14 v #31705 > > (retries1, retries2) |> return 00:26:14 v #31706 > > |> async.new_async_unit 00:26:14 v #31707 > > |> async.run_with_timeout 20000 00:26:14 v #31708 > > |> function 00:26:14 v #31709 > > | Some (retries1, retries2) => 00:26:14 v #31710 > > retries1 00:26:14 v #31711 > > |> _assert_between 00:26:14 v #31712 > > if platform.is_windows () then 2i64 else 2 00:26:14 v #31713 > > if platform.is_windows () then 5 else 1500 00:26:14 v #31714 > > 00:26:14 v #31715 > > retries2 00:26:14 v #31716 > > |> _assert_between 00:26:14 v #31717 > > if platform.is_windows () then 80i64 else 80 00:26:14 v #31718 > > if platform.is_windows () then 200 else 600 00:26:14 v #31719 > > 00:26:14 v #31720 > > true 00:26:14 v #31721 > > | _ => false 00:26:14 v #31722 > > |> _assert_eq true 00:26:28 v #31723 > > 00:26:28 v #31724 > > ── [ 13.96s - stdout ] ───────────────────────────────────────────────────────── 00:26:28 v #31725 > > │ 00:00:00 d #1 1 00:26:28 v #31726 > > │ 00:00:00 d #2 _1 00:26:28 v #31727 > > │ 00:00:00 d #3 2 00:26:28 v #31728 > > │ 00:00:00 d #4 3 00:26:28 v #31729 > > │ 00:00:00 v #5 networking.test_port_open / { port = 5555; 00:26:28 v #31730 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31731 > > refused) } 00:26:28 v #31732 > > │ 00:00:00 v #6 networking.test_port_open / { port = 5555; 00:26:28 v #31733 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31734 > > refused) } 00:26:28 v #31735 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5555; 00:26:28 v #31736 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31737 > > refused) } 00:26:28 v #31738 > > │ 00:00:00 v #8 networking.test_port_open / { port = 5555; 00:26:28 v #31739 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31740 > > refused) } 00:26:28 v #31741 > > │ 00:00:00 v #9 networking.test_port_open / { port = 5555; 00:26:28 v #31742 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31743 > > refused) } 00:26:28 v #31744 > > │ 00:00:00 v #10 networking.test_port_open / { port = 00:26:28 v #31745 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31746 > > refused) } 00:26:28 v #31747 > > │ 00:00:00 v #11 networking.test_port_open / { port = 00:26:28 v #31748 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31749 > > refused) } 00:26:28 v #31750 > > │ 00:00:00 v #12 networking.test_port_open / { port = 00:26:28 v #31751 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31752 > > refused) } 00:26:28 v #31753 > > │ 00:00:00 v #13 networking.test_port_open / { port = 00:26:28 v #31754 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31755 > > refused) } 00:26:28 v #31756 > > │ 00:00:00 v #14 networking.test_port_open / { port = 00:26:28 v #31757 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31758 > > refused) } 00:26:28 v #31759 > > │ 00:00:00 v #15 networking.test_port_open / { port = 00:26:28 v #31760 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31761 > > refused) } 00:26:28 v #31762 > > │ 00:00:00 v #16 networking.test_port_open / { port = 00:26:28 v #31763 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31764 > > refused) } 00:26:28 v #31765 > > │ 00:00:00 v #17 networking.test_port_open / { port = 00:26:28 v #31766 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31767 > > refused) } 00:26:28 v #31768 > > │ 00:00:00 v #18 networking.test_port_open / { port = 00:26:28 v #31769 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31770 > > refused) } 00:26:28 v #31771 > > │ 00:00:00 v #19 networking.test_port_open / { port = 00:26:28 v #31772 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31773 > > refused) } 00:26:28 v #31774 > > │ 00:00:00 v #20 networking.test_port_open / { port = 00:26:28 v #31775 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31776 > > refused) } 00:26:28 v #31777 > > │ 00:00:00 v #21 networking.test_port_open / { port = 00:26:28 v #31778 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31779 > > refused) } 00:26:28 v #31780 > > │ 00:00:00 v #22 networking.test_port_open / { port = 00:26:28 v #31781 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31782 > > refused) } 00:26:28 v #31783 > > │ 00:00:00 v #23 networking.test_port_open / { port = 00:26:28 v #31784 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31785 > > refused) } 00:26:28 v #31786 > > │ 00:00:00 v #24 networking.test_port_open / { port = 00:26:28 v #31787 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31788 > > refused) } 00:26:28 v #31789 > > │ 00:00:00 v #25 networking.test_port_open / { port = 00:26:28 v #31790 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31791 > > refused) } 00:26:28 v #31792 > > │ 00:00:00 v #26 networking.test_port_open / { port = 00:26:28 v #31793 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31794 > > refused) } 00:26:28 v #31795 > > │ 00:00:00 v #27 networking.test_port_open / { port = 00:26:28 v #31796 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31797 > > refused) } 00:26:28 v #31798 > > │ 00:00:00 v #28 networking.test_port_open / { port = 00:26:28 v #31799 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31800 > > refused) } 00:26:28 v #31801 > > │ 00:00:00 v #29 networking.test_port_open / { port = 00:26:28 v #31802 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31803 > > refused) } 00:26:28 v #31804 > > │ 00:00:00 v #30 networking.test_port_open / { port = 00:26:28 v #31805 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31806 > > refused) } 00:26:28 v #31807 > > │ 00:00:00 v #31 networking.test_port_open / { port = 00:26:28 v #31808 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31809 > > refused) } 00:26:28 v #31810 > > │ 00:00:00 v #32 networking.test_port_open / { port = 00:26:28 v #31811 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31812 > > refused) } 00:26:28 v #31813 > > │ 00:00:00 v #33 networking.test_port_open / { port = 00:26:28 v #31814 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31815 > > refused) } 00:26:28 v #31816 > > │ 00:00:00 v #34 networking.test_port_open / { port = 00:26:28 v #31817 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31818 > > refused) } 00:26:28 v #31819 > > │ 00:00:00 v #35 networking.test_port_open / { port = 00:26:28 v #31820 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31821 > > refused) } 00:26:28 v #31822 > > │ 00:00:00 v #36 networking.test_port_open / { port = 00:26:28 v #31823 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31824 > > refused) } 00:26:28 v #31825 > > │ 00:00:00 v #37 networking.test_port_open / { port = 00:26:28 v #31826 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31827 > > refused) } 00:26:28 v #31828 > > │ 00:00:00 v #38 networking.test_port_open / { port = 00:26:28 v #31829 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31830 > > refused) } 00:26:28 v #31831 > > │ 00:00:00 v #39 networking.test_port_open / { port = 00:26:28 v #31832 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31833 > > refused) } 00:26:28 v #31834 > > │ 00:00:00 v #40 networking.test_port_open / { port = 00:26:28 v #31835 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31836 > > refused) } 00:26:28 v #31837 > > │ 00:00:00 v #41 networking.test_port_open / { port = 00:26:28 v #31838 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31839 > > refused) } 00:26:28 v #31840 > > │ 00:00:00 v #42 networking.test_port_open / { port = 00:26:28 v #31841 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31842 > > refused) } 00:26:28 v #31843 > > │ 00:00:00 v #43 networking.test_port_open / { port = 00:26:28 v #31844 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31845 > > refused) } 00:26:28 v #31846 > > │ 00:00:00 v #44 networking.test_port_open / { port = 00:26:28 v #31847 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31848 > > refused) } 00:26:28 v #31849 > > │ 00:00:00 v #45 networking.test_port_open / { port = 00:26:28 v #31850 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31851 > > refused) } 00:26:28 v #31852 > > │ 00:00:00 v #46 networking.test_port_open / { port = 00:26:28 v #31853 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31854 > > refused) } 00:26:28 v #31855 > > │ 00:00:00 v #47 networking.test_port_open / { port = 00:26:28 v #31856 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31857 > > refused) } 00:26:28 v #31858 > > │ 00:00:00 v #48 networking.test_port_open / { port = 00:26:28 v #31859 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31860 > > refused) } 00:26:28 v #31861 > > │ 00:00:00 v #49 networking.test_port_open / { port = 00:26:28 v #31862 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31863 > > refused) } 00:26:28 v #31864 > > │ 00:00:00 v #50 networking.test_port_open / { port = 00:26:28 v #31865 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31866 > > refused) } 00:26:28 v #31867 > > │ 00:00:00 v #51 networking.test_port_open / { port = 00:26:28 v #31868 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31869 > > refused) } 00:26:28 v #31870 > > │ 00:00:00 v #52 networking.test_port_open / { port = 00:26:28 v #31871 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31872 > > refused) } 00:26:28 v #31873 > > │ 00:00:00 v #53 networking.test_port_open / { port = 00:26:28 v #31874 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31875 > > refused) } 00:26:28 v #31876 > > │ 00:00:00 v #54 networking.test_port_open / { port = 00:26:28 v #31877 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31878 > > refused) } 00:26:28 v #31879 > > │ 00:00:00 v #55 networking.test_port_open / { port = 00:26:28 v #31880 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31881 > > refused) } 00:26:28 v #31882 > > │ 00:00:00 v #56 networking.test_port_open / { port = 00:26:28 v #31883 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31884 > > refused) } 00:26:28 v #31885 > > │ 00:00:00 v #57 networking.test_port_open / { port = 00:26:28 v #31886 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31887 > > refused) } 00:26:28 v #31888 > > │ 00:00:00 v #58 networking.test_port_open / { port = 00:26:28 v #31889 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31890 > > refused) } 00:26:28 v #31891 > > │ 00:00:00 v #59 networking.test_port_open / { port = 00:26:28 v #31892 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31893 > > refused) } 00:26:28 v #31894 > > │ 00:00:00 v #60 networking.test_port_open / { port = 00:26:28 v #31895 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31896 > > refused) } 00:26:28 v #31897 > > │ 00:00:00 v #61 networking.test_port_open / { port = 00:26:28 v #31898 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31899 > > refused) } 00:26:28 v #31900 > > │ 00:00:00 v #62 networking.test_port_open / { port = 00:26:28 v #31901 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31902 > > refused) } 00:26:28 v #31903 > > │ 00:00:00 v #63 networking.test_port_open / { port = 00:26:28 v #31904 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31905 > > refused) } 00:26:28 v #31906 > > │ 00:00:00 v #64 networking.test_port_open / { port = 00:26:28 v #31907 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31908 > > refused) } 00:26:28 v #31909 > > │ 00:00:00 v #65 networking.test_port_open / { port = 00:26:28 v #31910 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31911 > > refused) } 00:26:28 v #31912 > > │ 00:00:00 v #66 networking.test_port_open / { port = 00:26:28 v #31913 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31914 > > refused) } 00:26:28 v #31915 > > │ 00:00:00 v #67 networking.test_port_open / { port = 00:26:28 v #31916 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31917 > > refused) } 00:26:28 v #31918 > > │ 00:00:00 v #68 networking.test_port_open / { port = 00:26:28 v #31919 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31920 > > refused) } 00:26:28 v #31921 > > │ 00:00:00 v #69 networking.test_port_open / { port = 00:26:28 v #31922 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31923 > > refused) } 00:26:28 v #31924 > > │ 00:00:00 v #70 networking.test_port_open / { port = 00:26:28 v #31925 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31926 > > refused) } 00:26:28 v #31927 > > │ 00:00:00 v #71 networking.test_port_open / { port = 00:26:28 v #31928 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31929 > > refused) } 00:26:28 v #31930 > > │ 00:00:00 v #72 networking.test_port_open / { port = 00:26:28 v #31931 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31932 > > refused) } 00:26:28 v #31933 > > │ 00:00:00 v #73 networking.test_port_open / { port = 00:26:28 v #31934 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31935 > > refused) } 00:26:28 v #31936 > > │ 00:00:00 v #74 networking.test_port_open / { port = 00:26:28 v #31937 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31938 > > refused) } 00:26:28 v #31939 > > │ 00:00:00 v #75 networking.test_port_open / { port = 00:26:28 v #31940 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31941 > > refused) } 00:26:28 v #31942 > > │ 00:00:00 v #76 networking.test_port_open / { port = 00:26:28 v #31943 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31944 > > refused) } 00:26:28 v #31945 > > │ 00:00:00 v #77 networking.test_port_open / { port = 00:26:28 v #31946 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31947 > > refused) } 00:26:28 v #31948 > > │ 00:00:00 v #78 networking.test_port_open / { port = 00:26:28 v #31949 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31950 > > refused) } 00:26:28 v #31951 > > │ 00:00:00 v #79 networking.test_port_open / { port = 00:26:28 v #31952 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31953 > > refused) } 00:26:28 v #31954 > > │ 00:00:00 v #80 networking.test_port_open / { port = 00:26:28 v #31955 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31956 > > refused) } 00:26:28 v #31957 > > │ 00:00:00 v #81 networking.test_port_open / { port = 00:26:28 v #31958 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31959 > > refused) } 00:26:28 v #31960 > > │ 00:00:00 v #82 networking.test_port_open / { port = 00:26:28 v #31961 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31962 > > refused) } 00:26:28 v #31963 > > │ 00:00:00 v #83 networking.test_port_open / { port = 00:26:28 v #31964 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31965 > > refused) } 00:26:28 v #31966 > > │ 00:00:00 v #84 networking.test_port_open / { port = 00:26:28 v #31967 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31968 > > refused) } 00:26:28 v #31969 > > │ 00:00:00 v #85 networking.test_port_open / { port = 00:26:28 v #31970 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31971 > > refused) } 00:26:28 v #31972 > > │ 00:00:00 v #86 networking.test_port_open / { port = 00:26:28 v #31973 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31974 > > refused) } 00:26:28 v #31975 > > │ 00:00:00 v #87 networking.test_port_open / { port = 00:26:28 v #31976 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31977 > > refused) } 00:26:28 v #31978 > > │ 00:00:00 v #88 networking.test_port_open / { port = 00:26:28 v #31979 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31980 > > refused) } 00:26:28 v #31981 > > │ 00:00:00 v #89 networking.test_port_open / { port = 00:26:28 v #31982 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31983 > > refused) } 00:26:28 v #31984 > > │ 00:00:00 v #90 networking.test_port_open / { port = 00:26:28 v #31985 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31986 > > refused) } 00:26:28 v #31987 > > │ 00:00:00 v #91 networking.test_port_open / { port = 00:26:28 v #31988 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31989 > > refused) } 00:26:28 v #31990 > > │ 00:00:00 v #92 networking.test_port_open / { port = 00:26:28 v #31991 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31992 > > refused) } 00:26:28 v #31993 > > │ 00:00:00 v #93 networking.test_port_open / { port = 00:26:28 v #31994 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31995 > > refused) } 00:26:28 v #31996 > > │ 00:00:00 v #94 networking.test_port_open / { port = 00:26:28 v #31997 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #31998 > > refused) } 00:26:28 v #31999 > > │ 00:00:00 v #95 networking.test_port_open / { port = 00:26:28 v #32000 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32001 > > refused) } 00:26:28 v #32002 > > │ 00:00:00 v #96 networking.test_port_open / { port = 00:26:28 v #32003 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32004 > > refused) } 00:26:28 v #32005 > > │ 00:00:00 v #97 networking.test_port_open / { port = 00:26:28 v #32006 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32007 > > refused) } 00:26:28 v #32008 > > │ 00:00:00 v #98 networking.test_port_open / { port = 00:26:28 v #32009 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32010 > > refused) } 00:26:28 v #32011 > > │ 00:00:01 v #99 networking.test_port_open / { port = 00:26:28 v #32012 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32013 > > refused) } 00:26:28 v #32014 > > │ 00:00:01 v #100 networking.test_port_open / { port = 00:26:28 v #32015 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32016 > > refused) } 00:26:28 v #32017 > > │ 00:00:01 v #101 networking.test_port_open / { port = 00:26:28 v #32018 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32019 > > refused) } 00:26:28 v #32020 > > │ 00:00:01 v #102 networking.test_port_open / { port = 00:26:28 v #32021 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32022 > > refused) } 00:26:28 v #32023 > > │ 00:00:01 v #103 networking.test_port_open / { port = 00:26:28 v #32024 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32025 > > refused) } 00:26:28 v #32026 > > │ 00:00:01 v #104 networking.test_port_open / { port = 00:26:28 v #32027 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32028 > > refused) } 00:26:28 v #32029 > > │ 00:00:01 v #105 networking.wait_for_port_access / { port 00:26:28 v #32030 > > = 5555; retry = 100; timeout = None; status = true } 00:26:28 v #32031 > > │ 00:00:01 v #106 networking.test_port_open / { port = 00:26:28 v #32032 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32033 > > refused) } 00:26:28 v #32034 > > │ 00:00:01 v #107 networking.test_port_open / { port = 00:26:28 v #32035 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32036 > > refused) } 00:26:28 v #32037 > > │ 00:00:01 v #108 networking.test_port_open / { port = 00:26:28 v #32038 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32039 > > refused) } 00:26:28 v #32040 > > │ 00:00:01 v #109 networking.test_port_open / { port = 00:26:28 v #32041 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32042 > > refused) } 00:26:28 v #32043 > > │ 00:00:01 v #110 networking.test_port_open / { port = 00:26:28 v #32044 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32045 > > refused) } 00:26:28 v #32046 > > │ 00:00:01 v #111 networking.test_port_open / { port = 00:26:28 v #32047 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32048 > > refused) } 00:26:28 v #32049 > > │ 00:00:01 v #112 networking.test_port_open / { port = 00:26:28 v #32050 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32051 > > refused) } 00:26:28 v #32052 > > │ 00:00:01 v #113 networking.test_port_open / { port = 00:26:28 v #32053 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32054 > > refused) } 00:26:28 v #32055 > > │ 00:00:01 v #114 networking.test_port_open / { port = 00:26:28 v #32056 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32057 > > refused) } 00:26:28 v #32058 > > │ 00:00:01 v #115 networking.test_port_open / { port = 00:26:28 v #32059 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32060 > > refused) } 00:26:28 v #32061 > > │ 00:00:01 v #116 networking.test_port_open / { port = 00:26:28 v #32062 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32063 > > refused) } 00:26:28 v #32064 > > │ 00:00:01 v #117 networking.test_port_open / { port = 00:26:28 v #32065 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32066 > > refused) } 00:26:28 v #32067 > > │ 00:00:01 v #118 networking.test_port_open / { port = 00:26:28 v #32068 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32069 > > refused) } 00:26:28 v #32070 > > │ 00:00:01 v #119 networking.test_port_open / { port = 00:26:28 v #32071 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32072 > > refused) } 00:26:28 v #32073 > > │ 00:00:01 v #120 networking.test_port_open / { port = 00:26:28 v #32074 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32075 > > refused) } 00:26:28 v #32076 > > │ 00:00:01 v #121 networking.test_port_open / { port = 00:26:28 v #32077 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32078 > > refused) } 00:26:28 v #32079 > > │ 00:00:01 v #122 networking.test_port_open / { port = 00:26:28 v #32080 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32081 > > refused) } 00:26:28 v #32082 > > │ 00:00:01 v #123 networking.test_port_open / { port = 00:26:28 v #32083 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32084 > > refused) } 00:26:28 v #32085 > > │ 00:00:01 v #124 networking.test_port_open / { port = 00:26:28 v #32086 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32087 > > refused) } 00:26:28 v #32088 > > │ 00:00:01 v #125 networking.test_port_open / { port = 00:26:28 v #32089 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32090 > > refused) } 00:26:28 v #32091 > > │ 00:00:01 v #126 networking.test_port_open / { port = 00:26:28 v #32092 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32093 > > refused) } 00:26:28 v #32094 > > │ 00:00:01 v #127 networking.test_port_open / { port = 00:26:28 v #32095 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32096 > > refused) } 00:26:28 v #32097 > > │ 00:00:01 v #128 networking.test_port_open / { port = 00:26:28 v #32098 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32099 > > refused) } 00:26:28 v #32100 > > │ 00:00:01 v #129 networking.test_port_open / { port = 00:26:28 v #32101 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32102 > > refused) } 00:26:28 v #32103 > > │ 00:00:01 v #130 networking.test_port_open / { port = 00:26:28 v #32104 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32105 > > refused) } 00:26:28 v #32106 > > │ 00:00:01 v #131 networking.test_port_open / { port = 00:26:28 v #32107 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32108 > > refused) } 00:26:28 v #32109 > > │ 00:00:01 v #132 networking.test_port_open / { port = 00:26:28 v #32110 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32111 > > refused) } 00:26:28 v #32112 > > │ 00:00:01 v #133 networking.test_port_open / { port = 00:26:28 v #32113 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32114 > > refused) } 00:26:28 v #32115 > > │ 00:00:01 v #134 networking.test_port_open / { port = 00:26:28 v #32116 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32117 > > refused) } 00:26:28 v #32118 > > │ 00:00:01 v #135 networking.test_port_open / { port = 00:26:28 v #32119 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32120 > > refused) } 00:26:28 v #32121 > > │ 00:00:01 v #136 networking.test_port_open / { port = 00:26:28 v #32122 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32123 > > refused) } 00:26:28 v #32124 > > │ 00:00:01 v #137 networking.test_port_open / { port = 00:26:28 v #32125 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32126 > > refused) } 00:26:28 v #32127 > > │ 00:00:01 v #138 networking.test_port_open / { port = 00:26:28 v #32128 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32129 > > refused) } 00:26:28 v #32130 > > │ 00:00:01 v #139 networking.test_port_open / { port = 00:26:28 v #32131 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32132 > > refused) } 00:26:28 v #32133 > > │ 00:00:01 v #140 networking.test_port_open / { port = 00:26:28 v #32134 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32135 > > refused) } 00:26:28 v #32136 > > │ 00:00:01 v #141 networking.test_port_open / { port = 00:26:28 v #32137 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32138 > > refused) } 00:26:28 v #32139 > > │ 00:00:01 v #142 networking.test_port_open / { port = 00:26:28 v #32140 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32141 > > refused) } 00:26:28 v #32142 > > │ 00:00:01 v #143 networking.test_port_open / { port = 00:26:28 v #32143 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32144 > > refused) } 00:26:28 v #32145 > > │ 00:00:01 v #144 networking.test_port_open / { port = 00:26:28 v #32146 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32147 > > refused) } 00:26:28 v #32148 > > │ 00:00:01 v #145 networking.test_port_open / { port = 00:26:28 v #32149 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32150 > > refused) } 00:26:28 v #32151 > > │ 00:00:01 v #146 networking.test_port_open / { port = 00:26:28 v #32152 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32153 > > refused) } 00:26:28 v #32154 > > │ 00:00:01 v #147 networking.test_port_open / { port = 00:26:28 v #32155 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32156 > > refused) } 00:26:28 v #32157 > > │ 00:00:01 v #148 networking.test_port_open / { port = 00:26:28 v #32158 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32159 > > refused) } 00:26:28 v #32160 > > │ 00:00:01 v #149 networking.test_port_open / { port = 00:26:28 v #32161 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32162 > > refused) } 00:26:28 v #32163 > > │ 00:00:01 v #150 networking.test_port_open / { port = 00:26:28 v #32164 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32165 > > refused) } 00:26:28 v #32166 > > │ 00:00:01 v #151 networking.test_port_open / { port = 00:26:28 v #32167 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32168 > > refused) } 00:26:28 v #32169 > > │ 00:00:01 v #152 networking.test_port_open / { port = 00:26:28 v #32170 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32171 > > refused) } 00:26:28 v #32172 > > │ 00:00:01 v #153 networking.test_port_open / { port = 00:26:28 v #32173 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32174 > > refused) } 00:26:28 v #32175 > > │ 00:00:01 v #154 networking.test_port_open / { port = 00:26:28 v #32176 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32177 > > refused) } 00:26:28 v #32178 > > │ 00:00:01 v #155 networking.test_port_open / { port = 00:26:28 v #32179 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32180 > > refused) } 00:26:28 v #32181 > > │ 00:00:01 v #156 networking.test_port_open / { port = 00:26:28 v #32182 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32183 > > refused) } 00:26:28 v #32184 > > │ 00:00:01 v #157 networking.test_port_open / { port = 00:26:28 v #32185 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32186 > > refused) } 00:26:28 v #32187 > > │ 00:00:01 v #158 networking.test_port_open / { port = 00:26:28 v #32188 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32189 > > refused) } 00:26:28 v #32190 > > │ 00:00:01 v #159 networking.test_port_open / { port = 00:26:28 v #32191 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32192 > > refused) } 00:26:28 v #32193 > > │ 00:00:01 v #160 networking.test_port_open / { port = 00:26:28 v #32194 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32195 > > refused) } 00:26:28 v #32196 > > │ 00:00:01 v #161 networking.test_port_open / { port = 00:26:28 v #32197 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32198 > > refused) } 00:26:28 v #32199 > > │ 00:00:01 v #162 networking.test_port_open / { port = 00:26:28 v #32200 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32201 > > refused) } 00:26:28 v #32202 > > │ 00:00:01 v #163 networking.test_port_open / { port = 00:26:28 v #32203 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32204 > > refused) } 00:26:28 v #32205 > > │ 00:00:01 v #164 networking.test_port_open / { port = 00:26:28 v #32206 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32207 > > refused) } 00:26:28 v #32208 > > │ 00:00:01 v #165 networking.test_port_open / { port = 00:26:28 v #32209 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32210 > > refused) } 00:26:28 v #32211 > > │ 00:00:01 v #166 networking.test_port_open / { port = 00:26:28 v #32212 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32213 > > refused) } 00:26:28 v #32214 > > │ 00:00:01 v #167 networking.test_port_open / { port = 00:26:28 v #32215 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32216 > > refused) } 00:26:28 v #32217 > > │ 00:00:01 v #168 networking.test_port_open / { port = 00:26:28 v #32218 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32219 > > refused) } 00:26:28 v #32220 > > │ 00:00:01 v #169 networking.test_port_open / { port = 00:26:28 v #32221 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32222 > > refused) } 00:26:28 v #32223 > > │ 00:00:01 v #170 networking.test_port_open / { port = 00:26:28 v #32224 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32225 > > refused) } 00:26:28 v #32226 > > │ 00:00:01 v #171 networking.test_port_open / { port = 00:26:28 v #32227 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32228 > > refused) } 00:26:28 v #32229 > > │ 00:00:01 v #172 networking.test_port_open / { port = 00:26:28 v #32230 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32231 > > refused) } 00:26:28 v #32232 > > │ 00:00:01 v #173 networking.test_port_open / { port = 00:26:28 v #32233 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32234 > > refused) } 00:26:28 v #32235 > > │ 00:00:01 v #174 networking.test_port_open / { port = 00:26:28 v #32236 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32237 > > refused) } 00:26:28 v #32238 > > │ 00:00:01 v #175 networking.test_port_open / { port = 00:26:28 v #32239 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32240 > > refused) } 00:26:28 v #32241 > > │ 00:00:01 v #176 networking.test_port_open / { port = 00:26:28 v #32242 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32243 > > refused) } 00:26:28 v #32244 > > │ 00:00:01 v #177 networking.test_port_open / { port = 00:26:28 v #32245 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32246 > > refused) } 00:26:28 v #32247 > > │ 00:00:01 v #178 networking.test_port_open / { port = 00:26:28 v #32248 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32249 > > refused) } 00:26:28 v #32250 > > │ 00:00:01 v #179 networking.test_port_open / { port = 00:26:28 v #32251 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32252 > > refused) } 00:26:28 v #32253 > > │ 00:00:01 v #180 networking.test_port_open / { port = 00:26:28 v #32254 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32255 > > refused) } 00:26:28 v #32256 > > │ 00:00:01 v #181 networking.test_port_open / { port = 00:26:28 v #32257 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32258 > > refused) } 00:26:28 v #32259 > > │ 00:00:01 v #182 networking.test_port_open / { port = 00:26:28 v #32260 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32261 > > refused) } 00:26:28 v #32262 > > │ 00:00:01 v #183 networking.test_port_open / { port = 00:26:28 v #32263 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32264 > > refused) } 00:26:28 v #32265 > > │ 00:00:01 v #184 networking.test_port_open / { port = 00:26:28 v #32266 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32267 > > refused) } 00:26:28 v #32268 > > │ 00:00:01 v #185 networking.test_port_open / { port = 00:26:28 v #32269 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32270 > > refused) } 00:26:28 v #32271 > > │ 00:00:01 v #186 networking.test_port_open / { port = 00:26:28 v #32272 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32273 > > refused) } 00:26:28 v #32274 > > │ 00:00:01 v #187 networking.test_port_open / { port = 00:26:28 v #32275 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32276 > > refused) } 00:26:28 v #32277 > > │ 00:00:01 v #188 networking.test_port_open / { port = 00:26:28 v #32278 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32279 > > refused) } 00:26:28 v #32280 > > │ 00:00:01 v #189 networking.test_port_open / { port = 00:26:28 v #32281 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32282 > > refused) } 00:26:28 v #32283 > > │ 00:00:01 v #190 networking.test_port_open / { port = 00:26:28 v #32284 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32285 > > refused) } 00:26:28 v #32286 > > │ 00:00:01 v #191 networking.test_port_open / { port = 00:26:28 v #32287 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32288 > > refused) } 00:26:28 v #32289 > > │ 00:00:01 v #192 networking.test_port_open / { port = 00:26:28 v #32290 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32291 > > refused) } 00:26:28 v #32292 > > │ 00:00:01 v #193 networking.test_port_open / { port = 00:26:28 v #32293 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32294 > > refused) } 00:26:28 v #32295 > > │ 00:00:01 v #194 networking.test_port_open / { port = 00:26:28 v #32296 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32297 > > refused) } 00:26:28 v #32298 > > │ 00:00:02 v #195 networking.test_port_open / { port = 00:26:28 v #32299 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32300 > > refused) } 00:26:28 v #32301 > > │ 00:00:02 v #196 networking.test_port_open / { port = 00:26:28 v #32302 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32303 > > refused) } 00:26:28 v #32304 > > │ 00:00:02 v #197 networking.test_port_open / { port = 00:26:28 v #32305 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32306 > > refused) } 00:26:28 v #32307 > > │ 00:00:02 v #198 networking.test_port_open / { port = 00:26:28 v #32308 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32309 > > refused) } 00:26:28 v #32310 > > │ 00:00:02 v #199 networking.test_port_open / { port = 00:26:28 v #32311 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32312 > > refused) } 00:26:28 v #32313 > > │ 00:00:02 v #200 networking.test_port_open / { port = 00:26:28 v #32314 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32315 > > refused) } 00:26:28 v #32316 > > │ 00:00:02 v #201 networking.test_port_open / { port = 00:26:28 v #32317 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32318 > > refused) } 00:26:28 v #32319 > > │ 00:00:02 v #202 networking.test_port_open / { port = 00:26:28 v #32320 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32321 > > refused) } 00:26:28 v #32322 > > │ 00:00:02 v #203 networking.test_port_open / { port = 00:26:28 v #32323 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32324 > > refused) } 00:26:28 v #32325 > > │ 00:00:02 v #204 networking.test_port_open / { port = 00:26:28 v #32326 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32327 > > refused) } 00:26:28 v #32328 > > │ 00:00:02 v #205 networking.test_port_open / { port = 00:26:28 v #32329 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32330 > > refused) } 00:26:28 v #32331 > > │ 00:00:02 v #206 networking.wait_for_port_access / { port 00:26:28 v #32332 > > = 5555; retry = 200; timeout = None; status = true } 00:26:28 v #32333 > > │ 00:00:02 v #207 networking.test_port_open / { port = 00:26:28 v #32334 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32335 > > refused) } 00:26:28 v #32336 > > │ 00:00:02 v #208 networking.test_port_open / { port = 00:26:28 v #32337 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32338 > > refused) } 00:26:28 v #32339 > > │ 00:00:02 v #209 networking.test_port_open / { port = 00:26:28 v #32340 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32341 > > refused) } 00:26:28 v #32342 > > │ 00:00:02 v #210 networking.test_port_open / { port = 00:26:28 v #32343 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32344 > > refused) } 00:26:28 v #32345 > > │ 00:00:02 v #211 networking.test_port_open / { port = 00:26:28 v #32346 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32347 > > refused) } 00:26:28 v #32348 > > │ 00:00:02 v #212 networking.test_port_open / { port = 00:26:28 v #32349 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32350 > > refused) } 00:26:28 v #32351 > > │ 00:00:02 v #213 networking.test_port_open / { port = 00:26:28 v #32352 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32353 > > refused) } 00:26:28 v #32354 > > │ 00:00:02 v #214 networking.test_port_open / { port = 00:26:28 v #32355 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32356 > > refused) } 00:26:28 v #32357 > > │ 00:00:02 v #215 networking.test_port_open / { port = 00:26:28 v #32358 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32359 > > refused) } 00:26:28 v #32360 > > │ 00:00:02 v #216 networking.test_port_open / { port = 00:26:28 v #32361 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32362 > > refused) } 00:26:28 v #32363 > > │ 00:00:02 v #217 networking.test_port_open / { port = 00:26:28 v #32364 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32365 > > refused) } 00:26:28 v #32366 > > │ 00:00:02 v #218 networking.test_port_open / { port = 00:26:28 v #32367 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32368 > > refused) } 00:26:28 v #32369 > > │ 00:00:02 v #219 networking.test_port_open / { port = 00:26:28 v #32370 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32371 > > refused) } 00:26:28 v #32372 > > │ 00:00:02 v #220 networking.test_port_open / { port = 00:26:28 v #32373 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32374 > > refused) } 00:26:28 v #32375 > > │ 00:00:02 v #221 networking.test_port_open / { port = 00:26:28 v #32376 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32377 > > refused) } 00:26:28 v #32378 > > │ 00:00:02 v #222 networking.test_port_open / { port = 00:26:28 v #32379 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32380 > > refused) } 00:26:28 v #32381 > > │ 00:00:02 v #223 networking.test_port_open / { port = 00:26:28 v #32382 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32383 > > refused) } 00:26:28 v #32384 > > │ 00:00:02 v #224 networking.test_port_open / { port = 00:26:28 v #32385 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32386 > > refused) } 00:26:28 v #32387 > > │ 00:00:02 v #225 networking.test_port_open / { port = 00:26:28 v #32388 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32389 > > refused) } 00:26:28 v #32390 > > │ 00:00:02 v #226 networking.test_port_open / { port = 00:26:28 v #32391 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32392 > > refused) } 00:26:28 v #32393 > > │ 00:00:02 v #227 networking.test_port_open / { port = 00:26:28 v #32394 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32395 > > refused) } 00:26:28 v #32396 > > │ 00:00:02 v #228 networking.test_port_open / { port = 00:26:28 v #32397 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32398 > > refused) } 00:26:28 v #32399 > > │ 00:00:02 v #229 networking.test_port_open / { port = 00:26:28 v #32400 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32401 > > refused) } 00:26:28 v #32402 > > │ 00:00:02 v #230 networking.test_port_open / { port = 00:26:28 v #32403 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32404 > > refused) } 00:26:28 v #32405 > > │ 00:00:02 v #231 networking.test_port_open / { port = 00:26:28 v #32406 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32407 > > refused) } 00:26:28 v #32408 > > │ 00:00:02 v #232 networking.test_port_open / { port = 00:26:28 v #32409 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32410 > > refused) } 00:26:28 v #32411 > > │ 00:00:02 v #233 networking.test_port_open / { port = 00:26:28 v #32412 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32413 > > refused) } 00:26:28 v #32414 > > │ 00:00:02 v #234 networking.test_port_open / { port = 00:26:28 v #32415 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32416 > > refused) } 00:26:28 v #32417 > > │ 00:00:02 v #235 networking.test_port_open / { port = 00:26:28 v #32418 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32419 > > refused) } 00:26:28 v #32420 > > │ 00:00:02 v #236 networking.test_port_open / { port = 00:26:28 v #32421 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32422 > > refused) } 00:26:28 v #32423 > > │ 00:00:02 v #237 networking.test_port_open / { port = 00:26:28 v #32424 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32425 > > refused) } 00:26:28 v #32426 > > │ 00:00:02 v #238 networking.test_port_open / { port = 00:26:28 v #32427 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32428 > > refused) } 00:26:28 v #32429 > > │ 00:00:02 v #239 networking.test_port_open / { port = 00:26:28 v #32430 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32431 > > refused) } 00:26:28 v #32432 > > │ 00:00:02 v #240 networking.test_port_open / { port = 00:26:28 v #32433 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32434 > > refused) } 00:26:28 v #32435 > > │ 00:00:02 v #241 networking.test_port_open / { port = 00:26:28 v #32436 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32437 > > refused) } 00:26:28 v #32438 > > │ 00:00:02 v #242 networking.test_port_open / { port = 00:26:28 v #32439 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32440 > > refused) } 00:26:28 v #32441 > > │ 00:00:02 v #243 networking.test_port_open / { port = 00:26:28 v #32442 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32443 > > refused) } 00:26:28 v #32444 > > │ 00:00:02 v #244 networking.test_port_open / { port = 00:26:28 v #32445 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32446 > > refused) } 00:26:28 v #32447 > > │ 00:00:02 v #245 networking.test_port_open / { port = 00:26:28 v #32448 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32449 > > refused) } 00:26:28 v #32450 > > │ 00:00:02 v #246 networking.test_port_open / { port = 00:26:28 v #32451 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32452 > > refused) } 00:26:28 v #32453 > > │ 00:00:02 v #247 networking.test_port_open / { port = 00:26:28 v #32454 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32455 > > refused) } 00:26:28 v #32456 > > │ 00:00:02 v #248 networking.test_port_open / { port = 00:26:28 v #32457 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32458 > > refused) } 00:26:28 v #32459 > > │ 00:00:02 v #249 networking.test_port_open / { port = 00:26:28 v #32460 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32461 > > refused) } 00:26:28 v #32462 > > │ 00:00:02 v #250 networking.test_port_open / { port = 00:26:28 v #32463 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32464 > > refused) } 00:26:28 v #32465 > > │ 00:00:02 v #251 networking.test_port_open / { port = 00:26:28 v #32466 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32467 > > refused) } 00:26:28 v #32468 > > │ 00:00:02 v #252 networking.test_port_open / { port = 00:26:28 v #32469 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32470 > > refused) } 00:26:28 v #32471 > > │ 00:00:02 v #253 networking.test_port_open / { port = 00:26:28 v #32472 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32473 > > refused) } 00:26:28 v #32474 > > │ 00:00:02 v #254 networking.test_port_open / { port = 00:26:28 v #32475 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32476 > > refused) } 00:26:28 v #32477 > > │ 00:00:02 v #255 networking.test_port_open / { port = 00:26:28 v #32478 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32479 > > refused) } 00:26:28 v #32480 > > │ 00:00:02 v #256 networking.test_port_open / { port = 00:26:28 v #32481 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32482 > > refused) } 00:26:28 v #32483 > > │ 00:00:02 v #257 networking.test_port_open / { port = 00:26:28 v #32484 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32485 > > refused) } 00:26:28 v #32486 > > │ 00:00:02 v #258 networking.test_port_open / { port = 00:26:28 v #32487 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32488 > > refused) } 00:26:28 v #32489 > > │ 00:00:02 v #259 networking.test_port_open / { port = 00:26:28 v #32490 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32491 > > refused) } 00:26:28 v #32492 > > │ 00:00:02 v #260 networking.test_port_open / { port = 00:26:28 v #32493 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32494 > > refused) } 00:26:28 v #32495 > > │ 00:00:02 v #261 networking.test_port_open / { port = 00:26:28 v #32496 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32497 > > refused) } 00:26:28 v #32498 > > │ 00:00:02 v #262 networking.test_port_open / { port = 00:26:28 v #32499 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32500 > > refused) } 00:26:28 v #32501 > > │ 00:00:02 v #263 networking.test_port_open / { port = 00:26:28 v #32502 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32503 > > refused) } 00:26:28 v #32504 > > │ 00:00:02 v #264 networking.test_port_open / { port = 00:26:28 v #32505 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32506 > > refused) } 00:26:28 v #32507 > > │ 00:00:02 v #265 networking.test_port_open / { port = 00:26:28 v #32508 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32509 > > refused) } 00:26:28 v #32510 > > │ 00:00:02 v #266 networking.test_port_open / { port = 00:26:28 v #32511 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32512 > > refused) } 00:26:28 v #32513 > > │ 00:00:02 v #267 networking.test_port_open / { port = 00:26:28 v #32514 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32515 > > refused) } 00:26:28 v #32516 > > │ 00:00:02 v #268 networking.test_port_open / { port = 00:26:28 v #32517 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32518 > > refused) } 00:26:28 v #32519 > > │ 00:00:02 v #269 networking.test_port_open / { port = 00:26:28 v #32520 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32521 > > refused) } 00:26:28 v #32522 > > │ 00:00:02 v #270 networking.test_port_open / { port = 00:26:28 v #32523 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32524 > > refused) } 00:26:28 v #32525 > > │ 00:00:02 v #271 networking.test_port_open / { port = 00:26:28 v #32526 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32527 > > refused) } 00:26:28 v #32528 > > │ 00:00:02 v #272 networking.test_port_open / { port = 00:26:28 v #32529 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32530 > > refused) } 00:26:28 v #32531 > > │ 00:00:02 v #273 networking.test_port_open / { port = 00:26:28 v #32532 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32533 > > refused) } 00:26:28 v #32534 > > │ 00:00:02 v #274 networking.test_port_open / { port = 00:26:28 v #32535 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32536 > > refused) } 00:26:28 v #32537 > > │ 00:00:02 v #275 networking.test_port_open / { port = 00:26:28 v #32538 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32539 > > refused) } 00:26:28 v #32540 > > │ 00:00:02 v #276 networking.test_port_open / { port = 00:26:28 v #32541 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32542 > > refused) } 00:26:28 v #32543 > > │ 00:00:02 v #277 networking.test_port_open / { port = 00:26:28 v #32544 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32545 > > refused) } 00:26:28 v #32546 > > │ 00:00:02 v #278 networking.test_port_open / { port = 00:26:28 v #32547 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32548 > > refused) } 00:26:28 v #32549 > > │ 00:00:02 v #279 networking.test_port_open / { port = 00:26:28 v #32550 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32551 > > refused) } 00:26:28 v #32552 > > │ 00:00:02 v #280 networking.test_port_open / { port = 00:26:28 v #32553 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32554 > > refused) } 00:26:28 v #32555 > > │ 00:00:02 v #281 networking.test_port_open / { port = 00:26:28 v #32556 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32557 > > refused) } 00:26:28 v #32558 > > │ 00:00:02 v #282 networking.test_port_open / { port = 00:26:28 v #32559 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32560 > > refused) } 00:26:28 v #32561 > > │ 00:00:02 v #283 networking.test_port_open / { port = 00:26:28 v #32562 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32563 > > refused) } 00:26:28 v #32564 > > │ 00:00:02 v #284 networking.test_port_open / { port = 00:26:28 v #32565 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32566 > > refused) } 00:26:28 v #32567 > > │ 00:00:02 v #285 networking.test_port_open / { port = 00:26:28 v #32568 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32569 > > refused) } 00:26:28 v #32570 > > │ 00:00:02 v #286 networking.test_port_open / { port = 00:26:28 v #32571 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32572 > > refused) } 00:26:28 v #32573 > > │ 00:00:02 v #287 networking.test_port_open / { port = 00:26:28 v #32574 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32575 > > refused) } 00:26:28 v #32576 > > │ 00:00:02 v #288 networking.test_port_open / { port = 00:26:28 v #32577 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32578 > > refused) } 00:26:28 v #32579 > > │ 00:00:02 v #289 networking.test_port_open / { port = 00:26:28 v #32580 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32581 > > refused) } 00:26:28 v #32582 > > │ 00:00:02 v #290 networking.test_port_open / { port = 00:26:28 v #32583 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32584 > > refused) } 00:26:28 v #32585 > > │ 00:00:02 v #291 networking.test_port_open / { port = 00:26:28 v #32586 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32587 > > refused) } 00:26:28 v #32588 > > │ 00:00:03 v #292 networking.test_port_open / { port = 00:26:28 v #32589 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32590 > > refused) } 00:26:28 v #32591 > > │ 00:00:03 v #293 networking.test_port_open / { port = 00:26:28 v #32592 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32593 > > refused) } 00:26:28 v #32594 > > │ 00:00:03 v #294 networking.test_port_open / { port = 00:26:28 v #32595 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32596 > > refused) } 00:26:28 v #32597 > > │ 00:00:03 v #295 networking.test_port_open / { port = 00:26:28 v #32598 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32599 > > refused) } 00:26:28 v #32600 > > │ 00:00:03 v #296 networking.test_port_open / { port = 00:26:28 v #32601 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32602 > > refused) } 00:26:28 v #32603 > > │ 00:00:03 v #297 networking.test_port_open / { port = 00:26:28 v #32604 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32605 > > refused) } 00:26:28 v #32606 > > │ 00:00:03 v #298 networking.test_port_open / { port = 00:26:28 v #32607 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32608 > > refused) } 00:26:28 v #32609 > > │ 00:00:03 v #299 networking.test_port_open / { port = 00:26:28 v #32610 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32611 > > refused) } 00:26:28 v #32612 > > │ 00:00:03 v #300 networking.test_port_open / { port = 00:26:28 v #32613 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32614 > > refused) } 00:26:28 v #32615 > > │ 00:00:03 v #301 networking.test_port_open / { port = 00:26:28 v #32616 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32617 > > refused) } 00:26:28 v #32618 > > │ 00:00:03 v #302 networking.test_port_open / { port = 00:26:28 v #32619 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32620 > > refused) } 00:26:28 v #32621 > > │ 00:00:03 v #303 networking.test_port_open / { port = 00:26:28 v #32622 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32623 > > refused) } 00:26:28 v #32624 > > │ 00:00:03 v #304 networking.test_port_open / { port = 00:26:28 v #32625 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32626 > > refused) } 00:26:28 v #32627 > > │ 00:00:03 v #305 networking.test_port_open / { port = 00:26:28 v #32628 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32629 > > refused) } 00:26:28 v #32630 > > │ 00:00:03 v #306 networking.test_port_open / { port = 00:26:28 v #32631 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32632 > > refused) } 00:26:28 v #32633 > > │ 00:00:03 v #307 networking.wait_for_port_access / { port 00:26:28 v #32634 > > = 5555; retry = 300; timeout = None; status = true } 00:26:28 v #32635 > > │ 00:00:03 v #308 networking.test_port_open / { port = 00:26:28 v #32636 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32637 > > refused) } 00:26:28 v #32638 > > │ 00:00:03 v #309 networking.test_port_open / { port = 00:26:28 v #32639 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32640 > > refused) } 00:26:28 v #32641 > > │ 00:00:03 v #310 networking.test_port_open / { port = 00:26:28 v #32642 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32643 > > refused) } 00:26:28 v #32644 > > │ 00:00:03 v #311 networking.test_port_open / { port = 00:26:28 v #32645 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32646 > > refused) } 00:26:28 v #32647 > > │ 00:00:03 v #312 networking.test_port_open / { port = 00:26:28 v #32648 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32649 > > refused) } 00:26:28 v #32650 > > │ 00:00:03 v #313 networking.test_port_open / { port = 00:26:28 v #32651 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32652 > > refused) } 00:26:28 v #32653 > > │ 00:00:03 v #314 networking.test_port_open / { port = 00:26:28 v #32654 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32655 > > refused) } 00:26:28 v #32656 > > │ 00:00:03 v #315 networking.test_port_open / { port = 00:26:28 v #32657 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32658 > > refused) } 00:26:28 v #32659 > > │ 00:00:03 v #316 networking.test_port_open / { port = 00:26:28 v #32660 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32661 > > refused) } 00:26:28 v #32662 > > │ 00:00:03 v #317 networking.test_port_open / { port = 00:26:28 v #32663 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32664 > > refused) } 00:26:28 v #32665 > > │ 00:00:03 v #318 networking.test_port_open / { port = 00:26:28 v #32666 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32667 > > refused) } 00:26:28 v #32668 > > │ 00:00:03 v #319 networking.test_port_open / { port = 00:26:28 v #32669 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32670 > > refused) } 00:26:28 v #32671 > > │ 00:00:03 v #320 networking.test_port_open / { port = 00:26:28 v #32672 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32673 > > refused) } 00:26:28 v #32674 > > │ 00:00:03 v #321 networking.test_port_open / { port = 00:26:28 v #32675 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32676 > > refused) } 00:26:28 v #32677 > > │ 00:00:03 v #322 networking.test_port_open / { port = 00:26:28 v #32678 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32679 > > refused) } 00:26:28 v #32680 > > │ 00:00:03 v #323 networking.test_port_open / { port = 00:26:28 v #32681 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32682 > > refused) } 00:26:28 v #32683 > > │ 00:00:03 v #324 networking.test_port_open / { port = 00:26:28 v #32684 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32685 > > refused) } 00:26:28 v #32686 > > │ 00:00:03 v #325 networking.test_port_open / { port = 00:26:28 v #32687 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32688 > > refused) } 00:26:28 v #32689 > > │ 00:00:03 v #326 networking.test_port_open / { port = 00:26:28 v #32690 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32691 > > refused) } 00:26:28 v #32692 > > │ 00:00:03 v #327 networking.test_port_open / { port = 00:26:28 v #32693 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32694 > > refused) } 00:26:28 v #32695 > > │ 00:00:03 v #328 networking.test_port_open / { port = 00:26:28 v #32696 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32697 > > refused) } 00:26:28 v #32698 > > │ 00:00:03 v #329 networking.test_port_open / { port = 00:26:28 v #32699 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32700 > > refused) } 00:26:28 v #32701 > > │ 00:00:03 v #330 networking.test_port_open / { port = 00:26:28 v #32702 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32703 > > refused) } 00:26:28 v #32704 > > │ 00:00:03 v #331 networking.test_port_open / { port = 00:26:28 v #32705 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32706 > > refused) } 00:26:28 v #32707 > > │ 00:00:03 v #332 networking.test_port_open / { port = 00:26:28 v #32708 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32709 > > refused) } 00:26:28 v #32710 > > │ 00:00:03 v #333 networking.test_port_open / { port = 00:26:28 v #32711 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32712 > > refused) } 00:26:28 v #32713 > > │ 00:00:03 v #334 networking.test_port_open / { port = 00:26:28 v #32714 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32715 > > refused) } 00:26:28 v #32716 > > │ 00:00:03 v #335 networking.test_port_open / { port = 00:26:28 v #32717 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32718 > > refused) } 00:26:28 v #32719 > > │ 00:00:03 v #336 networking.test_port_open / { port = 00:26:28 v #32720 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32721 > > refused) } 00:26:28 v #32722 > > │ 00:00:03 v #337 networking.test_port_open / { port = 00:26:28 v #32723 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32724 > > refused) } 00:26:28 v #32725 > > │ 00:00:03 v #338 networking.test_port_open / { port = 00:26:28 v #32726 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32727 > > refused) } 00:26:28 v #32728 > > │ 00:00:03 v #339 networking.test_port_open / { port = 00:26:28 v #32729 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32730 > > refused) } 00:26:28 v #32731 > > │ 00:00:03 v #340 networking.test_port_open / { port = 00:26:28 v #32732 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32733 > > refused) } 00:26:28 v #32734 > > │ 00:00:03 v #341 networking.test_port_open / { port = 00:26:28 v #32735 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32736 > > refused) } 00:26:28 v #32737 > > │ 00:00:03 v #342 networking.test_port_open / { port = 00:26:28 v #32738 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32739 > > refused) } 00:26:28 v #32740 > > │ 00:00:03 v #343 networking.test_port_open / { port = 00:26:28 v #32741 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32742 > > refused) } 00:26:28 v #32743 > > │ 00:00:03 v #344 networking.test_port_open / { port = 00:26:28 v #32744 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32745 > > refused) } 00:26:28 v #32746 > > │ 00:00:03 v #345 networking.test_port_open / { port = 00:26:28 v #32747 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32748 > > refused) } 00:26:28 v #32749 > > │ 00:00:03 v #346 networking.test_port_open / { port = 00:26:28 v #32750 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32751 > > refused) } 00:26:28 v #32752 > > │ 00:00:03 v #347 networking.test_port_open / { port = 00:26:28 v #32753 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32754 > > refused) } 00:26:28 v #32755 > > │ 00:00:03 v #348 networking.test_port_open / { port = 00:26:28 v #32756 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32757 > > refused) } 00:26:28 v #32758 > > │ 00:00:03 v #349 networking.test_port_open / { port = 00:26:28 v #32759 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32760 > > refused) } 00:26:28 v #32761 > > │ 00:00:03 v #350 networking.test_port_open / { port = 00:26:28 v #32762 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32763 > > refused) } 00:26:28 v #32764 > > │ 00:00:03 v #351 networking.test_port_open / { port = 00:26:28 v #32765 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32766 > > refused) } 00:26:28 v #32767 > > │ 00:00:03 v #352 networking.test_port_open / { port = 00:26:28 v #32768 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32769 > > refused) } 00:26:28 v #32770 > > │ 00:00:03 v #353 networking.test_port_open / { port = 00:26:28 v #32771 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32772 > > refused) } 00:26:28 v #32773 > > │ 00:00:03 v #354 networking.test_port_open / { port = 00:26:28 v #32774 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32775 > > refused) } 00:26:28 v #32776 > > │ 00:00:03 v #355 networking.test_port_open / { port = 00:26:28 v #32777 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32778 > > refused) } 00:26:28 v #32779 > > │ 00:00:03 v #356 networking.test_port_open / { port = 00:26:28 v #32780 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32781 > > refused) } 00:26:28 v #32782 > > │ 00:00:03 v #357 networking.test_port_open / { port = 00:26:28 v #32783 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32784 > > refused) } 00:26:28 v #32785 > > │ 00:00:03 v #358 networking.test_port_open / { port = 00:26:28 v #32786 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32787 > > refused) } 00:26:28 v #32788 > > │ 00:00:03 v #359 networking.test_port_open / { port = 00:26:28 v #32789 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32790 > > refused) } 00:26:28 v #32791 > > │ 00:00:03 v #360 networking.test_port_open / { port = 00:26:28 v #32792 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32793 > > refused) } 00:26:28 v #32794 > > │ 00:00:03 v #361 networking.test_port_open / { port = 00:26:28 v #32795 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32796 > > refused) } 00:26:28 v #32797 > > │ 00:00:03 v #362 networking.test_port_open / { port = 00:26:28 v #32798 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32799 > > refused) } 00:26:28 v #32800 > > │ 00:00:03 v #363 networking.test_port_open / { port = 00:26:28 v #32801 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32802 > > refused) } 00:26:28 v #32803 > > │ 00:00:03 v #364 networking.test_port_open / { port = 00:26:28 v #32804 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32805 > > refused) } 00:26:28 v #32806 > > │ 00:00:03 v #365 networking.test_port_open / { port = 00:26:28 v #32807 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32808 > > refused) } 00:26:28 v #32809 > > │ 00:00:03 v #366 networking.test_port_open / { port = 00:26:28 v #32810 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32811 > > refused) } 00:26:28 v #32812 > > │ 00:00:03 v #367 networking.test_port_open / { port = 00:26:28 v #32813 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32814 > > refused) } 00:26:28 v #32815 > > │ 00:00:03 v #368 networking.test_port_open / { port = 00:26:28 v #32816 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32817 > > refused) } 00:26:28 v #32818 > > │ 00:00:03 v #369 networking.test_port_open / { port = 00:26:28 v #32819 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32820 > > refused) } 00:26:28 v #32821 > > │ 00:00:03 v #370 networking.test_port_open / { port = 00:26:28 v #32822 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32823 > > refused) } 00:26:28 v #32824 > > │ 00:00:03 v #371 networking.test_port_open / { port = 00:26:28 v #32825 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32826 > > refused) } 00:26:28 v #32827 > > │ 00:00:03 v #372 networking.test_port_open / { port = 00:26:28 v #32828 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32829 > > refused) } 00:26:28 v #32830 > > │ 00:00:03 v #373 networking.test_port_open / { port = 00:26:28 v #32831 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32832 > > refused) } 00:26:28 v #32833 > > │ 00:00:03 v #374 networking.test_port_open / { port = 00:26:28 v #32834 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32835 > > refused) } 00:26:28 v #32836 > > │ 00:00:03 v #375 networking.test_port_open / { port = 00:26:28 v #32837 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32838 > > refused) } 00:26:28 v #32839 > > │ 00:00:03 v #376 networking.test_port_open / { port = 00:26:28 v #32840 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32841 > > refused) } 00:26:28 v #32842 > > │ 00:00:03 v #377 networking.test_port_open / { port = 00:26:28 v #32843 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32844 > > refused) } 00:26:28 v #32845 > > │ 00:00:03 v #378 networking.test_port_open / { port = 00:26:28 v #32846 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32847 > > refused) } 00:26:28 v #32848 > > │ 00:00:03 v #379 networking.test_port_open / { port = 00:26:28 v #32849 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32850 > > refused) } 00:26:28 v #32851 > > │ 00:00:03 v #380 networking.test_port_open / { port = 00:26:28 v #32852 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32853 > > refused) } 00:26:28 v #32854 > > │ 00:00:03 v #381 networking.test_port_open / { port = 00:26:28 v #32855 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32856 > > refused) } 00:26:28 v #32857 > > │ 00:00:03 v #382 networking.test_port_open / { port = 00:26:28 v #32858 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32859 > > refused) } 00:26:28 v #32860 > > │ 00:00:03 v #383 networking.test_port_open / { port = 00:26:28 v #32861 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32862 > > refused) } 00:26:28 v #32863 > > │ 00:00:03 v #384 networking.test_port_open / { port = 00:26:28 v #32864 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32865 > > refused) } 00:26:28 v #32866 > > │ 00:00:03 v #385 networking.test_port_open / { port = 00:26:28 v #32867 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32868 > > refused) } 00:26:28 v #32869 > > │ 00:00:03 v #386 networking.test_port_open / { port = 00:26:28 v #32870 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32871 > > refused) } 00:26:28 v #32872 > > │ 00:00:03 v #387 networking.test_port_open / { port = 00:26:28 v #32873 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32874 > > refused) } 00:26:28 v #32875 > > │ 00:00:03 v #388 networking.test_port_open / { port = 00:26:28 v #32876 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32877 > > refused) } 00:26:28 v #32878 > > │ 00:00:04 v #389 networking.test_port_open / { port = 00:26:28 v #32879 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32880 > > refused) } 00:26:28 v #32881 > > │ 00:00:04 v #390 networking.test_port_open / { port = 00:26:28 v #32882 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32883 > > refused) } 00:26:28 v #32884 > > │ 00:00:04 v #391 networking.test_port_open / { port = 00:26:28 v #32885 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32886 > > refused) } 00:26:28 v #32887 > > │ 00:00:04 v #392 networking.test_port_open / { port = 00:26:28 v #32888 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32889 > > refused) } 00:26:28 v #32890 > > │ 00:00:04 v #393 networking.test_port_open / { port = 00:26:28 v #32891 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32892 > > refused) } 00:26:28 v #32893 > > │ 00:00:04 v #394 networking.test_port_open / { port = 00:26:28 v #32894 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32895 > > refused) } 00:26:28 v #32896 > > │ 00:00:04 v #395 networking.test_port_open / { port = 00:26:28 v #32897 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32898 > > refused) } 00:26:28 v #32899 > > │ 00:00:04 v #396 networking.test_port_open / { port = 00:26:28 v #32900 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32901 > > refused) } 00:26:28 v #32902 > > │ 00:00:04 v #397 networking.test_port_open / { port = 00:26:28 v #32903 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32904 > > refused) } 00:26:28 v #32905 > > │ 00:00:04 v #398 networking.test_port_open / { port = 00:26:28 v #32906 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32907 > > refused) } 00:26:28 v #32908 > > │ 00:00:04 v #399 networking.test_port_open / { port = 00:26:28 v #32909 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32910 > > refused) } 00:26:28 v #32911 > > │ 00:00:04 v #400 networking.test_port_open / { port = 00:26:28 v #32912 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32913 > > refused) } 00:26:28 v #32914 > > │ 00:00:04 v #401 networking.test_port_open / { port = 00:26:28 v #32915 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32916 > > refused) } 00:26:28 v #32917 > > │ 00:00:04 v #402 networking.test_port_open / { port = 00:26:28 v #32918 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32919 > > refused) } 00:26:28 v #32920 > > │ 00:00:04 v #403 networking.test_port_open / { port = 00:26:28 v #32921 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32922 > > refused) } 00:26:28 v #32923 > > │ 00:00:04 v #404 networking.test_port_open / { port = 00:26:28 v #32924 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32925 > > refused) } 00:26:28 v #32926 > > │ 00:00:04 v #405 networking.test_port_open / { port = 00:26:28 v #32927 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32928 > > refused) } 00:26:28 v #32929 > > │ 00:00:04 v #406 networking.test_port_open / { port = 00:26:28 v #32930 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32931 > > refused) } 00:26:28 v #32932 > > │ 00:00:04 v #407 networking.test_port_open / { port = 00:26:28 v #32933 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32934 > > refused) } 00:26:28 v #32935 > > │ 00:00:04 v #408 networking.wait_for_port_access / { port 00:26:28 v #32936 > > = 5555; retry = 400; timeout = None; status = true } 00:26:28 v #32937 > > │ 00:00:04 v #409 networking.test_port_open / { port = 00:26:28 v #32938 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32939 > > refused) } 00:26:28 v #32940 > > │ 00:00:04 v #410 networking.test_port_open / { port = 00:26:28 v #32941 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32942 > > refused) } 00:26:28 v #32943 > > │ 00:00:04 v #411 networking.test_port_open / { port = 00:26:28 v #32944 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32945 > > refused) } 00:26:28 v #32946 > > │ 00:00:04 v #412 networking.test_port_open / { port = 00:26:28 v #32947 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32948 > > refused) } 00:26:28 v #32949 > > │ 00:00:04 v #413 networking.test_port_open / { port = 00:26:28 v #32950 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32951 > > refused) } 00:26:28 v #32952 > > │ 00:00:04 v #414 networking.test_port_open / { port = 00:26:28 v #32953 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32954 > > refused) } 00:26:28 v #32955 > > │ 00:00:04 v #415 networking.test_port_open / { port = 00:26:28 v #32956 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32957 > > refused) } 00:26:28 v #32958 > > │ 00:00:04 v #416 networking.test_port_open / { port = 00:26:28 v #32959 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32960 > > refused) } 00:26:28 v #32961 > > │ 00:00:04 v #417 networking.test_port_open / { port = 00:26:28 v #32962 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32963 > > refused) } 00:26:28 v #32964 > > │ 00:00:04 v #418 networking.test_port_open / { port = 00:26:28 v #32965 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32966 > > refused) } 00:26:28 v #32967 > > │ 00:00:04 v #419 networking.test_port_open / { port = 00:26:28 v #32968 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32969 > > refused) } 00:26:28 v #32970 > > │ 00:00:04 v #420 networking.test_port_open / { port = 00:26:28 v #32971 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32972 > > refused) } 00:26:28 v #32973 > > │ 00:00:04 v #421 networking.test_port_open / { port = 00:26:28 v #32974 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32975 > > refused) } 00:26:28 v #32976 > > │ 00:00:04 v #422 networking.test_port_open / { port = 00:26:28 v #32977 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32978 > > refused) } 00:26:28 v #32979 > > │ 00:00:04 v #423 networking.test_port_open / { port = 00:26:28 v #32980 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32981 > > refused) } 00:26:28 v #32982 > > │ 00:00:04 v #424 networking.test_port_open / { port = 00:26:28 v #32983 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32984 > > refused) } 00:26:28 v #32985 > > │ 00:00:04 v #425 networking.test_port_open / { port = 00:26:28 v #32986 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32987 > > refused) } 00:26:28 v #32988 > > │ 00:00:04 v #426 networking.test_port_open / { port = 00:26:28 v #32989 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32990 > > refused) } 00:26:28 v #32991 > > │ 00:00:04 v #427 networking.test_port_open / { port = 00:26:28 v #32992 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32993 > > refused) } 00:26:28 v #32994 > > │ 00:00:04 v #428 networking.test_port_open / { port = 00:26:28 v #32995 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32996 > > refused) } 00:26:28 v #32997 > > │ 00:00:04 v #429 networking.test_port_open / { port = 00:26:28 v #32998 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #32999 > > refused) } 00:26:28 v #33000 > > │ 00:00:04 v #430 networking.test_port_open / { port = 00:26:28 v #33001 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33002 > > refused) } 00:26:28 v #33003 > > │ 00:00:04 v #431 networking.test_port_open / { port = 00:26:28 v #33004 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33005 > > refused) } 00:26:28 v #33006 > > │ 00:00:04 v #432 networking.test_port_open / { port = 00:26:28 v #33007 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33008 > > refused) } 00:26:28 v #33009 > > │ 00:00:04 v #433 networking.test_port_open / { port = 00:26:28 v #33010 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33011 > > refused) } 00:26:28 v #33012 > > │ 00:00:04 v #434 networking.test_port_open / { port = 00:26:28 v #33013 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33014 > > refused) } 00:26:28 v #33015 > > │ 00:00:04 v #435 networking.test_port_open / { port = 00:26:28 v #33016 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33017 > > refused) } 00:26:28 v #33018 > > │ 00:00:04 v #436 networking.test_port_open / { port = 00:26:28 v #33019 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33020 > > refused) } 00:26:28 v #33021 > > │ 00:00:04 v #437 networking.test_port_open / { port = 00:26:28 v #33022 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33023 > > refused) } 00:26:28 v #33024 > > │ 00:00:04 v #438 networking.test_port_open / { port = 00:26:28 v #33025 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33026 > > refused) } 00:26:28 v #33027 > > │ 00:00:04 v #439 networking.test_port_open / { port = 00:26:28 v #33028 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33029 > > refused) } 00:26:28 v #33030 > > │ 00:00:04 v #440 networking.test_port_open / { port = 00:26:28 v #33031 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33032 > > refused) } 00:26:28 v #33033 > > │ 00:00:04 v #441 networking.test_port_open / { port = 00:26:28 v #33034 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33035 > > refused) } 00:26:28 v #33036 > > │ 00:00:04 v #442 networking.test_port_open / { port = 00:26:28 v #33037 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33038 > > refused) } 00:26:28 v #33039 > > │ 00:00:04 v #443 networking.test_port_open / { port = 00:26:28 v #33040 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33041 > > refused) } 00:26:28 v #33042 > > │ 00:00:04 v #444 networking.test_port_open / { port = 00:26:28 v #33043 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33044 > > refused) } 00:26:28 v #33045 > > │ 00:00:04 v #445 networking.test_port_open / { port = 00:26:28 v #33046 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33047 > > refused) } 00:26:28 v #33048 > > │ 00:00:04 v #446 networking.test_port_open / { port = 00:26:28 v #33049 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33050 > > refused) } 00:26:28 v #33051 > > │ 00:00:04 v #447 networking.test_port_open / { port = 00:26:28 v #33052 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33053 > > refused) } 00:26:28 v #33054 > > │ 00:00:04 v #448 networking.test_port_open / { port = 00:26:28 v #33055 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33056 > > refused) } 00:26:28 v #33057 > > │ 00:00:04 v #449 networking.test_port_open / { port = 00:26:28 v #33058 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33059 > > refused) } 00:26:28 v #33060 > > │ 00:00:04 v #450 networking.test_port_open / { port = 00:26:28 v #33061 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33062 > > refused) } 00:26:28 v #33063 > > │ 00:00:04 v #451 networking.test_port_open / { port = 00:26:28 v #33064 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33065 > > refused) } 00:26:28 v #33066 > > │ 00:00:04 v #452 networking.test_port_open / { port = 00:26:28 v #33067 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33068 > > refused) } 00:26:28 v #33069 > > │ 00:00:04 v #453 networking.test_port_open / { port = 00:26:28 v #33070 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33071 > > refused) } 00:26:28 v #33072 > > │ 00:00:04 v #454 networking.test_port_open / { port = 00:26:28 v #33073 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33074 > > refused) } 00:26:28 v #33075 > > │ 00:00:04 v #455 networking.test_port_open / { port = 00:26:28 v #33076 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33077 > > refused) } 00:26:28 v #33078 > > │ 00:00:04 v #456 networking.test_port_open / { port = 00:26:28 v #33079 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33080 > > refused) } 00:26:28 v #33081 > > │ 00:00:04 v #457 networking.test_port_open / { port = 00:26:28 v #33082 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33083 > > refused) } 00:26:28 v #33084 > > │ 00:00:04 v #458 networking.test_port_open / { port = 00:26:28 v #33085 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33086 > > refused) } 00:26:28 v #33087 > > │ 00:00:04 v #459 networking.test_port_open / { port = 00:26:28 v #33088 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33089 > > refused) } 00:26:28 v #33090 > > │ 00:00:04 v #460 networking.test_port_open / { port = 00:26:28 v #33091 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33092 > > refused) } 00:26:28 v #33093 > > │ 00:00:04 v #461 networking.test_port_open / { port = 00:26:28 v #33094 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33095 > > refused) } 00:26:28 v #33096 > > │ 00:00:04 v #462 networking.test_port_open / { port = 00:26:28 v #33097 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33098 > > refused) } 00:26:28 v #33099 > > │ 00:00:04 v #463 networking.test_port_open / { port = 00:26:28 v #33100 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33101 > > refused) } 00:26:28 v #33102 > > │ 00:00:04 v #464 networking.test_port_open / { port = 00:26:28 v #33103 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33104 > > refused) } 00:26:28 v #33105 > > │ 00:00:04 v #465 networking.test_port_open / { port = 00:26:28 v #33106 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33107 > > refused) } 00:26:28 v #33108 > > │ 00:00:04 v #466 networking.test_port_open / { port = 00:26:28 v #33109 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33110 > > refused) } 00:26:28 v #33111 > > │ 00:00:04 v #467 networking.test_port_open / { port = 00:26:28 v #33112 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33113 > > refused) } 00:26:28 v #33114 > > │ 00:00:04 v #468 networking.test_port_open / { port = 00:26:28 v #33115 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33116 > > refused) } 00:26:28 v #33117 > > │ 00:00:04 v #469 networking.test_port_open / { port = 00:26:28 v #33118 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33119 > > refused) } 00:26:28 v #33120 > > │ 00:00:04 v #470 networking.test_port_open / { port = 00:26:28 v #33121 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33122 > > refused) } 00:26:28 v #33123 > > │ 00:00:04 v #471 networking.test_port_open / { port = 00:26:28 v #33124 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33125 > > refused) } 00:26:28 v #33126 > > │ 00:00:04 v #472 networking.test_port_open / { port = 00:26:28 v #33127 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33128 > > refused) } 00:26:28 v #33129 > > │ 00:00:04 v #473 networking.test_port_open / { port = 00:26:28 v #33130 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33131 > > refused) } 00:26:28 v #33132 > > │ 00:00:04 v #474 networking.test_port_open / { port = 00:26:28 v #33133 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33134 > > refused) } 00:26:28 v #33135 > > │ 00:00:04 v #475 networking.test_port_open / { port = 00:26:28 v #33136 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33137 > > refused) } 00:26:28 v #33138 > > │ 00:00:04 v #476 networking.test_port_open / { port = 00:26:28 v #33139 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33140 > > refused) } 00:26:28 v #33141 > > │ 00:00:04 v #477 networking.test_port_open / { port = 00:26:28 v #33142 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33143 > > refused) } 00:26:28 v #33144 > > │ 00:00:04 v #478 networking.test_port_open / { port = 00:26:28 v #33145 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33146 > > refused) } 00:26:28 v #33147 > > │ 00:00:04 v #479 networking.test_port_open / { port = 00:26:28 v #33148 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33149 > > refused) } 00:26:28 v #33150 > > │ 00:00:04 v #480 networking.test_port_open / { port = 00:26:28 v #33151 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33152 > > refused) } 00:26:28 v #33153 > > │ 00:00:04 v #481 networking.test_port_open / { port = 00:26:28 v #33154 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33155 > > refused) } 00:26:28 v #33156 > > │ 00:00:04 v #482 networking.test_port_open / { port = 00:26:28 v #33157 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33158 > > refused) } 00:26:28 v #33159 > > │ 00:00:04 v #483 networking.test_port_open / { port = 00:26:28 v #33160 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33161 > > refused) } 00:26:28 v #33162 > > │ 00:00:04 v #484 networking.test_port_open / { port = 00:26:28 v #33163 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33164 > > refused) } 00:26:28 v #33165 > > │ 00:00:04 v #485 networking.test_port_open / { port = 00:26:28 v #33166 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33167 > > refused) } 00:26:28 v #33168 > > │ 00:00:05 v #486 networking.test_port_open / { port = 00:26:28 v #33169 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33170 > > refused) } 00:26:28 v #33171 > > │ 00:00:05 d #487 _2 00:26:28 v #33172 > > │ 00:00:05 d #488 _3 00:26:28 v #33173 > > │ 00:00:05 d #489 4 00:26:28 v #33174 > > │ 00:00:06 v #490 networking.wait_for_port_access / { port 00:26:28 v #33175 > > = 5555; retry = 100; timeout = None; status = false } 00:26:28 v #33176 > > │ 00:00:07 d #491 _4 00:26:28 v #33177 > > │ 00:00:07 d #492 _5 00:26:28 v #33178 > > │ 00:00:07 v #493 networking.test_port_open / { port = 00:26:28 v #33179 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:28 v #33180 > > refused) } 00:26:28 v #33181 > > │ 00:00:07 d #494 5 00:26:28 v #33182 > > │ 00:00:07 d #495 6 00:26:28 v #33183 > > │ __assert_between / actual: 479L / expected: struct (2L, 00:26:28 v #33184 > > 1500L) 00:26:28 v #33185 > > │ __assert_between / actual: 195L / expected: struct (80L, 00:26:28 v #33186 > > 600L) 00:26:28 v #33187 > > │ __assert_eq / actual: true / expected: true 00:26:28 v #33188 > > │ 00:26:28 v #33189 > > 00:26:28 v #33190 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:28 v #33191 > > //// test 00:26:28 v #33192 > > 00:26:28 v #33193 > > inl lock_port host port = async.new_async_unit fun () => 00:26:28 v #33194 > > trace Debug (fun () => "_1") id 00:26:28 v #33195 > > async.sleep 500 |> async.do 00:26:28 v #33196 > > inl listener = new_tcp_listener (ip_address_parse host) port |> use 00:26:28 v #33197 > > trace Debug (fun () => "_2") id 00:26:28 v #33198 > > listener |> listener_start 00:26:28 v #33199 > > trace Debug (fun () => "_3") id 00:26:28 v #33200 > > async.sleep 200 |> async.do 00:26:28 v #33201 > > trace Debug (fun () => "_4") id 00:26:28 v #33202 > > listener |> listener_stop 00:26:28 v #33203 > > trace Debug (fun () => "_5") id 00:26:28 v #33204 > > 00:26:28 v #33205 > > inl host = "127.0.0.1" 00:26:28 v #33206 > > inl port = 5555 00:26:28 v #33207 > > 00:26:28 v #33208 > > fun () => 00:26:28 v #33209 > > trace Debug (fun () => "1") id 00:26:28 v #33210 > > inl child = lock_port host port |> async.start_child |> async.let' 00:26:28 v #33211 > > trace Debug (fun () => "2") id 00:26:28 v #33212 > > async.sleep 1 |> async.do 00:26:28 v #33213 > > trace Debug (fun () => "3") id 00:26:28 v #33214 > > inl retries1 = wait_for_port_access (Some 60 |> optionm'.box) true host port 00:26:28 v #33215 > > |> async.let' 00:26:28 v #33216 > > trace Debug (fun () => "4") id 00:26:28 v #33217 > > inl retries2 = wait_for_port_access (Some 60 |> optionm'.box) false host 00:26:28 v #33218 > > port |> async.let' 00:26:28 v #33219 > > trace Debug (fun () => "5") id 00:26:28 v #33220 > > child |> async.do 00:26:28 v #33221 > > trace Debug (fun () => "6") id 00:26:28 v #33222 > > (retries1, retries2) |> return 00:26:28 v #33223 > > |> async.new_async_unit 00:26:28 v #33224 > > |> async.run_with_timeout 2000 00:26:28 v #33225 > > |> function 00:26:28 v #33226 > > | Some (retries1, retries2) => 00:26:28 v #33227 > > retries1 00:26:28 v #33228 > > |> _assert_between 00:26:28 v #33229 > > if platform.is_windows () then 4i64 else 2 00:26:28 v #33230 > > if platform.is_windows () then 15 else 150 00:26:28 v #33231 > > 00:26:28 v #33232 > > retries2 00:26:28 v #33233 > > |> _assert_between 00:26:28 v #33234 > > if platform.is_windows () then 5i64 else 0 00:26:28 v #33235 > > if platform.is_windows () then 20 else 60 00:26:28 v #33236 > > 00:26:28 v #33237 > > true 00:26:28 v #33238 > > | _ => false 00:26:28 v #33239 > > |> _assert_eq true 00:26:36 v #33240 > > 00:26:36 v #33241 > > ── [ 7.61s - stdout ] ────────────────────────────────────────────────────────── 00:26:36 v #33242 > > │ 00:00:00 d #1 1 00:26:36 v #33243 > > │ 00:00:00 d #2 2 00:26:36 v #33244 > > │ 00:00:00 d #2 _1 00:26:36 v #33245 > > │ 00:00:00 d #4 3 00:26:36 v #33246 > > │ 00:00:00 v #5 networking.test_port_open / { port = 5555; 00:26:36 v #33247 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33248 > > refused) } 00:26:36 v #33249 > > │ 00:00:00 v #6 networking.test_port_open / { port = 5555; 00:26:36 v #33250 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33251 > > refused) } 00:26:36 v #33252 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5555; 00:26:36 v #33253 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33254 > > refused) } 00:26:36 v #33255 > > │ 00:00:00 v #8 networking.test_port_open / { port = 5555; 00:26:36 v #33256 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33257 > > refused) } 00:26:36 v #33258 > > │ 00:00:00 v #9 networking.test_port_open / { port = 5555; 00:26:36 v #33259 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33260 > > refused) } 00:26:36 v #33261 > > │ 00:00:00 v #10 networking.test_port_open / { port = 00:26:36 v #33262 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33263 > > refused) } 00:26:36 v #33264 > > │ 00:00:00 v #11 networking.test_port_open / { port = 00:26:36 v #33265 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33266 > > refused) } 00:26:36 v #33267 > > │ 00:00:00 v #12 networking.test_port_open / { port = 00:26:36 v #33268 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33269 > > refused) } 00:26:36 v #33270 > > │ 00:00:00 v #13 networking.test_port_open / { port = 00:26:36 v #33271 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33272 > > refused) } 00:26:36 v #33273 > > │ 00:00:00 v #14 networking.test_port_open / { port = 00:26:36 v #33274 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33275 > > refused) } 00:26:36 v #33276 > > │ 00:00:00 v #15 networking.test_port_open / { port = 00:26:36 v #33277 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33278 > > refused) } 00:26:36 v #33279 > > │ 00:00:00 v #16 networking.test_port_open / { port = 00:26:36 v #33280 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33281 > > refused) } 00:26:36 v #33282 > > │ 00:00:00 v #17 networking.test_port_open / { port = 00:26:36 v #33283 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33284 > > refused) } 00:26:36 v #33285 > > │ 00:00:00 v #18 networking.test_port_open / { port = 00:26:36 v #33286 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33287 > > refused) } 00:26:36 v #33288 > > │ 00:00:00 v #19 networking.test_port_open / { port = 00:26:36 v #33289 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33290 > > refused) } 00:26:36 v #33291 > > │ 00:00:00 v #20 networking.test_port_open / { port = 00:26:36 v #33292 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33293 > > refused) } 00:26:36 v #33294 > > │ 00:00:00 v #21 networking.test_port_open / { port = 00:26:36 v #33295 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33296 > > refused) } 00:26:36 v #33297 > > │ 00:00:00 v #22 networking.test_port_open / { port = 00:26:36 v #33298 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33299 > > refused) } 00:26:36 v #33300 > > │ 00:00:00 v #23 networking.test_port_open / { port = 00:26:36 v #33301 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33302 > > refused) } 00:26:36 v #33303 > > │ 00:00:00 v #24 networking.test_port_open / { port = 00:26:36 v #33304 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33305 > > refused) } 00:26:36 v #33306 > > │ 00:00:00 v #25 networking.test_port_open / { port = 00:26:36 v #33307 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33308 > > refused) } 00:26:36 v #33309 > > │ 00:00:00 v #26 networking.test_port_open / { port = 00:26:36 v #33310 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33311 > > refused) } 00:26:36 v #33312 > > │ 00:00:00 v #27 networking.test_port_open / { port = 00:26:36 v #33313 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33314 > > refused) } 00:26:36 v #33315 > > │ 00:00:00 v #28 networking.test_port_open / { port = 00:26:36 v #33316 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33317 > > refused) } 00:26:36 v #33318 > > │ 00:00:00 v #29 networking.test_port_open / { port = 00:26:36 v #33319 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33320 > > refused) } 00:26:36 v #33321 > > │ 00:00:00 v #30 networking.test_port_open / { port = 00:26:36 v #33322 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33323 > > refused) } 00:26:36 v #33324 > > │ 00:00:00 v #31 networking.test_port_open / { port = 00:26:36 v #33325 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33326 > > refused) } 00:26:36 v #33327 > > │ 00:00:00 v #32 networking.test_port_open / { port = 00:26:36 v #33328 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33329 > > refused) } 00:26:36 v #33330 > > │ 00:00:00 v #33 networking.test_port_open / { port = 00:26:36 v #33331 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33332 > > refused) } 00:26:36 v #33333 > > │ 00:00:00 v #34 networking.test_port_open / { port = 00:26:36 v #33334 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33335 > > refused) } 00:26:36 v #33336 > > │ 00:00:00 v #35 networking.test_port_open / { port = 00:26:36 v #33337 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33338 > > refused) } 00:26:36 v #33339 > > │ 00:00:00 v #36 networking.test_port_open / { port = 00:26:36 v #33340 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33341 > > refused) } 00:26:36 v #33342 > > │ 00:00:00 v #37 networking.test_port_open / { port = 00:26:36 v #33343 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33344 > > refused) } 00:26:36 v #33345 > > │ 00:00:00 v #38 networking.test_port_open / { port = 00:26:36 v #33346 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33347 > > refused) } 00:26:36 v #33348 > > │ 00:00:00 v #39 networking.test_port_open / { port = 00:26:36 v #33349 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33350 > > refused) } 00:26:36 v #33351 > > │ 00:00:00 v #40 networking.test_port_open / { port = 00:26:36 v #33352 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33353 > > refused) } 00:26:36 v #33354 > > │ 00:00:00 v #41 networking.test_port_open / { port = 00:26:36 v #33355 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33356 > > refused) } 00:26:36 v #33357 > > │ 00:00:00 v #42 networking.test_port_open / { port = 00:26:36 v #33358 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33359 > > refused) } 00:26:36 v #33360 > > │ 00:00:00 v #43 networking.test_port_open / { port = 00:26:36 v #33361 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33362 > > refused) } 00:26:36 v #33363 > > │ 00:00:00 v #44 networking.test_port_open / { port = 00:26:36 v #33364 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33365 > > refused) } 00:26:36 v #33366 > > │ 00:00:00 v #45 networking.test_port_open / { port = 00:26:36 v #33367 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33368 > > refused) } 00:26:36 v #33369 > > │ 00:00:00 v #46 networking.test_port_open / { port = 00:26:36 v #33370 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33371 > > refused) } 00:26:36 v #33372 > > │ 00:00:00 v #47 networking.test_port_open / { port = 00:26:36 v #33373 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33374 > > refused) } 00:26:36 v #33375 > > │ 00:00:00 v #48 networking.test_port_open / { port = 00:26:36 v #33376 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33377 > > refused) } 00:26:36 v #33378 > > │ 00:00:00 v #49 networking.test_port_open / { port = 00:26:36 v #33379 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33380 > > refused) } 00:26:36 v #33381 > > │ 00:00:00 v #50 networking.test_port_open / { port = 00:26:36 v #33382 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33383 > > refused) } 00:26:36 v #33384 > > │ 00:00:00 v #51 networking.test_port_open / { port = 00:26:36 v #33385 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33386 > > refused) } 00:26:36 v #33387 > > │ 00:00:00 d #51 _2 00:26:36 v #33388 > > │ 00:00:00 d #53 _3 00:26:36 v #33389 > > │ 00:00:00 d #54 4 00:26:36 v #33390 > > │ 00:00:00 d #55 _4 00:26:36 v #33391 > > │ 00:00:00 d #56 _5 00:26:36 v #33392 > > │ 00:00:00 v #57 networking.test_port_open / { port = 00:26:36 v #33393 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:36 v #33394 > > refused) } 00:26:36 v #33395 > > │ 00:00:00 d #58 5 00:26:36 v #33396 > > │ 00:00:00 d #59 6 00:26:36 v #33397 > > │ __assert_between / actual: 48L / expected: struct (2L, 150L) 00:26:36 v #33398 > > │ __assert_between / actual: 20L / expected: struct (0L, 60L) 00:26:36 v #33399 > > │ __assert_eq / actual: true / expected: true 00:26:36 v #33400 > > │ 00:26:36 v #33401 > > 00:26:36 v #33402 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:36 v #33403 > > │ ### get_available_port 00:26:36 v #33404 > > 00:26:36 v #33405 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:36 v #33406 > > let get_available_port timeout host initial_port : _ i32 = 00:26:36 v #33407 > > let rec loop port = 00:26:36 v #33408 > > fun () => 00:26:36 v #33409 > > inl is_port_open = 00:26:36 v #33410 > > match timeout |> optionm'.unbox with 00:26:36 v #33411 > > | None => test_port_open host port 00:26:36 v #33412 > > | Some timeout => test_port_open_timeout timeout host port 00:26:36 v #33413 > > |> async.let' 00:26:36 v #33414 > > fix_condition 00:26:36 v #33415 > > fun () => is_port_open |> not 00:26:36 v #33416 > > fun () => port |> return 00:26:36 v #33417 > > fun () => loop (port + 1) |> async.return_await 00:26:36 v #33418 > > |> async.new_async_unit 00:26:36 v #33419 > > loop initial_port 00:26:36 v #33420 > > 00:26:36 v #33421 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:36 v #33422 > > //// test 00:26:36 v #33423 > > 00:26:36 v #33424 > > inl lock_ports host port = async.new_async_unit fun () => 00:26:36 v #33425 > > trace Debug (fun () => "_1") id 00:26:36 v #33426 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:26:36 v #33427 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:26:36 v #33428 > > trace Debug (fun () => "_2") id 00:26:36 v #33429 > > listener1 |> listener_start 00:26:36 v #33430 > > listener2 |> listener_start 00:26:36 v #33431 > > trace Debug (fun () => "_3") id 00:26:36 v #33432 > > async.sleep 4000 |> async.do 00:26:36 v #33433 > > trace Debug (fun () => "_4") id 00:26:36 v #33434 > > listener1 |> listener_stop 00:26:36 v #33435 > > listener2 |> listener_stop 00:26:36 v #33436 > > trace Debug (fun () => "_5") id 00:26:36 v #33437 > > 00:26:36 v #33438 > > inl host = "127.0.0.1" 00:26:36 v #33439 > > inl port = 5555 00:26:36 v #33440 > > 00:26:36 v #33441 > > fun () => 00:26:36 v #33442 > > trace Debug (fun () => "1") id 00:26:36 v #33443 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:26:36 v #33444 > > trace Debug (fun () => "2") id 00:26:36 v #33445 > > async.sleep 240 |> async.do 00:26:36 v #33446 > > trace Debug (fun () => "3") id 00:26:36 v #33447 > > inl available_port = get_available_port (None |> optionm'.box) host port |> 00:26:36 v #33448 > > async.let' 00:26:36 v #33449 > > trace Debug (fun () => "4") id 00:26:36 v #33450 > > inl retries = wait_for_port_access (None |> optionm'.box) false host port |> 00:26:36 v #33451 > > async.let' 00:26:36 v #33452 > > trace Debug (fun () => "5") id 00:26:36 v #33453 > > child |> async.do 00:26:36 v #33454 > > trace Debug (fun () => "6") id 00:26:36 v #33455 > > (available_port, retries) |> return 00:26:36 v #33456 > > |> async.new_async_unit 00:26:36 v #33457 > > |> async.run_with_timeout 15000 00:26:36 v #33458 > > |> function 00:26:36 v #33459 > > | Some (available_port, retries) => 00:26:36 v #33460 > > available_port |> _assert_eq (port + 2) 00:26:36 v #33461 > > 00:26:36 v #33462 > > retries 00:26:36 v #33463 > > |> _assert_between 00:26:36 v #33464 > > if platform.is_windows () then 50i64 else 50 00:26:36 v #33465 > > if platform.is_windows () then 150 else 1200 00:26:36 v #33466 > > 00:26:36 v #33467 > > true 00:26:36 v #33468 > > | _ => false 00:26:36 v #33469 > > |> _assert_eq true 00:26:47 v #33470 > > 00:26:47 v #33471 > > ── [ 10.79s - stdout ] ───────────────────────────────────────────────────────── 00:26:47 v #33472 > > │ 00:00:00 d #1 1 00:26:47 v #33473 > > │ 00:00:00 d #2 _1 00:26:47 v #33474 > > │ 00:00:00 d #3 2 00:26:47 v #33475 > > │ 00:00:00 d #4 _2 00:26:47 v #33476 > > │ 00:00:00 d #5 _3 00:26:47 v #33477 > > │ 00:00:00 d #6 3 00:26:47 v #33478 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5557; 00:26:47 v #33479 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:47 v #33480 > > refused) } 00:26:47 v #33481 > > │ 00:00:00 d #8 4 00:26:47 v #33482 > > │ 00:00:01 v #9 networking.wait_for_port_access / { port = 00:26:47 v #33483 > > 5555; retry = 100; timeout = None; status = false } 00:26:47 v #33484 > > │ 00:00:02 v #10 networking.wait_for_port_access / { port 00:26:47 v #33485 > > = 5555; retry = 200; timeout = None; status = false } 00:26:47 v #33486 > > │ 00:00:03 v #11 networking.wait_for_port_access / { port 00:26:47 v #33487 > > = 5555; retry = 300; timeout = None; status = false } 00:26:47 v #33488 > > │ 00:00:04 d #12 _4 00:26:47 v #33489 > > │ 00:00:04 v #13 networking.test_port_open / { port = 00:26:47 v #33490 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:47 v #33491 > > refused) } 00:26:47 v #33492 > > │ 00:00:04 d #14 5 00:26:47 v #33493 > > │ 00:00:04 d #15 _5 00:26:47 v #33494 > > │ 00:00:04 d #16 6 00:26:47 v #33495 > > │ __assert_eq / actual: 5557 / expected: 5557 00:26:47 v #33496 > > │ __assert_between / actual: 361L / expected: struct (50L, 00:26:47 v #33497 > > 1200L) 00:26:47 v #33498 > > │ __assert_eq / actual: true / expected: true 00:26:47 v #33499 > > │ 00:26:47 v #33500 > > 00:26:47 v #33501 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:47 v #33502 > > //// test 00:26:47 v #33503 > > 00:26:47 v #33504 > > inl lock_ports host port = async.new_async_unit fun () => 00:26:47 v #33505 > > trace Debug (fun () => "_1") id 00:26:47 v #33506 > > inl listener1 = new_tcp_listener (ip_address_parse host) port |> use 00:26:47 v #33507 > > inl listener2 = new_tcp_listener (ip_address_parse host) (port + 1) |> use 00:26:47 v #33508 > > trace Debug (fun () => "_2") id 00:26:47 v #33509 > > listener1 |> listener_start 00:26:47 v #33510 > > listener2 |> listener_start 00:26:47 v #33511 > > trace Debug (fun () => "_3") id 00:26:47 v #33512 > > async.sleep 400 |> async.do 00:26:47 v #33513 > > trace Debug (fun () => "_4") id 00:26:47 v #33514 > > listener1 |> listener_stop 00:26:47 v #33515 > > listener2 |> listener_stop 00:26:47 v #33516 > > trace Debug (fun () => "_5") id 00:26:47 v #33517 > > 00:26:47 v #33518 > > inl host = "127.0.0.1" 00:26:47 v #33519 > > inl port = 5555 00:26:47 v #33520 > > 00:26:47 v #33521 > > fun () => 00:26:47 v #33522 > > trace Debug (fun () => "1") id 00:26:47 v #33523 > > inl child = lock_ports host port |> async.start_child |> async.let' 00:26:47 v #33524 > > trace Debug (fun () => "2") id 00:26:47 v #33525 > > async.sleep 240 |> async.do 00:26:47 v #33526 > > trace Debug (fun () => "3") id 00:26:47 v #33527 > > inl available_port = get_available_port (Some 60 |> optionm'.box) host port 00:26:47 v #33528 > > |> async.let' 00:26:47 v #33529 > > trace Debug (fun () => "4") id 00:26:47 v #33530 > > inl retries = wait_for_port_access (Some 60 |> optionm'.box) false host port 00:26:47 v #33531 > > |> async.let' 00:26:47 v #33532 > > trace Debug (fun () => "5") id 00:26:47 v #33533 > > child |> async.do 00:26:47 v #33534 > > trace Debug (fun () => "6") id 00:26:47 v #33535 > > (available_port, retries) |> return 00:26:47 v #33536 > > |> async.new_async_unit 00:26:47 v #33537 > > |> async.run_with_timeout 1500 00:26:47 v #33538 > > |> function 00:26:47 v #33539 > > | Some (available_port, retries) => 00:26:47 v #33540 > > available_port |> _assert_eq (port + 2) 00:26:47 v #33541 > > 00:26:47 v #33542 > > retries 00:26:47 v #33543 > > |> _assert_between 00:26:47 v #33544 > > (if platform.is_windows () then 2i64 else 1) 00:26:47 v #33545 > > (if platform.is_windows () then 10 else 120) 00:26:47 v #33546 > > 00:26:47 v #33547 > > true 00:26:47 v #33548 > > | _ => false 00:26:47 v #33549 > > |> _assert_eq true 00:26:54 v #33550 > > 00:26:54 v #33551 > > ── [ 7.45s - stdout ] ────────────────────────────────────────────────────────── 00:26:54 v #33552 > > │ 00:00:00 d #1 1 00:26:54 v #33553 > > │ 00:00:00 d #2 2 00:26:54 v #33554 > > │ 00:00:00 d #3 _1 00:26:54 v #33555 > > │ 00:00:00 d #4 _2 00:26:54 v #33556 > > │ 00:00:00 d #5 _3 00:26:54 v #33557 > > │ 00:00:00 d #6 3 00:26:54 v #33558 > > │ 00:00:00 v #7 networking.test_port_open / { port = 5557; 00:26:54 v #33559 > > ex = System.AggregateException: One or more errors occurred. (Connection 00:26:54 v #33560 > > refused) } 00:26:54 v #33561 > > │ 00:00:00 d #8 4 00:26:54 v #33562 > > │ 00:00:00 d #9 _4 00:26:54 v #33563 > > │ 00:00:00 d #10 _5 00:26:54 v #33564 > > │ 00:00:00 v #11 networking.test_port_open / { port = 00:26:54 v #33565 > > 5555; ex = System.AggregateException: One or more errors occurred. (Connection 00:26:54 v #33566 > > refused) } 00:26:54 v #33567 > > │ 00:00:00 d #12 5 00:26:54 v #33568 > > │ 00:00:00 d #13 6 00:26:54 v #33569 > > │ __assert_eq / actual: 5557 / expected: 5557 00:26:54 v #33570 > > │ __assert_between / actual: 16L / expected: struct (1L, 120L) 00:26:54 v #33571 > > │ __assert_eq / actual: true / expected: true 00:26:54 v #33572 > > │ 00:26:54 v #33573 > > 00:26:54 v #33574 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:26:54 v #33575 > > │ ## main 00:26:54 v #33576 > > 00:26:54 v #33577 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:26:54 v #33578 > > inl main () = 00:26:54 v #33579 > > init_trace_state None 00:26:54 v #33580 > > $'let test_port_open x = !test_port_open x' : () 00:26:54 v #33581 > > $'let test_port_open_timeout x = !test_port_open_timeout x' : () 00:26:54 v #33582 > > $'let wait_for_port_access x = !wait_for_port_access x' : () 00:26:54 v #33583 > > $'let get_available_port x = !get_available_port x' : () 00:26:57 v #33584 > 00:00:58 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 119048 } 00:26:57 v #33585 > 00:00:58 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:26:58 v #33586 > 00:00:59 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.ipynb to html 00:26:58 v #33587 > 00:00:59 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:26:58 v #33588 > 00:00:59 v #7 ! validate(nb) 00:26:59 v #33589 > 00:00:59 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:26:59 v #33590 > 00:00:59 v #9 ! return _pygments_highlight( 00:26:59 v #33591 > 00:01:00 v #10 ! [NbConvertApp] Writing 468046 bytes to /home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html 00:26:59 v #33592 > 00:01:00 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:26:59 v #33593 > 00:01:00 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:26:59 v #33594 > 00:01:00 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/spiral/networking.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:26:59 v #33595 > 00:01:00 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:26:59 v #33596 > 00:01:00 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:26:59 v #33597 > 00:01:00 d #16 spiral.run / dib / { exit_code = 0; result_length = 120011 } 00:26:59 d #33598 runtime.execute_with_options_async / { exit_code = 0; output_length = 127134 } 00:26:59 d #40 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path networking.dib --retries 3 00:26:59 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib 00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib 00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib 00:00:00 d #1 writeDibCode / output: Spi / path: async.dib 00:00:00 d #2 parseDibCode / output: Spi / file: runtime.dib 00:00:00 d #3 parseDibCode / output: Spi / file: async.dib 00:00:00 d #4 parseDibCode / output: Spi / file: testing.dib 00:00:00 d #5 parseDibCode / output: Spi / file: trace.dib 00:00:00 d #6 writeDibCode / output: Spi / path: threading.dib 00:00:00 d #7 parseDibCode / output: Spi / file: threading.dib 00:00:00 d #8 writeDibCode / output: Spi / path: crypto.dib 00:00:00 d #9 writeDibCode / output: Spi / path: networking.dib 00:00:00 d #10 parseDibCode / output: Spi / file: crypto.dib 00:00:00 d #11 parseDibCode / output: Spi / file: networking.dib 00:00:00 d #12 writeDibCode / output: Spi / path: common.dib 00:00:00 d #13 writeDibCode / output: Spi / path: base.dib 00:00:00 d #14 parseDibCode / output: Spi / file: common.dib 00:00:00 d #15 parseDibCode / output: Spi / file: base.dib 00:00:00 d #16 writeDibCode / output: Spi / path: resultm.dib 00:00:00 d #17 parseDibCode / output: Spi / file: resultm.dib 00:00:00 d #18 writeDibCode / output: Spi / path: iter.dib 00:00:00 d #20 parseDibCode / output: Spi / file: iter.dib 00:00:00 d #21 writeDibCode / output: Spi / path: parsing.dib 00:00:00 d #19 writeDibCode / output: Spi / path: env.dib 00:00:00 d #22 parseDibCode / output: Spi / file: env.dib 00:00:00 d #23 writeDibCode / output: Spi / path: console.dib 00:00:00 d #24 parseDibCode / output: Spi / file: console.dib 00:00:00 d #25 writeDibCode / output: Spi / path: date_time.dib 00:00:00 d #26 writeDibCode / output: Spi / path: file_system.dib 00:00:00 d #28 writeDibCode / output: Spi / path: guid.dib 00:00:00 d #29 parseDibCode / output: Spi / file: file_system.dib 00:00:00 d #30 parseDibCode / output: Spi / file: guid.dib 00:00:00 d #27 parseDibCode / output: Spi / file: parsing.dib 00:00:00 d #31 parseDibCode / output: Spi / file: date_time.dib 00:00:00 d #32 writeDibCode / output: Spi / path: math.dib 00:00:00 d #33 parseDibCode / output: Spi / file: math.dib 00:00:00 d #34 writeDibCode / output: Spi / path: mapm.dib 00:00:00 d #35 writeDibCode / output: Spi / path: optionm'.dib 00:00:00 d #36 parseDibCode / output: Spi / file: optionm'.dib 00:00:00 d #37 parseDibCode / output: Spi / file: mapm.dib 00:00:00 d #38 writeDibCode / output: Spi / path: am'.dib 00:00:00 d #39 parseDibCode / output: Spi / file: am'.dib 00:00:00 d #40 writeDibCode / output: Spi / path: sm'.dib 00:00:00 d #42 parseDibCode / output: Spi / file: sm'.dib 00:00:00 d #41 writeDibCode / output: Spir / path: sm'.dib 00:00:00 d #43 parseDibCode / output: Spir / file: sm'.dib 00:00:00 d #44 writeDibCode / output: Spi / path: listm'.dib 00:00:00 d #45 parseDibCode / output: Spi / file: listm'.dib 00:00:00 d #46 writeDibCode / output: Spi / path: reflection.dib 00:00:00 d #47 parseDibCode / output: Spi / file: reflection.dib 00:00:00 d #48 writeDibCode / output: Spi / path: python.dib 00:00:00 d #49 parseDibCode / output: Spi / file: python.dib 00:00:00 d #50 writeDibCode / output: Spi / path: typescript.dib 00:00:00 d #51 parseDibCode / output: Spi / file: typescript.dib 00:00:00 d #52 writeDibCode / output: Spi / path: benchmark.dib 00:00:00 d #53 parseDibCode / output: Spi / file: benchmark.dib 00:00:00 d #54 writeDibCode / output: Spi / path: stream.dib 00:00:00 d #55 parseDibCode / output: Spi / file: stream.dib 00:00:00 d #56 writeDibCode / output: Spi / path: seq.dib 00:00:00 d #57 parseDibCode / output: Spi / file: seq.dib 00:00:00 d #58 writeDibCode / output: Spi / path: util.dib 00:00:00 d #59 parseDibCode / output: Spi / file: util.dib 00:00:00 d #60 writeDibCode / output: Spi / path: platform.dib 00:00:00 d #61 parseDibCode / output: Spi / file: platform.dib 00:00:00 d #62 writeDibCode / output: Spi / path: rust/rust.dib 00:00:00 d #63 parseDibCode / output: Spi / file: rust/rust.dib 00:00:00 d #64 writeDibCode / output: Spi / path: rust/testing.dib 00:00:00 d #65 parseDibCode / output: Spi / file: rust/testing.dib 00:00:00 d #66 writeDibCode / output: Spi / path: rust/near.dib 00:00:00 d #67 parseDibCode / output: Spi / file: rust/near.dib 00:00:00 d #68 writeDibCode / output: Spi / path: rust/near_workspaces.dib 00:00:00 d #69 parseDibCode / output: Spi / file: rust/near_workspaces.dib 00:00:00 d #70 writeDibCode / output: Spi / path: physics.dib 00:00:00 d #71 parseDibCode / output: Spi / file: physics.dib 00:00:00 d #72 writeDibCode / output: Spi / path: leptos/leptos.dib 00:00:00 d #73 parseDibCode / output: Spi / file: leptos/leptos.dib 00:00:00 d #74 writeDibCode / output: Spi / path: wasm.dib 00:00:00 d #75 parseDibCode / output: Spi / file: wasm.dib 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #46 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #6 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #8 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #7 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #9 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #10 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #11 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # trace\n\n/// ## trace\n\n/// ### trace_level\nunion trace_level =\n ...x = !trace x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result: 00:00:01 v #11 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # runtime\nopen rust\nopen rust_operators\nopen sm\u0027_operators\n\n//...lit_args x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:01 v #12 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # async\nopen rust\nopen rust_operators\n\n/// ### base_let\u0027\ninl b...ault_async x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result: 00:00:01 v #14 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/async.spi"}} / result: 00:00:01 v #15 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/trace.spi"}} / result: 00:00:01 v #15 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/runtime.spi"}} / result: 00:00:02 d #17 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #18 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #19 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #20 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #21 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #22 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #23 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #26 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #25 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #27 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #24 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #28 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #29 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #30 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #31 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #31 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #33 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #34 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #35 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #35 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #36 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #37 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #38 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #39 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #40 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #41 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #42 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #43 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #44 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #45 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #46 Supervisor.buildFile / AsyncSeq.scan / path: trace.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... else let v43 : string = v2 () method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43) method18(v45) and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit = let v3 : unit = () let v4 : (unit -> unit) = closure6(v0, v1, v2) let v5 : unit = (fun () -> v4 (); v3) () () and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) = closure5(v0, v1) and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) = closure4(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3() let trace x = v16 x () 00:00:04 d #48 Supervisor.buildFile / takeWhileInclusive / path: trace.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... else let v43 : string = v2 () method15(v20, v21, v22, v23, v24, v25, v38, v39, v40, v43) method18(v45) and closure5 (v0 : US0, v1 : (unit -> string)) (v2 : (unit -> string)) : unit = let v3 : unit = () let v4 : (unit -> unit) = closure6(v0, v1, v2) let v5 : unit = (fun () -> v4 (); v3) () () and closure4 (v0 : US0) (v1 : (unit -> string)) : ((unit -> string) -> unit) = closure5(v0, v1) and closure3 () (v0 : US0) : ((unit -> string) -> ((unit -> string) -> unit)) = closure4(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (US0 -> ((unit -> string) -> ((unit -> string) -> unit))) = closure3() let trace x = v16 x () 00:00:04 d #46 Supervisor.buildFile / AsyncSeq.scan / path: async.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_... let v747 : System.Threading.CancellationToken = v746.Token return v747 #endif // run_target_args' is_unit (* indent () indent *) } (* indent () indent *) let v954 : Async<System.Threading.CancellationToken> = _let'_v719 let _run_target_args'_v1 = v954 #endif let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 v955 and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = method0(v0) let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () 00:00:04 d #49 Supervisor.buildFile / takeWhileInclusive / path: async.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: let rec method0 (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : Async<System.Threading.CancellationToken> = null |> unbox<Async<System.Threading.CancellationToken>> let _run_target_args'_... let v747 : System.Threading.CancellationToken = v746.Token return v747 #endif // run_target_args' is_unit (* indent () indent *) } (* indent () indent *) let v954 : Async<System.Threading.CancellationToken> = _let'_v719 let _run_target_args'_v1 = v954 #endif let v955 : Async<System.Threading.CancellationToken> = _run_target_args'_v1 v955 and closure0 () (v0 : System.Threading.CancellationToken) : Async<System.Threading.CancellationToken> = method0(v0) let v0 : (System.Threading.CancellationToken -> Async<System.Threading.CancellationToken>) = closure0() let merge_cancellation_token_with_default_async x = v0 x () 00:00:04 d #50 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 d #50 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:04 v #47 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:04 v #48 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:04 d #52 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #53 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #54 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #55 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #56 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #57 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 v #58 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # networking\nopen rust.rust_operators\n\n/// ## rust\n\n/// ### reqwest..._port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result: 00:00:04 v #59 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # threading\nopen rust\nopen rust_operators\n\n/// ## rust\n\n/// ### sl..._token x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result: 00:00:04 v #60 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/networking.spi"}} / result: 00:00:04 v #61 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/threading.spi"}} / result: 00:00:04 d #62 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #63 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #64 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #65 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #66 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #67 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #68 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #69 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #70 Supervisor.buildFile / AsyncSeq.scan / path: threading.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.Threading.CancellationToken | US0_1 let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 = US0_0(v0) and method0 () : (System.Threading.CancellationToken -> US0) = closure1() and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && WASM null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT n...er _.Dispose () = v74 () } let _run_target_args'_v63 = v75 #endif #else let v76 : (unit -> unit) = method2(v62) let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () } let _run_target_args'_v63 = v77 #endif let v78 : System.IDisposable = _run_target_args'_v63 let v82 : System.Threading.CancellationToken = v62.Token let _run_target_args'_v1 = struct (v82, v78) #endif let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 struct (v83, v84) let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () 00:00:05 d #71 Supervisor.buildFile / takeWhileInclusive / path: threading.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: type Disposable (f : unit -> unit) = interface System.IDisposable with member _.Dispose () = f () type [<Struct>] US0 = | US0_0 of f0_0 : System.Threading.CancellationToken | US0_1 let rec closure1 () (v0 : System.Threading.CancellationToken) : US0 = US0_0(v0) and method0 () : (System.Threading.CancellationToken -> US0) = closure1() and closure2 (v0 : System.Threading.CancellationTokenSource) () : unit = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && WASM null |> unbox<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT n...er _.Dispose () = v74 () } let _run_target_args'_v63 = v75 #endif #else let v76 : (unit -> unit) = method2(v62) let v77 : System.IDisposable = { new System.IDisposable with member _.Dispose () = v76 () } let _run_target_args'_v63 = v77 #endif let v78 : System.IDisposable = _run_target_args'_v63 let v82 : System.Threading.CancellationToken = v62.Token let _run_target_args'_v1 = struct (v82, v78) #endif let struct (v83 : System.Threading.CancellationToken, v84 : System.IDisposable) = _run_target_args'_v1 struct (v83, v84) let v0 : (System.Threading.CancellationToken option -> struct (System.Threading.CancellationToken * System.IDisposable)) = closure0() let new_disposable_token x = v0 x () 00:00:05 d #72 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 v #49 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:05 d #73 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #74 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #75 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 v #76 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # crypto\nopen rust\nopen rust_operators\n\n/// ## fsharp\n\n/// ### sha...h_to_port x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:05 v #77 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/crypto.spi"}} / result: 00:00:05 d #78 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #79 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #80 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #81 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #82 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #83 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #84 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #85 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #86 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #87 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #88 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #89 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #90 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #91 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #92 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #93 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:06 d #94 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:06 d #95 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #96 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #97 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #98 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #99 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #100 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #101 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #102 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #103 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #104 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #105 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:07 d #106 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:07 d #107 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #108 Supervisor.buildFile / AsyncSeq.scan / path: crypto.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>] #endif type std_io_Cursor<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>] #endif type std_io_BufReader<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>] #endif type sha2_Sha256 = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("_")>] #endif type Slice'<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 #endif #else let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0) let _run_target_args'_v2 = v45 #endif let v46 : int32 = _run_target_args'_v2 let v57 : string = v0.[int 0..int 7] let v60 : int32 = System.Convert.ToInt32 (v57, 16) let v63 : int32 = v60 + v46 let v64 : (int32 -> uint16) = uint16 let v65 : uint16 = v64 v63 let v68 : unit = () let v69 : (unit -> unit) = closure2(v46, v57, v65) let v70 : unit = (fun () -> v69 (); v68) () let v110 : uint16 = v65 % 48128us let v111 : uint16 = v110 + 1024us v111 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () 00:00:08 d #109 Supervisor.buildFile / takeWhileInclusive / path: crypto.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::Cursor<$0>")>] #endif type std_io_Cursor<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::io::BufReader<$0>")>] #endif type std_io_BufReader<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("sha2::Sha256")>] #endif type sha2_Sha256 = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("_")>] #endif type Slice'<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::Stri...let _run_target_args'_v2 = v38 #endif #else let v45 : int32 = System.Char.ConvertToUtf32 (string v1, 0) let _run_target_args'_v2 = v45 #endif let v46 : int32 = _run_target_args'_v2 let v57 : string = v0.[int 0..int 7] let v60 : int32 = System.Convert.ToInt32 (v57, 16) let v63 : int32 = v60 + v46 let v64 : (int32 -> uint16) = uint16 let v65 : uint16 = v64 v63 let v68 : unit = () let v69 : (unit -> unit) = closure2(v46, v57, v65) let v70 : unit = (fun () -> v69 (); v68) () let v110 : uint16 = v65 % 48128us let v111 : uint16 = v110 + 1024us v111 let v0 : (string -> string) = closure0() let hash_text x = v0 x let v1 : (string -> uint16) = closure1() let hash_to_port x = v1 x () 00:00:08 d #110 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:08 v #50 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:08 d #111 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #112 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #113 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #114 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #115 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 v #116 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # common\n\n/// ## common\n\n/// ### retry_fn\u0027\ninl retry_fn\u0027 ... !memoize x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result: 00:00:08 v #117 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/common.spi"}} / result: 00:00:08 d #118 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #119 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #120 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #121 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #122 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #123 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:08 d #124 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:08 d #125 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #126 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #127 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #128 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #129 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #130 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #131 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #132 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #133 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #134 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #135 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #136 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #137 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #138 Supervisor.buildFile / AsyncSeq.scan / path: common.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co...ion = Some () v4 and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) = closure5(v0) and method22 (v0 : (unit -> unit)) : (unit -> unit) = v0 and closure16 (v0 : Lazy<unit>) () : unit = v0.Value () and closure15 () (v0 : (unit -> unit)) : (unit -> unit) = let v1 : (unit -> unit) = method22(v0) let v2 : Lazy<unit> = lazy v1 () closure16(v2) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : ((unit -> unit) -> System.IDisposable) = closure3() let new_disposable x = v16 x let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4() let retry_fn x = v17 x let v18 : ((unit -> unit) -> (unit -> unit)) = closure15() let memoize x = v18 x () 00:00:09 d #139 Supervisor.buildFile / takeWhileInclusive / path: common.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co...ion = Some () v4 and closure4 () (v0 : int32) : ((unit -> unit) -> unit option) = closure5(v0) and method22 (v0 : (unit -> unit)) : (unit -> unit) = v0 and closure16 (v0 : Lazy<unit>) () : unit = v0.Value () and closure15 () (v0 : (unit -> unit)) : (unit -> unit) = let v1 : (unit -> unit) = method22(v0) let v2 : Lazy<unit> = lazy v1 () closure16(v2) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : ((unit -> unit) -> System.IDisposable) = closure3() let new_disposable x = v16 x let v17 : (int32 -> ((unit -> unit) -> unit option)) = closure4() let retry_fn x = v17 x let v18 : ((unit -> unit) -> (unit -> unit)) = closure15() let memoize x = v18 x () 00:00:09 d #140 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:09 v #51 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:09 d #141 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 d #142 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:09 d #143 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:09 v #144 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # date_time\nopen rust.rust_operators\nopen sm\u0027_operators\n\n/// ##...so8601 x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:09 v #145 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/date_time.spi"}} / result: 00:00:10 d #146 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #147 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #148 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #149 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #150 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #151 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #152 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #153 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #154 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #155 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #156 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #157 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #158 Supervisor.buildFile / AsyncSeq.scan / path: date_time.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>] #endif type chrono_NaiveDateTime = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>] #endif type chrono_Utc = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>] #endif type chrono_Local = class en...HH-mm-ss.fff" v1 v2 let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0() let date_time_guid_from_date_time x = v0 x let v1 : (System.Guid -> System.DateTime) = closure3() let date_time_from_guid x = v1 x let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5() let timestamp_guid_from_timestamp x = v2 x let v3 : (System.Guid -> int64) = closure8() let timestamp_from_guid x = v3 x let v4 : (System.DateTime -> System.Guid) = closure9() let new_guid_from_date_time x = v4 x let v5 : (int64 -> System.Guid) = closure10() let new_guid_from_timestamp x = v5 x let v6 : (string -> (System.DateTime -> string)) = closure11() let format x = v6 x let v7 : (System.DateTime -> string) = closure13() let format_iso8601 x = v7 x () 00:00:10 d #159 Supervisor.buildFile / takeWhileInclusive / path: date_time.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::DateTime<$0>")>] #endif type chrono_DateTime<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::NaiveDateTime")>] #endif type chrono_NaiveDateTime = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Utc")>] #endif type chrono_Utc = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("chrono::Local")>] #endif type chrono_Local = class en...HH-mm-ss.fff" v1 v2 let v0 : (System.Guid -> (System.DateTime -> System.Guid)) = closure0() let date_time_guid_from_date_time x = v0 x let v1 : (System.Guid -> System.DateTime) = closure3() let date_time_from_guid x = v1 x let v2 : (System.Guid -> (int64 -> System.Guid)) = closure5() let timestamp_guid_from_timestamp x = v2 x let v3 : (System.Guid -> int64) = closure8() let timestamp_from_guid x = v3 x let v4 : (System.DateTime -> System.Guid) = closure9() let new_guid_from_date_time x = v4 x let v5 : (int64 -> System.Guid) = closure10() let new_guid_from_timestamp x = v5 x let v6 : (string -> (System.DateTime -> string)) = closure11() let format x = v6 x let v7 : (System.DateTime -> string) = closure13() let format_iso8601 x = v7 x () 00:00:10 d #160 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:10 v #52 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:10 d #161 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 d #162 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:10 d #163 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:10 v #164 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # platform\nopen rust.rust_operators\n\n/// ## fsharp\n\n/// ### os_plat...suffix ()\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result: 00:00:11 v #165 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/platform.spi"}} / result: 00:00:11 d #166 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #167 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #168 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #169 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #170 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #171 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #172 Supervisor.buildFile / AsyncSeq.scan / path: platform.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 let rec closure0 () () : bool = let v0 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1 : string = "cfg!(windows)" let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 let _run_target_args'_v0 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v3 : string = "cfg!(windows)" let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 let _run_target_args'_v0 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : string = "cfg!(w...untime.InteropServices.RuntimeInformation.IsOSPlatform let v17 : bool = v16 v15 let _run_target_args'_v0 = v17 #endif #else let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform let v20 : bool = v19 v18 let _run_target_args'_v0 = v20 #endif let v21 : bool = _run_target_args'_v0 if v21 then let v27 : string = ".exe" v27 else let v28 : string = "" v28 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () 00:00:11 d #173 Supervisor.buildFile / takeWhileInclusive / path: platform.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 let rec closure0 () () : bool = let v0 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v1 : string = "cfg!(windows)" let v2 : bool = Fable.Core.RustInterop.emitRustExpr () v1 let _run_target_args'_v0 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v3 : string = "cfg!(windows)" let v4 : bool = Fable.Core.RustInterop.emitRustExpr () v3 let _run_target_args'_v0 = v4 #endif #if FABLE_COMPILER_RUST && CONTRACT let v5 : string = "cfg!(w...untime.InteropServices.RuntimeInformation.IsOSPlatform let v17 : bool = v16 v15 let _run_target_args'_v0 = v17 #endif #else let v18 : System.Runtime.InteropServices.OSPlatform = System.Runtime.InteropServices.OSPlatform.Windows let v19 : (System.Runtime.InteropServices.OSPlatform -> bool) = System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform let v20 : bool = v19 v18 let _run_target_args'_v0 = v20 #endif let v21 : bool = _run_target_args'_v0 if v21 then let v27 : string = ".exe" v27 else let v28 : string = "" v28 let v0 : (unit -> bool) = closure0() let is_windows () = v0 () let v1 : (unit -> string) = closure1() let get_executable_suffix () = v1 () () 00:00:11 d #174 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:11 v #53 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:11 d #175 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #176 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #177 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 v #178 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # file_system\nopen sm\u0027_operators\nopen rust\nopen rust_operators\n...bine x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:11 v #179 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/file_system.spi"}} / result: 00:00:11 d #180 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #181 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:11 d #182 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:11 d #183 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #184 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #185 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #186 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #187 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #188 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #189 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #190 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #191 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #192 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #193 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:12 d #194 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:12 d #195 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #196 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #197 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #198 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #199 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #200 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #201 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #202 Supervisor.buildFile / AsyncSeq.scan / path: networking.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env...> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:13 d #203 Supervisor.buildFile / takeWhileInclusive / path: networking.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER type System_Net_Sockets_TcpClient = System.IDisposable #else type System_Net_Sockets_TcpClient = System.Net.Sockets.TcpClient #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env...> = method41(v0, v1, v2) and closure25 (v0 : int32 option) (v1 : string) : (int32 -> Async<int32>) = closure26(v0, v1) and closure24 () (v0 : int32 option) : (string -> (int32 -> Async<int32>)) = closure25(v0) let v0 : unit = () let v1 : (unit -> unit) = closure0() let v2 : unit = (fun () -> v1 (); v0) () let v16 : (string -> (int32 -> Async<bool>)) = closure3() let test_port_open x = v16 x let v17 : (int32 -> (string -> (int32 -> Async<bool>))) = closure11() let test_port_open_timeout x = v17 x let v18 : (int32 option -> (bool -> (string -> (int32 -> Async<int64>)))) = closure18() let wait_for_port_access x = v18 x let v19 : (int32 option -> (string -> (int32 -> Async<int32>))) = closure24() let get_available_port x = v19 x () 00:00:13 d #204 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:13 v #54 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:13 d #205 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #206 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #207 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 v #208 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # guid\n\n/// ## guid\n\n/// ### guid\nnominal guid_python =\n \u0060...ew_raw_guid x\u0027 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result: 00:00:13 v #209 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/guid.spi"}} / result: 00:00:13 d #210 Supervisor.buildFile / AsyncSeq.scan / path: runtime.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure27() let execute_with_options_async x = v18 x let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure28() let execution_options x = v19 x let v20 : (string -> Result<(string []), string>) = closure29() let split_args x = v20 x () 00:00:13 d #211 Supervisor.buildFile / takeWhileInclusive / path: runtime.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = class end module TraceState = let mutable trace_state = None #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Co... (struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option) -> Async<struct (int32 * string)>) = closure27() let execute_with_options_async x = v18 x let v19 : ((Heap0 -> Heap0) -> struct (string * System.Threading.CancellationToken option * (struct (string * string) []) * (struct (int32 * string * bool) -> Async<unit>) option * (std_sync_Arc<std_sync_Mutex<std_process_ChildStdin>> -> unit) option * bool * string option)) = closure28() let execution_options x = v19 x let v20 : (string -> Result<(string []), string>) = closure29() let split_args x = v20 x () 00:00:13 d #212 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:13 v #55 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:13 d #213 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #214 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #215 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 v #216 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # sm\u0027\nopen rust\nopen rust_operators\nopen sm\u0027_real\n\n/// ##...ng = from_std_string\n","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:13 d #217 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #218 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 v #219 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/lib/spiral/sm\u0027.spi"}} / result: 00:00:13 d #220 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:13 d #221 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:13 d #222 Supervisor.buildFile / AsyncSeq.scan / path: guid.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : System.Guid = null |> unbox<System.Guid> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v11 #endif #if FABLE_COMPILER_PYTHON let v14 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v1...PYTHON let v743 : System.Guid = v726 |> System.Guid let _run_target_args'_v727 = v743 #endif #else let v746 : System.Guid = v726 |> System.Guid let _run_target_args'_v727 = v746 #endif let v749 : System.Guid = _run_target_args'_v727 let _run_target_args'_v12 = v749 #endif let v754 : System.Guid = _run_target_args'_v12 v754 and closure1 () (v0 : string) : System.Guid = method0(v0) and closure3 () () : System.Guid = let v0 : (unit -> System.Guid) = System.Guid.NewGuid v0 () let v0 : (string -> System.Guid) = closure0() let new_guid x = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure3() let new_raw_guid x = v2 x () 00:00:13 d #223 Supervisor.buildFile / takeWhileInclusive / path: guid.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: let rec closure0 () (v0 : string) : System.Guid = let v1 : unit = () #if FABLE_COMPILER || WASM || CONTRACT #if FABLE_COMPILER_RUST && !WASM && !CONTRACT let v2 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v2 #endif #if FABLE_COMPILER_RUST && WASM let v5 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v5 #endif #if FABLE_COMPILER_RUST && CONTRACT let v8 : System.Guid = null |> unbox<System.Guid> let _run_target_args'_v1 = v8 #endif #if FABLE_COMPILER_TYPESCRIPT let v11 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v11 #endif #if FABLE_COMPILER_PYTHON let v14 : System.Guid = v0 |> System.Guid let _run_target_args'_v1 = v1...PYTHON let v743 : System.Guid = v726 |> System.Guid let _run_target_args'_v727 = v743 #endif #else let v746 : System.Guid = v726 |> System.Guid let _run_target_args'_v727 = v746 #endif let v749 : System.Guid = _run_target_args'_v727 let _run_target_args'_v12 = v749 #endif let v754 : System.Guid = _run_target_args'_v12 v754 and closure1 () (v0 : string) : System.Guid = method0(v0) and closure3 () () : System.Guid = let v0 : (unit -> System.Guid) = System.Guid.NewGuid v0 () let v0 : (string -> System.Guid) = closure0() let new_guid x = v0 x let v1 : (string -> System.Guid) = closure1() let hash_guid x = v1 x let v2 : (unit -> System.Guid) = closure3() let new_raw_guid x = v2 x () 00:00:13 d #224 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:14 d #225 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #226 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #227 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #228 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:14 d #229 Supervisor.buildFile / AsyncSeq.scan / path: sm'.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>] #endif type std_borrow_Cow<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>] #endif type regex_Error = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type UH0 = | UH0_0 | UH0_1 of char * UH0 and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string} and Mut...= closure31() let trim x = v13 x let v14 : ((char []) -> (string -> string)) = closure32() let trim_end x = v14 x let v15 : ((char []) -> (string -> string)) = closure36() let trim_start x = v15 x let v16 : (int32 -> (string -> string)) = closure38() let ellipsis x = v16 x let v17 : (int64 -> (string -> string)) = closure40() let ellipsis_end x = v17 x let v18 : (exn -> string) = closure42() let format_exception x = v18 x let v19 : (string -> ((string []) -> string)) = closure43() let concat_array x = v19 x let v20 : (string -> (string seq -> string)) = closure45() let concat x = v20 x let v21 : (string -> ((string []) -> string)) = closure47() let join' x = v21 x let v22 : (string -> (char [])) = closure49() let to_char_array x = v22 x () 00:00:14 d #230 Supervisor.buildFile / takeWhileInclusive / path: sm'.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Regex")>] #endif type regex_Regex = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::borrow::Cow<$0>")>] #endif type std_borrow_Cow<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("regex::Error")>] #endif type regex_Error = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("str")>] type Str = class end #else type Str = string #endif type UH0 = | UH0_0 | UH0_1 of char * UH0 and Mut0 = {mutable l0 : int32; mutable l1 : string; mutable l2 : string} and Mut...= closure31() let trim x = v13 x let v14 : ((char []) -> (string -> string)) = closure32() let trim_end x = v14 x let v15 : ((char []) -> (string -> string)) = closure36() let trim_start x = v15 x let v16 : (int32 -> (string -> string)) = closure38() let ellipsis x = v16 x let v17 : (int64 -> (string -> string)) = closure40() let ellipsis_end x = v17 x let v18 : (exn -> string) = closure42() let format_exception x = v18 x let v19 : (string -> ((string []) -> string)) = closure43() let concat_array x = v19 x let v20 : (string -> (string seq -> string)) = closure45() let concat x = v20 x let v21 : (string -> ((string []) -> string)) = closure47() let join' x = v21 x let v22 : (string -> (char [])) = closure49() let to_char_array x = v22 x () 00:00:14 d #231 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:14 d #232 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:14 d #233 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:15 d #234 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:15 d #235 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:15 d #236 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:15 d #237 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:16 d #238 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:16 d #239 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:16 d #240 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:16 d #241 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:17 d #242 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:17 d #243 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:17 d #244 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:17 d #245 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:18 d #246 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:18 d #247 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:18 d #248 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:18 d #249 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:19 d #250 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:19 d #251 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:19 d #252 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:19 d #253 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:20 d #254 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:20 d #255 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:20 d #256 Supervisor.buildFile / AsyncSeq.scan / path: file_system.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>] type std_path_PathBuf = class end #else type std_path_PathBuf = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>] #endif type std_ffi_OsString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = c...osable)) = closure34() let create_temp_dir () = v27 () let v28 : (string -> struct (string * System.IDisposable)) = closure43() let create_temp_dir' x = v28 x let v29 : (unit -> string) = closure45() let get_source_directory () = v29 () let v30 : (string -> string) = closure46() let normalize_path x = v30 x let v31 : (string -> string) = closure55() let new_file_uri x = v31 x let v32 : (unit -> string) = closure56() let get_workspace_root () = v32 () let v33 : (string -> unit) = closure58() let trace_file x = v33 x let v34 : (bool -> unit) = closure60() let init_trace_file x = v34 x let v35 : (string -> (string -> unit)) = closure61() let link_directory x = v35 x let v36 : (string -> (string -> string)) = closure63() let (</>) x = v36 x () 00:00:20 d #257 Supervisor.buildFile / takeWhileInclusive / path: file_system.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::path::PathBuf")>] type std_path_PathBuf = class end #else type std_path_PathBuf = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::ffi::OsString")>] #endif type std_ffi_OsString = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0")>] #endif type Mut<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("Vec<$0>")>] #endif type Vec<'T> = c...osable)) = closure34() let create_temp_dir () = v27 () let v28 : (string -> struct (string * System.IDisposable)) = closure43() let create_temp_dir' x = v28 x let v29 : (unit -> string) = closure45() let get_source_directory () = v29 () let v30 : (string -> string) = closure46() let normalize_path x = v30 x let v31 : (string -> string) = closure55() let new_file_uri x = v31 x let v32 : (unit -> string) = closure56() let get_workspace_root () = v32 () let v33 : (string -> unit) = closure58() let trace_file x = v33 x let v34 : (bool -> unit) = closure60() let init_trace_file x = v34 x let v35 : (string -> (string -> unit)) = closure61() let link_directory x = v35 x let v36 : (string -> (string -> string)) = closure63() let (</>) x = v36 x () 00:00:20 d #258 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:20 v #56 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) }
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Tasks.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Tasks.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ ## Tasks (Polyglot) 00:00:05 v #13 > > 00:00:05 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > //// test 00:00:05 v #16 > > 00:00:05 v #17 > > open testing 00:00:09 v #18 > > 00:00:09 v #19 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #20 > > │ ## task_name 00:00:09 v #21 > > 00:00:09 v #22 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #23 > > nominal task_name = string 00:00:09 v #24 > > 00:00:09 v #25 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #26 > > │ ## manual_scheduling 00:00:09 v #27 > > 00:00:09 v #28 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #29 > > union manual_scheduling = 00:00:09 v #30 > > | WithSuggestion 00:00:09 v #31 > > | WithoutSuggestion 00:00:09 v #32 > > 00:00:09 v #33 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #34 > > │ ## recurrency_offset 00:00:09 v #35 > > 00:00:09 v #36 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #37 > > union recurrency_offset = 00:00:09 v #38 > > | Days : i32 00:00:09 v #39 > > | Weeks : i32 00:00:09 v #40 > > | Months : i32 00:00:10 v #41 > > 00:00:10 v #42 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #43 > > │ ## day_of_week 00:00:10 v #44 > > 00:00:10 v #45 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #46 > > union day_of_week = 00:00:10 v #47 > > | Sunday 00:00:10 v #48 > > | Monday 00:00:10 v #49 > > | Tuesday 00:00:10 v #50 > > | Wednesday 00:00:10 v #51 > > | Thursday 00:00:10 v #52 > > | Friday 00:00:10 v #53 > > | Saturday 00:00:10 v #54 > > 00:00:10 v #55 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #56 > > │ ## month 00:00:10 v #57 > > 00:00:10 v #58 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #59 > > union month = 00:00:10 v #60 > > | January 00:00:10 v #61 > > | February 00:00:10 v #62 > > | March 00:00:10 v #63 > > | April 00:00:10 v #64 > > | May 00:00:10 v #65 > > | June 00:00:10 v #66 > > | July 00:00:10 v #67 > > | August 00:00:10 v #68 > > | September 00:00:10 v #69 > > | October 00:00:10 v #70 > > | November 00:00:10 v #71 > > | December 00:00:10 v #72 > > 00:00:10 v #73 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #74 > > │ ## day 00:00:10 v #75 > > 00:00:10 v #76 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #77 > > nominal day = i32 00:00:10 v #78 > > 00:00:10 v #79 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #80 > > │ ## year 00:00:10 v #81 > > 00:00:10 v #82 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #83 > > nominal year = i32 00:00:11 v #84 > > 00:00:11 v #85 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #86 > > │ ## fixed_recurrency 00:00:11 v #87 > > 00:00:11 v #88 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #89 > > union fixed_recurrency = 00:00:11 v #90 > > | Weekly : day_of_week 00:00:11 v #91 > > | Monthly : day 00:00:11 v #92 > > | Yearly : day * month 00:00:11 v #93 > > 00:00:11 v #94 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #95 > > │ ## recurrency 00:00:11 v #96 > > 00:00:11 v #97 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #98 > > union recurrency = 00:00:11 v #99 > > | Offset : recurrency_offset 00:00:11 v #100 > > | Fixed : list fixed_recurrency 00:00:11 v #101 > > 00:00:11 v #102 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #103 > > │ ## scheduling 00:00:11 v #104 > > 00:00:11 v #105 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #106 > > union scheduling = 00:00:11 v #107 > > | Manual : manual_scheduling 00:00:11 v #108 > > | Recurrent : recurrency 00:00:11 v #109 > > 00:00:11 v #110 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #111 > > │ ## task 00:00:11 v #112 > > 00:00:11 v #113 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #114 > > type task = 00:00:11 v #115 > > { 00:00:11 v #116 > > name : task_name 00:00:11 v #117 > > scheduling : scheduling 00:00:11 v #118 > > } 00:00:12 v #119 > > 00:00:12 v #120 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #121 > > │ ## date 00:00:12 v #122 > > 00:00:12 v #123 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #124 > > type date = 00:00:12 v #125 > > { 00:00:12 v #126 > > year : year 00:00:12 v #127 > > month : month 00:00:12 v #128 > > day : day 00:00:12 v #129 > > } 00:00:12 v #130 > > 00:00:12 v #131 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #132 > > │ ## status 00:00:12 v #133 > > 00:00:12 v #134 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #135 > > union status = 00:00:12 v #136 > > | Postponed : option () 00:00:12 v #137 > > 00:00:12 v #138 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #139 > > │ ## event 00:00:12 v #140 > > 00:00:12 v #141 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #142 > > type event = 00:00:12 v #143 > > { 00:00:12 v #144 > > date : date 00:00:12 v #145 > > status : status 00:00:12 v #146 > > } 00:00:12 v #147 > > 00:00:12 v #148 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #149 > > │ ## task_template 00:00:12 v #150 > > 00:00:12 v #151 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #152 > > type task_template = 00:00:12 v #153 > > { 00:00:12 v #154 > > task : task 00:00:12 v #155 > > events : list event 00:00:12 v #156 > > } 00:00:13 v #157 > > 00:00:13 v #158 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #159 > > │ ## get_tasks (test) 00:00:13 v #160 > > 00:00:13 v #161 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #162 > > //// test 00:00:13 v #163 > > 00:00:13 v #164 > > inl get_tasks () : list task_template = 00:00:13 v #165 > > [[ 00:00:13 v #166 > > { 00:00:13 v #167 > > task = 00:00:13 v #168 > > { 00:00:13 v #169 > > name = task_name "01" 00:00:13 v #170 > > scheduling = Manual WithSuggestion 00:00:13 v #171 > > } 00:00:13 v #172 > > events = [[]] 00:00:13 v #173 > > } 00:00:13 v #174 > > { 00:00:13 v #175 > > task = 00:00:13 v #176 > > { 00:00:13 v #177 > > name = task_name "02" 00:00:13 v #178 > > scheduling = Manual WithSuggestion 00:00:13 v #179 > > } 00:00:13 v #180 > > events = [[]] 00:00:13 v #181 > > } 00:00:13 v #182 > > { 00:00:13 v #183 > > task = 00:00:13 v #184 > > { 00:00:13 v #185 > > name = task_name "03" 00:00:13 v #186 > > scheduling = Manual WithSuggestion 00:00:13 v #187 > > } 00:00:13 v #188 > > events = [[]] 00:00:13 v #189 > > } 00:00:13 v #190 > > ]] 00:00:13 v #191 > > 00:00:13 v #192 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #193 > > //// test 00:00:13 v #194 > > ///! fsharp 00:00:13 v #195 > > ///! cuda 00:00:13 v #196 > > ///! rust 00:00:13 v #197 > > ///! typescript 00:00:13 v #198 > > ///! python 00:00:13 v #199 > > 00:00:13 v #200 > > get_tasks () 00:00:13 v #201 > > |> sm'.format_debug 00:00:13 v #202 > > |> _assert sm'.contains "01" 00:00:23 v #203 > > 00:00:23 v #204 > > ── [ 10.63s - return value ] ─────────────────────────────────────────────────── 00:00:23 v #205 > > │ .py output (Cuda): 00:00:23 v #206 > > │ __assert / actual: 01 / expected: UH2_1(v0='01', 00:00:23 v #207 > > v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', v1=US1_0(v0=US0_0()), 00:00:23 v #208 > > v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_0()))) 00:00:23 v #209 > > │ 00:00:23 v #210 > > │ .rs output: 00:00:23 v #211 > > │ __assert / actual: "01" / expected: "UH2_1("01", 00:00:23 v #212 > > US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, UH2_1("03", US1_0(US0_0), 00:00:23 v #213 > > UH1_0, UH2_0)))" 00:00:23 v #214 > > │ 00:00:23 v #215 > > │ .ts output: 00:00:23 v #216 > > │ __assert / actual: 01 / expected: UH2_1 (01, US1_0 US0_0, 00:00:23 v #217 > > UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, US1_0 US0_0, UH1_0, UH2_0))) 00:00:23 v #218 > > │ 00:00:23 v #219 > > │ .py output: 00:00:23 v #220 > > │ __assert / actual: 01 / expected: UH2_1 ("01", US1_0 US0_0, 00:00:23 v #221 > > UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, UH1_0, 00:00:23 v #222 > > UH2_0))) 00:00:23 v #223 > > │ 00:00:23 v #224 > > │ 00:00:23 v #225 > > 00:00:23 v #226 > > ── [ 10.64s - stdout ] ───────────────────────────────────────────────────────── 00:00:23 v #227 > > │ .fsx output: 00:00:23 v #228 > > │ __assert / actual: "01" / expected: "UH2_1 00:00:23 v #229 > > │ ("01", US1_0 US0_0, UH1_0, 00:00:23 v #230 > > │ UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", US1_0 US0_0, 00:00:23 v #231 > > UH1_0, UH2_0)))" 00:00:23 v #232 > > │ 00:00:23 v #233 > > 00:00:23 v #234 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:23 v #235 > > //// test 00:00:23 v #236 > > ///! fsharp 00:00:23 v #237 > > ///! cuda 00:00:23 v #238 > > ///! rust 00:00:23 v #239 > > ///! typescript 00:00:23 v #240 > > ///! python 00:00:23 v #241 > > 00:00:23 v #242 > > get_tasks () 00:00:23 v #243 > > |> listm'.try_item 0i32 00:00:23 v #244 > > |> fun (Some task) => task.task.name 00:00:23 v #245 > > |> _assert_eq (task_name "01") 00:00:32 v #246 > > 00:00:32 v #247 > > ── [ 8.34s - return value ] ──────────────────────────────────────────────────── 00:00:32 v #248 > > │ .py output (Cuda): 00:00:32 v #249 > > │ __assert_eq / actual: 01 / expected: 01 00:00:32 v #250 > > │ 00:00:32 v #251 > > │ .rs output: 00:00:32 v #252 > > │ __assert_eq / actual: "01" / expected: "01" 00:00:32 v #253 > > │ 00:00:32 v #254 > > │ .ts output: 00:00:32 v #255 > > │ __assert_eq / actual: 01 / expected: 01 00:00:32 v #256 > > │ 00:00:32 v #257 > > │ .py output: 00:00:32 v #258 > > │ __assert_eq / actual: 01 / expected: 01 00:00:32 v #259 > > │ 00:00:32 v #260 > > │ 00:00:32 v #261 > > 00:00:32 v #262 > > ── [ 8.34s - stdout ] ────────────────────────────────────────────────────────── 00:00:32 v #263 > > │ .fsx output: 00:00:32 v #264 > > │ __assert_eq / actual: "01" / expected: "01" 00:00:32 v #265 > > │ 00:00:32 v #266 > > 00:00:32 v #267 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:32 v #268 > > //// test 00:00:32 v #269 > > ///! fsharp 00:00:32 v #270 > > ////! cuda 00:00:32 v #271 > > ////! typescript 00:00:32 v #272 > > ////! python 00:00:32 v #273 > > ///// print_code 00:00:32 v #274 > > 00:00:32 v #275 > > inl print padding cols = 00:00:32 v #276 > > ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, cols) 00:00:32 v #277 > > ||> listm.fold fun { last_lines max_acc } lines => 00:00:32 v #278 > > inl { count max } = 00:00:32 v #279 > > (lines, { count = 0i32; max = 0i32 }) 00:00:32 v #280 > > ||> listm.foldBack fun line { count max } => { 00:00:32 v #281 > > count = count + 1 00:00:32 v #282 > > max = 00:00:32 v #283 > > inl len = line |> sm'.length 00:00:32 v #284 > > if len > max 00:00:32 v #285 > > then len 00:00:32 v #286 > > else max 00:00:32 v #287 > > } 00:00:32 v #288 > > inl { lines } = 00:00:32 v #289 > > (lines, { lines = [[]]; i = 0i32 }) 00:00:32 v #290 > > ||> listm.foldBack fun line { lines i } => { 00:00:32 v #291 > > lines = 00:00:32 v #292 > > inl last_line = 00:00:32 v #293 > > last_lines 00:00:32 v #294 > > |> listm'.try_item (count - i - 1) 00:00:32 v #295 > > |> optionm'.default_with fun () => 00:00:32 v #296 > > " " |> sm'.replicate max_acc 00:00:32 v #297 > > inl line = 00:00:32 v #298 > > if padding = 0 00:00:32 v #299 > > then line 00:00:32 v #300 > > else 00:00:32 v #301 > > inl padding = " " |> sm'.replicate padding 00:00:32 v #302 > > $'$"{!line}{!padding}"' 00:00:32 v #303 > > inl line = line |> sm'.pad_right (max + padding) ' ' 00:00:32 v #304 > > $'$"{!last_line}{!line}"' :: lines 00:00:32 v #305 > > i = i + 1 00:00:32 v #306 > > } 00:00:32 v #307 > > { 00:00:32 v #308 > > lines 00:00:32 v #309 > > last_lines = lines 00:00:32 v #310 > > max_acc = max_acc + max + padding 00:00:32 v #311 > > } 00:00:32 v #312 > > |> fun x => x.lines 00:00:32 v #313 > > |> listm'.box 00:00:32 v #314 > > |> seq.of_list' 00:00:32 v #315 > > |> sm'.concat "\n" 00:00:32 v #316 > > 00:00:32 v #317 > > inl col () = 00:00:32 v #318 > > [[ "Task" ]] 00:00:32 v #319 > > ++ ( 00:00:32 v #320 > > get_tasks () 00:00:32 v #321 > > |> listm.map fun task => 00:00:32 v #322 > > inl (task_name name) = task.task.name 00:00:32 v #323 > > name 00:00:32 v #324 > > ) 00:00:32 v #325 > > 00:00:32 v #326 > > inl cols () = 00:00:32 v #327 > > [[ 00:00:32 v #328 > > col () 00:00:32 v #329 > > col () 00:00:32 v #330 > > [[ "a"; "b"; "c"; "d"; "e" ]] 00:00:32 v #331 > > ]] 00:00:32 v #332 > > 00:00:32 v #333 > > inl main () = 00:00:32 v #334 > > cols () 00:00:32 v #335 > > |> print 1i32 00:00:32 v #336 > > |> console.write_line 00:00:32 v #337 > > 00:00:32 v #338 > > ── [ 394.29ms - stdout ] ─────────────────────────────────────────────────────── 00:00:32 v #339 > > │ Task Task a 00:00:32 v #340 > > │ 01 01 b 00:00:32 v #341 > > │ 02 02 c 00:00:32 v #342 > > │ 03 03 d 00:00:32 v #343 > > │ e 00:00:32 v #344 > > │ 00:00:32 v #345 > 00:00:31 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 10901 } 00:00:32 v #346 > 00:00:31 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:33 v #347 > 00:00:31 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html 00:00:33 v #348 > 00:00:31 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:33 v #349 > 00:00:31 v #7 ! validate(nb) 00:00:33 v #350 > 00:00:32 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:33 v #351 > 00:00:32 v #9 ! return _pygments_highlight( 00:00:34 v #352 > 00:00:32 v #10 ! [NbConvertApp] Writing 309952 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html 00:00:34 v #353 > 00:00:32 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 902 } 00:00:34 v #354 > 00:00:32 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 902 } 00:00:34 v #355 > 00:00:32 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:34 v #356 > 00:00:32 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:34 v #357 > 00:00:32 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:34 v #358 > 00:00:32 d #16 spiral.run / dib / { exit_code = 0; result_length = 11862 } 00:00:34 d #359 runtime.execute_with_options_async / { exit_code = 0; output_length = 15210 } 00:00:34 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Tasks.dib --retries 3 00:00:34 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib 00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path chat_contract.dib --retries 5"; options = { command = ../../../deps/spiral/workspace/target/release/spiral dib --path chat_contract.dib --retries 5; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "5"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # chat_contract 00:00:05 v #13 > > 00:00:05 v #14 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:05 v #15 > > open rust 00:00:05 v #16 > > open rust.rust_operators 00:00:09 v #17 > > 00:00:09 v #18 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #19 > > //// test 00:00:09 v #20 > > 00:00:09 v #21 > > open testing 00:00:09 v #22 > > 00:00:09 v #23 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #24 > > │ ## chat_contract 00:00:09 v #25 > > 00:00:09 v #26 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:09 v #27 > > │ ### state 00:00:09 v #28 > > 00:00:09 v #29 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #30 > > type state = 00:00:09 v #31 > > { 00:00:09 v #32 > > version : u32 00:00:09 v #33 > > account_set : near.iterable_set near.account_id 00:00:09 v #34 > > alias_set : near.iterable_set sm'.std_string 00:00:09 v #35 > > account_map : near.lookup_map near.account_id sm'.std_string 00:00:09 v #36 > > alias_map : near.lookup_map sm'.std_string (mapm.hash_map 00:00:09 v #37 > > near.account_id (u64 * u32)) 00:00:09 v #38 > > } 00:00:09 v #39 > > 00:00:09 v #40 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:09 v #41 > > //// test 00:00:09 v #42 > > ///! rust -c 00:00:09 v #43 > > 00:00:09 v #44 > > () 00:01:05 v #45 > > 00:01:05 v #46 > > ── [ 56.26s - return value ] ─────────────────────────────────────────────────── 00:01:05 v #47 > > │ Installed near-sandbox into 00:01:05 v #48 > > /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox- 00:01:05 v #49 > > utils-c39df2faf0b47791/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5 00:01:05 v #50 > > a3da37be66271/near-sandbox 00:01:05 v #51 > > │ 00:01:05 v #52 > > │ 00:00:03 i #2 near_workspaces.print_usd / { retry = 1; 00:01:05 v #53 > > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 } 00:01:05 v #54 > > │ 00:00:03 i #3 near_workspaces.print_usd / outcome / { 00:01:05 v #55 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:05 v #56 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:05 v #57 > > │ 00:00:03 i #4 near_workspaces.print_usd / outcome / { 00:01:05 v #58 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 00:01:05 v #59 > > gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 } 00:01:05 v #60 > > │ 00:00:03 w #5 spiral_wasm.run / Error error / { retry = 00:01:05 v #61 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:01:05 v #62 > > │ 00:01:05 v #63 > > │ 00:01:05 v #64 > > │ 00:01:05 v #65 > > │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; 00:01:05 v #66 > > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 } 00:01:05 v #67 > > │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { 00:01:05 v #68 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:05 v #69 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:05 v #70 > > │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { 00:01:05 v #71 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 00:01:05 v #72 > > gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 } 00:01:05 v #73 > > │ 00:00:05 w #11 spiral_wasm.run / Error erro...n / Error 00:01:05 v #74 > > error / { retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; 00:01:05 v #75 > > receipt_failures = [] }" } 00:01:05 v #76 > > │ 00:01:05 v #77 > > │ 00:01:05 v #78 > > │ 00:01:05 v #79 > > │ 00:00:29 i #80 near_workspaces.print_usd / { retry = 00:01:05 v #80 > > 14; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 } 00:01:05 v #81 > > │ 00:00:29 i #81 near_workspaces.print_usd / outcome / { 00:01:05 v #82 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:05 v #83 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:05 v #84 > > │ 00:00:29 i #82 near_workspaces.print_usd / outcome / { 00:01:05 v #85 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 00:01:05 v #86 > > gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 } 00:01:05 v #87 > > │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry 00:01:05 v #88 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:01:05 v #89 > > } 00:01:05 v #90 > > │ 00:01:05 v #91 > > │ 00:01:05 v #92 > > │ 00:01:05 v #93 > > │ 00:00:32 i #86 near_workspaces.print_usd / { retry = 00:01:05 v #94 > > 15; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209293011611 } 00:01:05 v #95 > > │ 00:00:32 i #87 near_workspaces.print_usd / outcome / { 00:01:05 v #96 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:05 v #97 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:05 v #98 > > │ 00:00:32 i #88 near_workspaces.print_usd / outcome / { 00:01:05 v #99 > > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; 00:01:05 v #100 > > gas_burnt = 901211152271; tokens_burnt = 90121115227100000000 } 00:01:05 v #101 > > │ 00:00:32 w #89 spiral_wasm.run / Error error / { retry 00:01:05 v #102 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:01:05 v #103 > > } 00:01:05 v #104 > > │ 00:01:05 v #105 > > │ 00:01:05 v #106 > > │ 00:01:05 v #107 > > 00:01:05 v #108 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:05 v #109 > > //// test 00:01:05 v #110 > > ///! rust -c 00:01:05 v #111 > > 00:01:05 v #112 > > trace Verbose (fun () => "") id 00:01:46 v #113 > > 00:01:46 v #114 > > ── [ 40.99s - return value ] ─────────────────────────────────────────────────── 00:01:46 v #115 > > │ 00:01:46 v #116 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:01:46 v #117 > > total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323852630555 } 00:01:46 v #118 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:01:46 v #119 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:46 v #120 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:46 v #121 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:01:46 v #122 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; 00:01:46 v #123 > > gas_burnt = 1015770771215; tokens_burnt = 101577077121500000000 } 00:01:46 v #124 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:01:46 v #125 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:01:46 v #126 > > │ 00:01:46 v #127 > > │ 00:01:46 v #128 > > │ 00:01:46 v #129 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 00:01:46 v #130 > > total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323852630555 } 00:01:46 v #131 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { 00:01:46 v #132 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:46 v #133 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:46 v #134 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { 00:01:46 v #135 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; 00:01:46 v #136 > > gas_burnt = 1015770771215; tokens_burnt = 101577077121500000000 } 00:01:46 v #137 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 00:01:46 v #138 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } 00:01:46 v #139 > > │ 00:01:46 v #140 > > │ 00:01:46 v #141 > > │ 00:01:46 v #142 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; 00:01:46 v #143 > > total_gas_burnt_usd = +0.000884; total_gas_burnt ...Error error / { retry = 13; 00:01:46 v #144 > > error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = [] }" } 00:01:46 v #145 > > │ 00:01:46 v #146 > > │ 00:01:46 v #147 > > │ 00:01:46 v #148 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 00:01:46 v #149 > > 14; total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323852630555 } 00:01:46 v #150 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { 00:01:46 v #151 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:46 v #152 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:46 v #153 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { 00:01:46 v #154 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; 00:01:46 v #155 > > gas_burnt = 1015770771215; tokens_burnt = 101577077121500000000 } 00:01:46 v #156 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:01:46 v #157 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:01:46 v #158 > > } 00:01:46 v #159 > > │ 00:01:46 v #160 > > │ 00:01:46 v #161 > > │ 00:01:46 v #162 > > │ 00:00:31 i #86 near_workspaces.print_usd / { retry = 00:01:46 v #163 > > 15; total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323852630555 } 00:01:46 v #164 > > │ 00:00:31 i #87 near_workspaces.print_usd / outcome / { 00:01:46 v #165 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:01:46 v #166 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:01:46 v #167 > > │ 00:00:31 i #88 near_workspaces.print_usd / outcome / { 00:01:46 v #168 > > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; 00:01:46 v #169 > > gas_burnt = 1015770771215; tokens_burnt = 101577077121500000000 } 00:01:46 v #170 > > │ 00:00:31 w #89 spiral_wasm.run / Error error / { retry 00:01:46 v #171 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:01:46 v #172 > > } 00:01:46 v #173 > > │ 00:01:46 v #174 > > │ 00:01:46 v #175 > > │ 00:01:46 v #176 > > 00:01:46 v #177 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:01:46 v #178 > > │ ### new 00:01:46 v #179 > > 00:01:46 v #180 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:46 v #181 > > inl new () : state = 00:01:46 v #182 > > { 00:01:46 v #183 > > version = 2 00:01:46 v #184 > > account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set 00:01:46 v #185 > > alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set 00:01:46 v #186 > > account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map 00:01:46 v #187 > > alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map 00:01:46 v #188 > > 00:01:46 v #189 > > } 00:01:47 v #190 > > 00:01:47 v #191 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:01:47 v #192 > > //// test 00:01:47 v #193 > > ///! rust -c 00:01:47 v #194 > > 00:01:47 v #195 > > inl state = new () 00:01:47 v #196 > > trace Verbose (fun () => "chat_contract") fun () => { state = state |> 00:01:47 v #197 > > sm'.format_debug } 00:01:47 v #198 > > trace Verbose (fun () => "") id 00:02:28 v #199 > > 00:02:28 v #200 > > ── [ 41.71s - return value ] ─────────────────────────────────────────────────── 00:02:28 v #201 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet 00:02:28 v #202 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 00:02:28 v #203 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 00:02:28 v #204 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: 00:02:28 v #205 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 00:02:28 v #206 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 00:02:28 v #207 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 00:02:28 v #208 > > 105, 97, 115, 95, 109, 97, 112] }) } 00:02:28 v #209 > > │ 00:02:28 v #210 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:02:28 v #211 > > total_gas_burnt_usd = +0.001326; total_gas_burnt = 1984494567007 } 00:02:28 v #212 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:02:28 v #213 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:02:28 v #214 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:02:28 v #215 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:02:28 v #216 > > is_success = true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120; 00:02:28 v #217 > > gas_burnt = 1676412707667; tokens_burnt = 167641270766700000000 } 00:02:28 v #218 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:02:28 v #219 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:02:28 v #220 > > │ 00:02:28 v #221 > > │ 00:02:28 v #222 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet 00:02:28 v #223 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 00:02:28 v #224 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 00:02:28 v #225 > > 95, 115, 101,...d = +0.001120; gas_burnt = 1676412707667; tokens_burnt = 00:02:28 v #226 > > 167641270766700000000 } 00:02:28 v #227 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:02:28 v #228 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:02:28 v #229 > > } 00:02:28 v #230 > > │ 00:02:28 v #231 > > │ 00:02:28 v #232 > > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet 00:02:28 v #233 > > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 00:02:28 v #234 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 00:02:28 v #235 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: 00:02:28 v #236 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 00:02:28 v #237 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 00:02:28 v #238 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 00:02:28 v #239 > > 105, 97, 115, 95, 109, 97, 112] }) } 00:02:28 v #240 > > │ 00:02:28 v #241 > > │ 00:00:31 i #86 near_workspaces.print_usd / { retry = 00:02:28 v #242 > > 15; total_gas_burnt_usd = +0.001326; total_gas_burnt = 1984494567007 } 00:02:28 v #243 > > │ 00:00:31 i #87 near_workspaces.print_usd / outcome / { 00:02:28 v #244 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:02:28 v #245 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:02:28 v #246 > > │ 00:00:31 i #88 near_workspaces.print_usd / outcome / { 00:02:28 v #247 > > is_success = true; gas_burnt_usd = +0.001120; tokens_burnt_usd = +0.001120; 00:02:28 v #248 > > gas_burnt = 1676412707667; tokens_burnt = 167641270766700000000 } 00:02:28 v #249 > > │ 00:00:31 w #89 spiral_wasm.run / Error error / { retry 00:02:28 v #250 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:02:28 v #251 > > } 00:02:28 v #252 > > │ 00:02:28 v #253 > > │ 00:02:28 v #254 > > │ 00:02:28 v #255 > > 00:02:28 v #256 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:02:28 v #257 > > │ ### is_valid_alias 00:02:28 v #258 > > 00:02:28 v #259 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:28 v #260 > > inl is_valid_alias (alias : sm'.std_string) : bool = 00:02:28 v #261 > > inl alias' = alias |> sm'.from_std_string 00:02:28 v #262 > > inl alias_len = alias' |> sm'.length 00:02:28 v #263 > > 00:02:28 v #264 > > alias_len > 0i32 00:02:28 v #265 > > && alias_len < 64 00:02:28 v #266 > > && (alias' |> sm'.starts_with "-" |> not) 00:02:28 v #267 > > && (alias' |> sm'.ends_with "-" |> not) 00:02:28 v #268 > > && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |> 00:02:28 v #269 > > sm'.char_is_alphanumeric) || c = '-')) 00:02:28 v #270 > > 00:02:28 v #271 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:02:28 v #272 > > //// test 00:02:28 v #273 > > ///! rust -c 00:02:28 v #274 > > 00:02:28 v #275 > > "" 00:02:28 v #276 > > |> sm'.to_std_string 00:02:28 v #277 > > |> is_valid_alias 00:02:28 v #278 > > |> _assert_eq false 00:03:07 v #279 > > 00:03:07 v #280 > > ── [ 38.99s - return value ] ─────────────────────────────────────────────────── 00:03:07 v #281 > > │ 00:03:07 v #282 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:03:07 v #283 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230857875338 } 00:03:07 v #284 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:03:07 v #285 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:07 v #286 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:07 v #287 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:03:07 v #288 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; 00:03:07 v #289 > > gas_burnt = 922776015998; tokens_burnt = 92277601599800000000 } 00:03:07 v #290 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:03:07 v #291 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:03:07 v #292 > > │ 00:03:07 v #293 > > │ 00:03:07 v #294 > > │ 00:03:07 v #295 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 00:03:07 v #296 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230857875338 } 00:03:07 v #297 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { 00:03:07 v #298 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:07 v #299 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:07 v #300 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { 00:03:07 v #301 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; 00:03:07 v #302 > > gas_burnt = 922776015998; tokens_burnt = 92277601599800000000 } 00:03:07 v #303 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 00:03:07 v #304 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } 00:03:07 v #305 > > │ 00:03:07 v #306 > > │ 00:03:07 v #307 > > │ 00:03:07 v #308 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; 00:03:07 v #309 > > total_gas_burnt_usd = +0.000822; total_gas_burnt = 12...n / Error error / { 00:03:07 v #310 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 00:03:07 v #311 > > [] }" } 00:03:07 v #312 > > │ 00:03:07 v #313 > > │ 00:03:07 v #314 > > │ 00:03:07 v #315 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 00:03:07 v #316 > > 14; total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230857875338 } 00:03:07 v #317 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { 00:03:07 v #318 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:07 v #319 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:07 v #320 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { 00:03:07 v #321 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; 00:03:07 v #322 > > gas_burnt = 922776015998; tokens_burnt = 92277601599800000000 } 00:03:07 v #323 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:03:07 v #324 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:03:07 v #325 > > } 00:03:07 v #326 > > │ 00:03:07 v #327 > > │ 00:03:07 v #328 > > │ 00:03:07 v #329 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:03:07 v #330 > > 15; total_gas_burnt_usd = +0.000822; total_gas_burnt = 1230857875338 } 00:03:07 v #331 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:03:07 v #332 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:07 v #333 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:07 v #334 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:03:07 v #335 > > is_success = true; gas_burnt_usd = +0.000616; tokens_burnt_usd = +0.000616; 00:03:07 v #336 > > gas_burnt = 922776015998; tokens_burnt = 92277601599800000000 } 00:03:07 v #337 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:03:07 v #338 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:03:07 v #339 > > } 00:03:07 v #340 > > │ 00:03:07 v #341 > > │ 00:03:07 v #342 > > │ 00:03:07 v #343 > > 00:03:07 v #344 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:07 v #345 > > //// test 00:03:07 v #346 > > ///! rust -c 00:03:07 v #347 > > 00:03:07 v #348 > > "a-" 00:03:07 v #349 > > |> sm'.to_std_string 00:03:07 v #350 > > |> is_valid_alias 00:03:07 v #351 > > |> _assert_eq false 00:03:46 v #352 > > 00:03:46 v #353 > > ── [ 38.92s - return value ] ─────────────────────────────────────────────────── 00:03:46 v #354 > > │ 00:03:46 v #355 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:03:46 v #356 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232824192761 } 00:03:46 v #357 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:03:46 v #358 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:46 v #359 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:46 v #360 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:03:46 v #361 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; 00:03:46 v #362 > > gas_burnt = 924742333421; tokens_burnt = 92474233342100000000 } 00:03:46 v #363 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:03:46 v #364 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:03:46 v #365 > > │ 00:03:46 v #366 > > │ 00:03:46 v #367 > > │ 00:03:46 v #368 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 00:03:46 v #369 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232824192761 } 00:03:46 v #370 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { 00:03:46 v #371 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:46 v #372 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:46 v #373 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { 00:03:46 v #374 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; 00:03:46 v #375 > > gas_burnt = 924742333421; tokens_burnt = 92474233342100000000 } 00:03:46 v #376 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 00:03:46 v #377 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } 00:03:46 v #378 > > │ 00:03:46 v #379 > > │ 00:03:46 v #380 > > │ 00:03:46 v #381 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; 00:03:46 v #382 > > total_gas_burnt_usd = +0.000824; total_gas_burnt = 12...n / Error error / { 00:03:46 v #383 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 00:03:46 v #384 > > [] }" } 00:03:46 v #385 > > │ 00:03:46 v #386 > > │ 00:03:46 v #387 > > │ 00:03:46 v #388 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 00:03:46 v #389 > > 14; total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232824192761 } 00:03:46 v #390 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { 00:03:46 v #391 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:46 v #392 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:46 v #393 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { 00:03:46 v #394 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; 00:03:46 v #395 > > gas_burnt = 924742333421; tokens_burnt = 92474233342100000000 } 00:03:46 v #396 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:03:46 v #397 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:03:46 v #398 > > } 00:03:46 v #399 > > │ 00:03:46 v #400 > > │ 00:03:46 v #401 > > │ 00:03:46 v #402 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:03:46 v #403 > > 15; total_gas_burnt_usd = +0.000824; total_gas_burnt = 1232824192761 } 00:03:46 v #404 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:03:46 v #405 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:03:46 v #406 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:03:46 v #407 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:03:46 v #408 > > is_success = true; gas_burnt_usd = +0.000618; tokens_burnt_usd = +0.000618; 00:03:46 v #409 > > gas_burnt = 924742333421; tokens_burnt = 92474233342100000000 } 00:03:46 v #410 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:03:46 v #411 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:03:46 v #412 > > } 00:03:46 v #413 > > │ 00:03:46 v #414 > > │ 00:03:46 v #415 > > │ 00:03:46 v #416 > > 00:03:46 v #417 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:03:46 v #418 > > //// test 00:03:46 v #419 > > ///! rust -c 00:03:46 v #420 > > 00:03:46 v #421 > > "a-a" 00:03:46 v #422 > > |> sm'.to_std_string 00:03:46 v #423 > > |> is_valid_alias 00:03:46 v #424 > > |> _assert_eq true 00:04:26 v #425 > > 00:04:26 v #426 > > ── [ 39.44s - return value ] ─────────────────────────────────────────────────── 00:04:26 v #427 > > │ 00:04:26 v #428 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:04:26 v #429 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234417952560 } 00:04:26 v #430 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:04:26 v #431 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:04:26 v #432 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:04:26 v #433 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:04:26 v #434 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; 00:04:26 v #435 > > gas_burnt = 926336093220; tokens_burnt = 92633609322000000000 } 00:04:26 v #436 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:04:26 v #437 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:04:26 v #438 > > │ 00:04:26 v #439 > > │ 00:04:26 v #440 > > │ 00:04:26 v #441 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 00:04:26 v #442 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234417952560 } 00:04:26 v #443 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { 00:04:26 v #444 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:04:26 v #445 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:04:26 v #446 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { 00:04:26 v #447 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; 00:04:26 v #448 > > gas_burnt = 926336093220; tokens_burnt = 92633609322000000000 } 00:04:26 v #449 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 00:04:26 v #450 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } 00:04:26 v #451 > > │ 00:04:26 v #452 > > │ 00:04:26 v #453 > > │ 00:04:26 v #454 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; 00:04:26 v #455 > > total_gas_burnt_usd = +0.000825; total_gas_burnt = 12...n / Error error / { 00:04:26 v #456 > > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = 00:04:26 v #457 > > [] }" } 00:04:26 v #458 > > │ 00:04:26 v #459 > > │ 00:04:26 v #460 > > │ 00:04:26 v #461 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 00:04:26 v #462 > > 14; total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234417952560 } 00:04:26 v #463 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { 00:04:26 v #464 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:04:26 v #465 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:04:26 v #466 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { 00:04:26 v #467 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; 00:04:26 v #468 > > gas_burnt = 926336093220; tokens_burnt = 92633609322000000000 } 00:04:26 v #469 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:04:26 v #470 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:04:26 v #471 > > } 00:04:26 v #472 > > │ 00:04:26 v #473 > > │ 00:04:26 v #474 > > │ 00:04:26 v #475 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:04:26 v #476 > > 15; total_gas_burnt_usd = +0.000825; total_gas_burnt = 1234417952560 } 00:04:26 v #477 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:04:26 v #478 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:04:26 v #479 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:04:26 v #480 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:04:26 v #481 > > is_success = true; gas_burnt_usd = +0.000619; tokens_burnt_usd = +0.000619; 00:04:26 v #482 > > gas_burnt = 926336093220; tokens_burnt = 92633609322000000000 } 00:04:26 v #483 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:04:26 v #484 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:04:26 v #485 > > } 00:04:26 v #486 > > │ 00:04:26 v #487 > > │ 00:04:26 v #488 > > │ 00:04:26 v #489 > > 00:04:26 v #490 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:04:26 v #491 > > │ ### generate_cid 00:04:26 v #492 > > 00:04:26 v #493 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #494 > > inl generate_cid (content : am'.vec u8) : sm'.std_string = 00:04:26 v #495 > > !\($'" fn encode_u64(value: u64) -> Vec<u8> { //"') : () 00:04:26 v #496 > > !\($'" let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : () 00:04:26 v #497 > > !\($'" unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') : 00:04:26 v #498 > > () 00:04:26 v #499 > > !\($'" } //"') : () 00:04:26 v #500 > > 00:04:26 v #501 > > !\($'" fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : () 00:04:26 v #502 > > !\($'" let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : () 00:04:26 v #503 > > !\($'" sha2::Digest::update(&mut hasher, content); //"') : () 00:04:26 v #504 > > !\($'" sha2::Digest::finalize(hasher).to_vec() //"') : () 00:04:26 v #505 > > !\($'" } //"') : () 00:04:26 v #506 > > 00:04:26 v #507 > > !\($'" let version: u8 = 1; //"') : () 00:04:26 v #508 > > !\($'" let codec_raw: u64 = 0x55; //"') : () 00:04:26 v #509 > > 00:04:26 v #510 > > !\($'" let codec_bytes = encode_u64(codec_raw); //"') : () 00:04:26 v #511 > > !\($'" let hash_result = sha256_hash(&!content); //"') : () 00:04:26 v #512 > > !\($'" let multihash = std::iter::once(0x12) //"') : () 00:04:26 v #513 > > !\($'" .chain(std::iter::once(32)) //"') : () 00:04:26 v #514 > > !\($'" .chain(hash_result.into_iter()) //"') : () 00:04:26 v #515 > > !\($'" .collect(); //"') : () 00:04:26 v #516 > > !\($'" let cid_bytes = [[vec\![[version]], codec_bytes, 00:04:26 v #517 > > multihash]].concat(); //"') : () 00:04:26 v #518 > > !\($'" let result = multibase::encode(multibase::Base::Base32Lower, 00:04:26 v #519 > > &cid_bytes); //"') : () 00:04:26 v #520 > > !\($'"result"') 00:04:26 v #521 > > 00:04:26 v #522 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:04:26 v #523 > > //// test 00:04:26 v #524 > > ///! rust -c -d multibase sha2 unsigned-varint 00:04:26 v #525 > > 00:04:26 v #526 > > ;[[]] 00:04:26 v #527 > > |> am'.to_vec 00:04:26 v #528 > > |> generate_cid 00:04:26 v #529 > > |> sm'.from_std_string 00:04:26 v #530 > > |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku" 00:05:07 v #531 > > 00:05:07 v #532 > > ── [ 41.07s - return value ] ─────────────────────────────────────────────────── 00:05:07 v #533 > > │ 00:05:07 v #534 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:05:07 v #535 > > total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311657622898 } 00:05:07 v #536 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:05:07 v #537 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:07 v #538 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:07 v #539 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:05:07 v #540 > > is_success = true; gas_burnt_usd = +0.000670; tokens_burnt_usd = +0.000670; 00:05:07 v #541 > > gas_burnt = 1003575763558; tokens_burnt = 100357576355800000000 } 00:05:07 v #542 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:05:07 v #543 > > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } 00:05:07 v #544 > > │ 00:05:07 v #545 > > │ 00:05:07 v #546 > > │ 00:05:07 v #547 > > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; 00:05:07 v #548 > > total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311657622898 } 00:05:07 v #549 > > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { 00:05:07 v #550 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:07 v #551 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:07 v #552 > > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { 00:05:07 v #553 > > is_success = true; gas_burnt_usd = +0.000670; tokens_burnt_usd = +0.000670; 00:05:07 v #554 > > gas_burnt = 1003575763558; tokens_burnt = 100357576355800000000 } 00:05:07 v #555 > > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry 00:05:07 v #556 > > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } 00:05:07 v #557 > > │ 00:05:07 v #558 > > │ 00:05:07 v #559 > > │ 00:05:07 v #560 > > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; 00:05:07 v #561 > > total_gas_burnt_usd = +0.000876; total_gas_burnt ...Error error / { retry = 13; 00:05:07 v #562 > > error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = [] }" } 00:05:07 v #563 > > │ 00:05:07 v #564 > > │ 00:05:07 v #565 > > │ 00:05:07 v #566 > > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = 00:05:07 v #567 > > 14; total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311657622898 } 00:05:07 v #568 > > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { 00:05:07 v #569 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:07 v #570 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:07 v #571 > > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { 00:05:07 v #572 > > is_success = true; gas_burnt_usd = +0.000670; tokens_burnt_usd = +0.000670; 00:05:07 v #573 > > gas_burnt = 1003575763558; tokens_burnt = 100357576355800000000 } 00:05:07 v #574 > > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry 00:05:07 v #575 > > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" 00:05:07 v #576 > > } 00:05:07 v #577 > > │ 00:05:07 v #578 > > │ 00:05:07 v #579 > > │ 00:05:07 v #580 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:05:07 v #581 > > 15; total_gas_burnt_usd = +0.000876; total_gas_burnt = 1311657622898 } 00:05:07 v #582 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:05:07 v #583 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:07 v #584 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:07 v #585 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:05:07 v #586 > > is_success = true; gas_burnt_usd = +0.000670; tokens_burnt_usd = +0.000670; 00:05:07 v #587 > > gas_burnt = 1003575763558; tokens_burnt = 100357576355800000000 } 00:05:07 v #588 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:05:07 v #589 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:05:07 v #590 > > } 00:05:07 v #591 > > │ 00:05:07 v #592 > > │ 00:05:07 v #593 > > │ 00:05:07 v #594 > > 00:05:07 v #595 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:05:07 v #596 > > │ ### claim_alias 00:05:07 v #597 > > 00:05:07 v #598 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #599 > > inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) : 00:05:07 v #600 > > () = 00:05:07 v #601 > > inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) = 00:05:07 v #602 > > !\($'$"&mut !state.1"') 00:05:07 v #603 > > 00:05:07 v #604 > > inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) = 00:05:07 v #605 > > !\($'$"&mut !state.2"') 00:05:07 v #606 > > 00:05:07 v #607 > > inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id 00:05:07 v #608 > > sm'.std_string)) = 00:05:07 v #609 > > !\($'$"&mut !state.3"') 00:05:07 v #610 > > 00:05:07 v #611 > > inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string 00:05:07 v #612 > > (mapm.hash_map near.account_id (u64 * u32)))) = 00:05:07 v #613 > > !\($'$"&mut !state.4"') 00:05:07 v #614 > > 00:05:07 v #615 > > inl signer_account_id = near.signer_account_id () 00:05:07 v #616 > > inl predecessor_account_id = near.predecessor_account_id () 00:05:07 v #617 > > inl block_timestamp = near.block_timestamp () 00:05:07 v #618 > > 00:05:07 v #619 > > trace Debug 00:05:07 v #620 > > fun () => "chat_contract.claim_alias" 00:05:07 v #621 > > fun () => { 00:05:07 v #622 > > alias 00:05:07 v #623 > > block_timestamp 00:05:07 v #624 > > signer_account_id = signer_account_id |> sm'.to_string' 00:05:07 v #625 > > predecessor_account_id = predecessor_account_id |> sm'.to_string' 00:05:07 v #626 > > } 00:05:07 v #627 > > 00:05:07 v #628 > > if alias |> is_valid_alias |> not 00:05:07 v #629 > > then near.panic_str "chat_contract.claim_alias / invalid alias" . true 00:05:07 v #630 > > else false 00:05:07 v #631 > > |> ignore 00:05:07 v #632 > > 00:05:07 v #633 > > inl account_alias = 00:05:07 v #634 > > account_map 00:05:07 v #635 > > |> near.lookup_get signer_account_id 00:05:07 v #636 > > |> optionm'.cloned 00:05:07 v #637 > > 00:05:07 v #638 > > match account_alias |> optionm'.unbox with 00:05:07 v #639 > > | Some account_alias when account_alias =. alias => 00:05:07 v #640 > > trace Warning 00:05:07 v #641 > > fun () => "chat_contract.claim_alias / alias already claimed" 00:05:07 v #642 > > fun () => { account_alias = account_alias |> sm'.format_debug } 00:05:07 v #643 > > | account_alias' => 00:05:07 v #644 > > trace Debug 00:05:07 v #645 > > fun () => "chat_contract.claim_alias" 00:05:07 v #646 > > fun () => { account_alias = account_alias |> sm'.format_debug } 00:05:07 v #647 > > 00:05:07 v #648 > > match account_alias' with 00:05:07 v #649 > > | Some account_alias => 00:05:07 v #650 > > !\($'" !alias_map //"') : () 00:05:07 v #651 > > !\($'" .get_mut(&!account_alias) //"') : () 00:05:07 v #652 > > !\($'" .unwrap() //"') : () 00:05:07 v #653 > > !\\(signer_account_id, $'" .remove(&$0); //"') : () 00:05:07 v #654 > > | None => () 00:05:07 v #655 > > 00:05:07 v #656 > > !\\((signer_account_id, alias), $'" !account_map.insert($0.clone(), 00:05:07 v #657 > > $1.clone()); //"') : () 00:05:07 v #658 > > 00:05:07 v #659 > > account_set |> near.iterable_set_insert signer_account_id |> ignore 00:05:07 v #660 > > alias_set |> near.iterable_set_insert alias |> ignore 00:05:07 v #661 > > 00:05:07 v #662 > > !\\(alias, $'" let new_alias_account_map = match !alias_map.get(&$0) { 00:05:07 v #663 > > //"') : () 00:05:07 v #664 > > !\($'" None => { //"') : () 00:05:07 v #665 > > !\($'" let mut new_map = std::collections::HashMap::new(); //"') : 00:05:07 v #666 > > () 00:05:07 v #667 > > !\\((signer_account_id, block_timestamp), $'" new_map.insert($0, 00:05:07 v #668 > > ($1, 0u32)); //"') : () 00:05:07 v #669 > > !\($'" new_map //"') : () 00:05:07 v #670 > > !\($'" } //"') : () 00:05:07 v #671 > > !\($'" Some(accounts) => { //"') : () 00:05:07 v #672 > > !\($'" let mut accounts_vec = accounts.iter().collect::<Vec<_>>(); 00:05:07 v #673 > > //"') : () 00:05:07 v #674 > > !\($'" accounts_vec.sort_unstable_by_key(|(_, (_, index))| index); 00:05:07 v #675 > > //"') : () 00:05:07 v #676 > > !\($'" let mut new_map = accounts_vec //"') : () 00:05:07 v #677 > > !\($'" .iter() //"') : () 00:05:07 v #678 > > !\($'" .enumerate() //"') : () 00:05:07 v #679 > > !\($'" .map(|(i, (signer_account_id, (timestamp, _)))| { //"') : 00:05:07 v #680 > > () 00:05:07 v #681 > > !\($'" ((*signer_account_id).clone(), (*timestamp, i as u32)) 00:05:07 v #682 > > //"') : () 00:05:07 v #683 > > !\($'" }) //"') : () 00:05:07 v #684 > > !\($'" .collect::<std::collections::HashMap<_, _>>(); //"') : () 00:05:07 v #685 > > !\\(signer_account_id, $'" new_map.insert($0, (!block_timestamp, 00:05:07 v #686 > > accounts_vec.len() as u32)); //"') : () 00:05:07 v #687 > > !\($'" new_map //"') : () 00:05:07 v #688 > > !\($'" } //"') : () 00:05:07 v #689 > > !\($'" }; //"') : () 00:05:07 v #690 > > 00:05:07 v #691 > > !\\(alias, $'" !alias_map.insert($0, new_alias_account_map); //"') : () 00:05:07 v #692 > > 00:05:07 v #693 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:07 v #694 > > //// test 00:05:07 v #695 > > ///! rust -c 00:05:07 v #696 > > 00:05:07 v #697 > > inl state = new () 00:05:07 v #698 > > inl version = state.version 00:05:07 v #699 > > inl account_set = state.account_set 00:05:07 v #700 > > inl alias_set = state.alias_set 00:05:07 v #701 > > inl account_map = state.account_map 00:05:07 v #702 > > inl alias_map = state.alias_map 00:05:07 v #703 > > inl version = join version 00:05:07 v #704 > > inl account_set = join account_set 00:05:07 v #705 > > inl alias_set = join alias_set 00:05:07 v #706 > > inl account_map = join account_map 00:05:07 v #707 > > inl alias_map = join alias_map 00:05:07 v #708 > > inl state : rust.ref (rust.mut' state) = 00:05:07 v #709 > > !\\( 00:05:07 v #710 > > version, 00:05:07 v #711 > > $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"' 00:05:07 v #712 > > ) 00:05:07 v #713 > > 00:05:07 v #714 > > "alias1" 00:05:07 v #715 > > |> sm'.to_std_string 00:05:07 v #716 > > |> claim_alias state 00:05:07 v #717 > > 00:05:07 v #718 > > trace Verbose 00:05:07 v #719 > > fun () => "chat_contract" 00:05:07 v #720 > > fun () => { state = state |> sm'.format_debug } 00:05:07 v #721 > > 00:05:07 v #722 > > trace Debug (fun () => "") id 00:05:49 v #723 > > 00:05:49 v #724 > > ── [ 42.27s - return value ] ─────────────────────────────────────────────────── 00:05:49 v #725 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 00:05:49 v #726 > > "alias1"; block_timestamp = 1736397681168934897; signer_account_id = 00:05:49 v #727 > > "dev-20250109044120-43084859298160"; predecessor_account_id = 00:05:49 v #728 > > "dev-20250109044120-43084859298160" } 00:05:49 v #729 > > │ 00:00:00 d #2 chat_contract.claim_alias / { 00:05:49 v #730 > > account_alias = None } 00:05:49 v #731 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet 00:05:49 v #732 > > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 00:05:49 v #733 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 00:05:49 v #734 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: 00:05:49 v #735 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 00:05:49 v #736 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 00:05:49 v #737 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 00:05:49 v #738 > > 105, 97, 115, 95, 109, 97, 112] }) } 00:05:49 v #739 > > │ 00:05:49 v #740 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:05:49 v #741 > > total_gas_burnt_usd = +0.002517; total_gas_burnt = 3768451135869 } 00:05:49 v #742 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:05:49 v #743 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:49 v #744 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:49 v #745 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:05:49 v #746 > > is_success = true; gas_burnt_usd = +0.002312; tokens_burnt_usd = +0.002312; 00:05:49 v #747 > > gas_burnt = 3460369276529; tokens_burnt = 346036927652900000000 } 00:05:49 v #748 > > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = 00:05:49 v #749 > > 1; error...timestamp = 1736397709653555555; signer_account_id = 00:05:49 v #750 > > "dev-20250109044148-21603430317893"; predecessor_account_id = 00:05:49 v #751 > > "dev-20250109044148-21603430317893" } 00:05:49 v #752 > > │ 00:00:00 d #2 chat_contract.claim_alias / { 00:05:49 v #753 > > account_alias = None } 00:05:49 v #754 > > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet 00:05:49 v #755 > > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, 00:05:49 v #756 > > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 00:05:49 v #757 > > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: 00:05:49 v #758 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: 00:05:49 v #759 > > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, 00:05:49 v #760 > > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, 00:05:49 v #761 > > 105, 97, 115, 95, 109, 97, 112] }) } 00:05:49 v #762 > > │ 00:05:49 v #763 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:05:49 v #764 > > 15; total_gas_burnt_usd = +0.002517; total_gas_burnt = 3768451135869 } 00:05:49 v #765 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:05:49 v #766 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:05:49 v #767 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:05:49 v #768 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:05:49 v #769 > > is_success = true; gas_burnt_usd = +0.002312; tokens_burnt_usd = +0.002312; 00:05:49 v #770 > > gas_burnt = 3460369276529; tokens_burnt = 346036927652900000000 } 00:05:49 v #771 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:05:49 v #772 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:05:49 v #773 > > } 00:05:49 v #774 > > │ 00:05:49 v #775 > > │ 00:05:49 v #776 > > │ 00:05:49 v #777 > > 00:05:49 v #778 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:05:49 v #779 > > //// test 00:05:49 v #780 > > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\" 00:05:49 v #781 > > 00:05:49 v #782 > > "" 00:05:49 v #783 > > |> sm'.to_std_string 00:05:49 v #784 > > |> claim_alias ( 00:05:49 v #785 > > inl state = new () 00:05:49 v #786 > > inl version = state.version 00:05:49 v #787 > > inl account_set = state.account_set 00:05:49 v #788 > > inl alias_set = state.alias_set 00:05:49 v #789 > > inl account_map = state.account_map 00:05:49 v #790 > > inl alias_map = state.alias_map 00:05:49 v #791 > > !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map, 00:05:49 v #792 > > !alias_map)"') 00:05:49 v #793 > > ) 00:05:49 v #794 > > trace Debug (fun () => "") id 00:06:03 v #795 > > 00:06:03 v #796 > > ── [ 13.64s - return value ] ─────────────────────────────────────────────────── 00:06:03 v #797 > > │ 00:06:03 v #798 > > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; 00:06:03 v #799 > > total_gas_burnt_usd = +0.001143; total_gas_burnt = 1711745083551 } 00:06:03 v #800 > > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { 00:06:03 v #801 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:06:03 v #802 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:06:03 v #803 > > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { 00:06:03 v #804 > > is_success = false; gas_burnt_usd = +0.000938; tokens_burnt_usd = +0.000938; 00:06:03 v #805 > > gas_burnt = 1403663224211; tokens_burnt = 140366322421100000000 } 00:06:03 v #806 > > │ 00:00:02 c #5 spiral_wasm.run / Ok (Some error) / { 00:06:03 v #807 > > retry = 1; error = { receipt_outcomes_len = 1; retry = 1; receipt_failures = [ 00:06:03 v #808 > > │ ExecutionOutcome { 00:06:03 v #809 > > │ transaction_hash: 00:06:03 v #810 > > FFDp93SZeNcme15LAzS6sRC1qXcGQZA1xyhnu2CJmDf6, 00:06:03 v #811 > > │ block_hash: 00:06:03 v #812 > > 4u6qR3XUQQ5fJV54bGJw7ozf1cMA2YPe5GrfZsA3DLsF, 00:06:03 v #813 > > │ logs: [], 00:06:03 v #814 > > │ receipt_ids: [ 00:06:03 v #815 > > │ ExZVeP5XG1TEaguRZM1GKTfYa3fdr2HX8oM5QfoWE1C4, 00:06:03 v #816 > > │ ], 00:06:03 v #817 > > │ gas_burnt: NearGas { 00:06:03 v #818 > > │ inner: 1403663224211, 00:06:03 v #819 > > │ }, 00:06:03 v #820 > > │ tokens_burnt: NearToken { 00:06:03 v #821 > > │ inner: 140366322421100000000, 00:06:03 v #822 > > │ }, 00:06:03 v #823 > > │ executor_id: AccountId( 00:06:03 v #824 > > │ "dev-20250109044202-11591148214259", 00:06:03 v #825 > > │ ), 00:06:03 v #826 > > │ status: Failure(ActionError(ActionError { index: 00:06:03 v #827 > > Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: 00:06:03 v #828 > > chat_contract.claim_alias / invalid alias")) })), 00:06:03 v #829 > > │ }, 00:06:03 v #830 > > │ ] } } 00:06:03 v #831 > > │ 00:06:03 v #832 > > 00:06:03 v #833 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:03 v #834 > > //// test 00:06:03 v #835 > > ///! rust -cd borsh 00:06:03 v #836 > > 00:06:03 v #837 > > inl state' = new () 00:06:03 v #838 > > inl state = state' 00:06:03 v #839 > > inl version = state.version 00:06:03 v #840 > > inl account_set = state.account_set 00:06:03 v #841 > > inl alias_set = state.alias_set 00:06:03 v #842 > > inl account_map = state.account_map 00:06:03 v #843 > > inl alias_map = state.alias_map 00:06:03 v #844 > > inl version = join version 00:06:03 v #845 > > inl account_set = join account_set 00:06:03 v #846 > > inl alias_set = join alias_set 00:06:03 v #847 > > inl account_map = join account_map 00:06:03 v #848 > > inl alias_map = join alias_map 00:06:03 v #849 > > 00:06:03 v #850 > > inl state = 00:06:03 v #851 > > !\\( 00:06:03 v #852 > > (version, account_set, alias_set), 00:06:03 v #853 > > $'$"&mut ($0, $1, $2, !account_map, !alias_map)"' 00:06:03 v #854 > > ) 00:06:03 v #855 > > 00:06:03 v #856 > > "alias1" 00:06:03 v #857 > > |> sm'.to_std_string 00:06:03 v #858 > > |> claim_alias state 00:06:03 v #859 > > 00:06:03 v #860 > > "alias1" 00:06:03 v #861 > > |> sm'.to_std_string 00:06:03 v #862 > > |> claim_alias state 00:06:03 v #863 > > 00:06:03 v #864 > > "alias1" 00:06:03 v #865 > > |> sm'.to_std_string 00:06:03 v #866 > > |> claim_alias state 00:06:03 v #867 > > 00:06:03 v #868 > > inl account_set' : rust.ref (near.iterable_set near.account_id) = 00:06:03 v #869 > > !\($'$"&!state.1"') 00:06:03 v #870 > > 00:06:03 v #871 > > inl alias_set' : rust.ref (near.iterable_set sm'.std_string) = 00:06:03 v #872 > > !\($'$"&!state.2"') 00:06:03 v #873 > > 00:06:03 v #874 > > inl account_set' = 00:06:03 v #875 > > account_set' 00:06:03 v #876 > > |> iter.iter_ref'' 00:06:03 v #877 > > |> iter.cloned 00:06:03 v #878 > > |> iter_collect 00:06:03 v #879 > > 00:06:03 v #880 > > inl alias_set' = 00:06:03 v #881 > > alias_set' 00:06:03 v #882 > > |> iter.iter_ref'' 00:06:03 v #883 > > |> iter.cloned 00:06:03 v #884 > > |> iter_collect 00:06:03 v #885 > > |> am'.vec_map sm'.from_std_string 00:06:03 v #886 > > 00:06:03 v #887 > > trace Verbose 00:06:03 v #888 > > fun () => "chat_contract" 00:06:03 v #889 > > fun () => { 00:06:03 v #890 > > account_set' = account_set' |> sm'.format_debug 00:06:03 v #891 > > alias_set' = alias_set' |> sm'.format_debug 00:06:03 v #892 > > state = state |> sm'.format_debug 00:06:03 v #893 > > } 00:06:03 v #894 > > 00:06:03 v #895 > > trace Debug (fun () => "") id 00:06:03 v #896 > > 00:06:03 v #897 > > account_set' 00:06:03 v #898 > > |> am'.vec_len 00:06:03 v #899 > > |> convert 00:06:03 v #900 > > |> _assert_eq 1u32 00:06:03 v #901 > > 00:06:03 v #902 > > alias_set' 00:06:03 v #903 > > |> am'.from_vec_base 00:06:03 v #904 > > |> _assert_eq' ;[[ "alias1" ]] 00:06:46 v #905 > > 00:06:46 v #906 > > ── [ 42.88s - return value ] ─────────────────────────────────────────────────── 00:06:46 v #907 > > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = 00:06:46 v #908 > > "alias1"; block_timestamp = 1736397737731045266; signer_account_id = 00:06:46 v #909 > > "dev-20250109044216-92502346014014"; predecessor_account_id = 00:06:46 v #910 > > "dev-20250109044216-92502346014014" } 00:06:46 v #911 > > │ 00:00:00 d #2 chat_contract.claim_alias / { 00:06:46 v #912 > > account_alias = None } 00:06:46 v #913 > > │ 00:00:00 d #3 chat_contract.claim_alias / { alias = 00:06:46 v #914 > > "alias1"; block_timestamp = 1736397737731045266; signer_account_id = 00:06:46 v #915 > > "dev-20250109044216-92502346014014"; predecessor_account_id = 00:06:46 v #916 > > "dev-20250109044216-92502346014014" } 00:06:46 v #917 > > │ 00:00:00 d #4 chat_contract.claim_alias / { 00:06:46 v #918 > > account_alias = Some("alias1") } 00:06:46 v #919 > > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = 00:06:46 v #920 > > "alias1"; block_timestamp = 1736397737731045266; signer_account_id = 00:06:46 v #921 > > "dev-20250109044216-92502346014014"; predecessor_account_id = 00:06:46 v #922 > > "dev-20250109044216-92502346014014" } 00:06:46 v #923 > > │ 00:00:00 d #6 chat_contract.claim_alias / { 00:06:46 v #924 > > account_alias = Some("alias1") } 00:06:46 v #925 > > │ 00:00:00 v #7 chat_contract / { account_set' = 00:06:46 v #926 > > [AccountId("dev-20250109044216-92502346014014")]; alias_set' = ["alias1"]; state 00:06:46 v #927 > > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 00:06:46 v #928 > > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 00:06:46 v #929 > > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector 00:06:46 v #930 > > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 00:06:46 v #931 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 00:06:46 v #932 > > LookupMap { prefix: [97, 99, 99, ...r_account_id = 00:06:46 v #933 > > "dev-20250109044245-91875819631454" } 00:06:46 v #934 > > │ 00:00:00 d #6 chat_contract.claim_alias / { 00:06:46 v #935 > > account_alias = Some("alias1") } 00:06:46 v #936 > > │ 00:00:00 v #7 chat_contract / { account_set' = 00:06:46 v #937 > > [AccountId("dev-20250109044245-91875819631454")]; alias_set' = ["alias1"]; state 00:06:46 v #938 > > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 00:06:46 v #939 > > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 00:06:46 v #940 > > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector 00:06:46 v #941 > > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: 00:06:46 v #942 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, 00:06:46 v #943 > > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, 00:06:46 v #944 > > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, 112] }) } 00:06:46 v #945 > > │ 00:06:46 v #946 > > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = 00:06:46 v #947 > > 15; total_gas_burnt_usd = +0.004330; total_gas_burnt = 6482766362124 } 00:06:46 v #948 > > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { 00:06:46 v #949 > > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; 00:06:46 v #950 > > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } 00:06:46 v #951 > > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { 00:06:46 v #952 > > is_success = true; gas_burnt_usd = +0.004125; tokens_burnt_usd = +0.004125; 00:06:46 v #953 > > gas_burnt = 6174684502784; tokens_burnt = 617468450278400000000 } 00:06:46 v #954 > > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry 00:06:46 v #955 > > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" 00:06:46 v #956 > > } 00:06:46 v #957 > > │ 00:06:46 v #958 > > │ 00:06:46 v #959 > > │ 00:06:46 v #960 > > 00:06:46 v #961 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:46 v #962 > > │ ### get_account_info 00:06:46 v #963 > > 00:06:46 v #964 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:46 v #965 > > inl get_account_info 00:06:46 v #966 > > (state : rust.ref state) 00:06:46 v #967 > > (account_id : near.account_id) 00:06:46 v #968 > > : optionm'.option' (sm'.std_string * (u64 * u32)) 00:06:46 v #969 > > = 00:06:46 v #970 > > inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string) 00:06:46 v #971 > > = 00:06:46 v #972 > > !\($'$"&!state.3"') 00:06:46 v #973 > > 00:06:46 v #974 > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 00:06:46 v #975 > > near.account_id (u64 * u32))) = 00:06:46 v #976 > > !\($'$"&!state.4"') 00:06:46 v #977 > > 00:06:46 v #978 > > !\\(account_id, $'"let result = !account_map.get(&$0).and_then(|alias| { 00:06:46 v #979 > > //"') : () 00:06:46 v #980 > > !\($'" !alias_map //"') : () 00:06:46 v #981 > > !\($'" .get(alias) //"') : () 00:06:46 v #982 > > !\($'" .map(|accounts| { //"') : () 00:06:46 v #983 > > !\($'" let result = (alias.clone(), 00:06:46 v #984 > > *accounts.get(&!account_id).unwrap()); //"') : () 00:06:46 v #985 > > !\($'" (result.0, result.1.0, result.1.1) //"') : () 00:06:46 v #986 > > !\($'" }) //"') : () 00:06:46 v #987 > > !\($'"}); //"') : () 00:06:46 v #988 > > 00:06:46 v #989 > > inl result = !\($'"result"') 00:06:46 v #990 > > 00:06:46 v #991 > > trace Debug 00:06:46 v #992 > > fun () => "chat_contract.get_account_info" 00:06:46 v #993 > > fun () => { account_id result } 00:06:46 v #994 > > 00:06:46 v #995 > > trace Debug (fun () => "") id 00:06:46 v #996 > > 00:06:46 v #997 > > result 00:06:46 v #998 > > 00:06:46 v #999 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:06:46 v #1000 > > │ ### main 00:06:46 v #1001 > > 00:06:46 v #1002 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:06:46 v #1003 > > ///! _ 00:06:46 v #1004 > > 00:06:46 v #1005 > > inl main () = 00:06:46 v #1006 > > !\($'"} //"') : () 00:06:46 v #1007 > > 00:06:46 v #1008 > > !\($'"#[[near_sdk::near_bindgen]] //"') : () 00:06:46 v #1009 > > 00:06:46 v #1010 > > !\($'"#[[derive( //"') : () 00:06:46 v #1011 > > !\($'" near_sdk::PanicOnDefault, //"') : () 00:06:46 v #1012 > > !\($'" borsh::BorshDeserialize, //"') : () 00:06:46 v #1013 > > !\($'" borsh::BorshSerialize, //"') : () 00:06:46 v #1014 > > !\($'")]] //"') : () 00:06:46 v #1015 > > 00:06:46 v #1016 > > !\($'"pub struct State ( //"') : () 00:06:46 v #1017 > > 00:06:46 v #1018 > > !\($'"/*"') : () 00:06:46 v #1019 > > (null () : rust.type_emit state) |> ignore 00:06:46 v #1020 > > !\($'"*/ )"') : () 00:06:46 v #1021 > > 00:06:46 v #1022 > > inl new_ () = 00:06:46 v #1023 > > !\($'"#[[init]] //"') : () 00:06:46 v #1024 > > !\($'"pub fn new() -> Self { // 1"') : () 00:06:46 v #1025 > > 00:06:46 v #1026 > > (!\($'"true; /*"') : bool) |> ignore 00:06:46 v #1027 > > 00:06:46 v #1028 > > (null () : rust.type_emit ()) |> ignore 00:06:46 v #1029 > > 00:06:46 v #1030 > > (!\($'"true; */"') : bool) |> ignore 00:06:46 v #1031 > > 00:06:46 v #1032 > > inl result = new () 00:06:46 v #1033 > > 00:06:46 v #1034 > > $'let _result = !result in _result |> (fun x -> 00:06:46 v #1035 > > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : () 00:06:46 v #1036 > > 00:06:46 v #1037 > > !\($'"} // 2."') : () 00:06:46 v #1038 > > 00:06:46 v #1039 > > !\($'"} // 1."') : () 00:06:46 v #1040 > > 00:06:46 v #1041 > > 2 00:06:46 v #1042 > > 00:06:46 v #1043 > > inl is_valid_alias () = 00:06:46 v #1044 > > !\($'"fn is_valid_alias(alias: String) -> bool { //"') : () 00:06:46 v #1045 > > inl alias = !\($'$"alias"') 00:06:46 v #1046 > > inl result = alias |> is_valid_alias 00:06:46 v #1047 > > $'let _result = !result in _result |> (fun x -> 00:06:46 v #1048 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () 00:06:46 v #1049 > > !\($'"} //"') : () 00:06:46 v #1050 > > 1 00:06:46 v #1051 > > 00:06:46 v #1052 > > inl generate_cid () = 00:06:46 v #1053 > > !\($'"pub fn generate_cid( //"') : () 00:06:46 v #1054 > > !\($'" &self, //"') : () 00:06:46 v #1055 > > !\($'" content: Vec<u8>, //"') : () 00:06:46 v #1056 > > !\($'") -> String { //"') : () 00:06:46 v #1057 > > inl content = !\($'$"content"') 00:06:46 v #1058 > > inl result = generate_cid content 00:06:46 v #1059 > > $'let _result = !result in _result |> (fun x -> 00:06:46 v #1060 > > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () 00:06:46 v #1061 > > !\($'"} //"') : () 00:06:46 v #1062 > > 2 00:06:46 v #1063 > > 00:06:46 v #1064 > > inl generate_cid_borsh () = 00:06:46 v #1065 > > !\($'"#[[result_serializer(borsh)]] //"') : () 00:06:46 v #1066 > > !\($'"pub fn generate_cid_borsh( //"') : () 00:06:46 v #1067 > > !\($'" &self, //"') : () 00:06:46 v #1068 > > !\($'" #[[serializer(borsh)]] content: Vec<u8>, //"') : () 00:06:46 v #1069 > > !\($'") -> String { //"') : () 00:06:46 v #1070 > > !\($'" self.generate_cid(content) //"') : () 00:06:46 v #1071 > > !\($'"} //"') : () 00:06:46 v #1072 > > 1 00:06:46 v #1073 > > 00:06:46 v #1074 > > inl claim_alias () = 00:06:46 v #1075 > > !\($'"pub fn claim_alias( //"') : () 00:06:46 v #1076 > > !\($'" &mut self, //"') : () 00:06:46 v #1077 > > !\($'" alias: String, //"') : () 00:06:46 v #1078 > > !\($'") { //"') : () 00:06:46 v #1079 > > 00:06:46 v #1080 > > inl state = !\($'$"&mut self.0"') 00:06:46 v #1081 > > inl alias = !\($'$"alias"') 00:06:46 v #1082 > > 00:06:46 v #1083 > > inl result = claim_alias state alias 00:06:46 v #1084 > > trace Debug (fun () => "") (join id) 00:06:46 v #1085 > > 00:06:46 v #1086 > > !\($'"} //"') : () 00:06:46 v #1087 > > 00:06:46 v #1088 > > !\($'"} //"') : () 00:06:46 v #1089 > > 00:06:46 v #1090 > > !\($'"} //"') : () 00:06:46 v #1091 > > 00:06:46 v #1092 > > 3 00:06:46 v #1093 > > 00:06:46 v #1094 > > inl get_account_info () = 00:06:46 v #1095 > > !\($'"pub fn get_account_info( //"') : () 00:06:46 v #1096 > > !\($'" &self, //"') : () 00:06:46 v #1097 > > !\($'" account_id: near_sdk::AccountId, //"') : () 00:06:46 v #1098 > > !\($'") -> Option<(String, u64, u32)> { //"') : () 00:06:46 v #1099 > > 00:06:46 v #1100 > > inl state = !\($'$"&self.0"') 00:06:46 v #1101 > > inl account_id : near.account_id = !\($'$"account_id"') 00:06:46 v #1102 > > 00:06:46 v #1103 > > inl result = account_id |> get_account_info state 00:06:46 v #1104 > > $'let _result = !result in _result |> (fun x -> 00:06:46 v #1105 > > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : () 00:06:46 v #1106 > > 00:06:46 v #1107 > > !\($'"} // 2"') : () 00:06:46 v #1108 > > 00:06:46 v #1109 > > !\($'"} // 1"') : () 00:06:46 v #1110 > > 00:06:46 v #1111 > > 2 00:06:46 v #1112 > > 00:06:46 v #1113 > > inl get_alias_map () = 00:06:46 v #1114 > > !\($'"pub fn get_alias_map( //"') : () 00:06:46 v #1115 > > !\($'" &self, //"') : () 00:06:46 v #1116 > > !\($'" alias: String, //"') : () 00:06:46 v #1117 > > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 00:06:46 v #1118 > > u32)>> { //"') : () 00:06:46 v #1119 > > 00:06:46 v #1120 > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map 00:06:46 v #1121 > > near.account_id (u64 * u32))) = 00:06:46 v #1122 > > !\($'$"&self.0.4"') 00:06:46 v #1123 > > 00:06:46 v #1124 > > inl alias : sm'.std_string = !\($'$"alias"') 00:06:46 v #1125 > > 00:06:46 v #1126 > > trace Debug 00:06:46 v #1127 > > fun () => "chat_contract.get_alias_map" 00:06:46 v #1128 > > fun () => { alias } 00:06:46 v #1129 > > 00:06:46 v #1130 > > trace Debug (fun () => "") (join id) 00:06:46 v #1131 > > 00:06:46 v #1132 > > !\\(alias, $'" !alias_map.get(&$0).cloned() //"') : () 00:06:46 v #1133 > > !\($'"} //"') : () 00:06:46 v #1134 > > 00:06:46 v #1135 > > !\($'"} //"') : () 00:06:46 v #1136 > > 00:06:46 v #1137 > > 2 00:06:46 v #1138 > > 00:06:46 v #1139 > > inl get_alias_map_borsh () = 00:06:46 v #1140 > > !\($'"#[[result_serializer(borsh)]] //"') : () 00:06:46 v #1141 > > !\($'"pub fn get_alias_map_borsh( //"') : () 00:06:46 v #1142 > > !\($'" &self, //"') : () 00:06:46 v #1143 > > !\($'" #[[serializer(borsh)]] alias: String, //"') : () 00:06:46 v #1144 > > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, 00:06:46 v #1145 > > u32)>> { //"') : () 00:06:46 v #1146 > > !\($'" self.get_alias_map(alias) //"') : () 00:06:46 v #1147 > > !\($'"} //"') : () 00:06:46 v #1148 > > 1 00:06:46 v #1149 > > 00:06:46 v #1150 > > inl fns = 00:06:46 v #1151 > > [[ 00:06:46 v #1152 > > new_ 00:06:46 v #1153 > > is_valid_alias 00:06:46 v #1154 > > generate_cid 00:06:46 v #1155 > > generate_cid_borsh 00:06:46 v #1156 > > claim_alias 00:06:46 v #1157 > > get_account_info 00:06:46 v #1158 > > get_alias_map 00:06:46 v #1159 > > get_alias_map_borsh 00:06:46 v #1160 > > ]] 00:06:46 v #1161 > > 00:06:46 v #1162 > > inl rec loop acc fns i = 00:06:46 v #1163 > > match fns with 00:06:46 v #1164 > > | [[]] => acc 00:06:46 v #1165 > > | x :: xs => 00:06:46 v #1166 > > !\($'"#[[near_sdk::near_bindgen]] //"') : () 00:06:46 v #1167 > > !\($'"impl State { //"') : () 00:06:46 v #1168 > > inl n = x () 00:06:46 v #1169 > > !\($'"} /* c"') : () 00:06:46 v #1170 > > inl rec loop' i' = 00:06:46 v #1171 > > if i' <> 1 // <= n 00:06:46 v #1172 > > then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n: 00:06:46 v #1173 > > !n"') : bool) |> ignore 00:06:46 v #1174 > > else 00:06:46 v #1175 > > (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: 00:06:46 v #1176 > > !n"') : bool) |> ignore 00:06:46 v #1177 > > loop' (i' + 1) 00:06:46 v #1178 > > loop' 1u8 00:06:46 v #1179 > > loop (acc + n) xs (i + 1) 00:06:46 v #1180 > > inl n = loop 0u8 fns 1u8 00:06:46 v #1181 > > 00:06:46 v #1182 > > 00:06:46 v #1183 > > // !\($'"/* a"') : () 00:06:46 v #1184 > > 00:06:46 v #1185 > > // !\($'"} // b"') : () 00:06:46 v #1186 > > 00:06:46 v #1187 > > !\($'"fn _main() //"') : () 00:06:46 v #1188 > > !\($'"{ { //"') : () 00:06:46 v #1189 > > 00:06:46 v #1190 > > inl rec loop' i' = 00:06:46 v #1191 > > if i' <= n 00:06:46 v #1192 > > then 00:06:46 v #1193 > > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore 00:06:46 v #1194 > > loop' (i' + 1) 00:06:46 v #1195 > > else 00:06:46 v #1196 > > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore 00:06:46 v #1197 > > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore 00:06:46 v #1198 > > loop' 1u8 00:06:46 v #1199 > > 00:06:46 v #1200 > > inl main () = 00:06:46 v #1201 > > $'!main |> ignore' : () 00:06:47 v #1202 > 00:06:45 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 55114 } 00:06:47 v #1203 > 00:06:45 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:47 v #1204 > 00:06:46 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html 00:06:47 v #1205 > 00:06:46 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:06:47 v #1206 > 00:06:46 v #7 ! validate(nb) 00:06:48 v #1207 > 00:06:46 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:06:48 v #1208 > 00:06:46 v #9 ! return _pygments_highlight( 00:06:48 v #1209 > 00:06:47 v #10 ! [NbConvertApp] Writing 522638 bytes to /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html 00:06:48 v #1210 > 00:06:47 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 926 } 00:06:48 v #1211 > 00:06:47 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 926 } 00:06:48 v #1212 > 00:06:47 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:49 v #1213 > 00:06:47 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:06:49 v #1214 > 00:06:47 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:06:49 v #1215 > 00:06:47 d #16 spiral.run / dib / { exit_code = 0; result_length = 56099 } 00:06:49 d #1216 runtime.execute_with_options_async / { exit_code = 0; output_length = 61265 } 00:06:49 d #3 main / executeCommand / exitCode: 0 / command: ../../../deps/spiral/workspace/target/release/spiral dib --path chat_contract.dib --retries 5 00:06:49 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib 00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # chat_contract\nopen rust\nopen rust.rust_operators\n\n/// ## chat_cont...27 : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.spi"}} / result: 00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #22 Supervisor.buildFile / AsyncSeq.scan / path: chat_contract.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>] #endif type near_sdk_store_IterableSet<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>] #endif type near_sdk_store_LookupMap<'K, 'V> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy" let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy" let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy" let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy" let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy" let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 () let v0 : (unit -> unit) = closure0() v0 |> ignore () 00:00:05 d #23 Supervisor.buildFile / takeWhileInclusive / path: chat_contract.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("*/ $0 /*")>] #endif type TypeEmit<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("&$0")>] type Ref<'T> = class end #else type Ref<'T> = 'T #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::IterableSet<$0>")>] #endif type near_sdk_store_IterableSet<'T> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("near_sdk::store::LookupMap<$0, $1>")>] #endif type near_sdk_store_LookupMap<'K, 'V> = class end #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("mut $0...nterop.emitRustExpr () v802 let v804 : string = "true; { (); // ?? / i': 11uy / n: 14uy" let v805 : bool = Fable.Core.RustInterop.emitRustExpr () v804 let v806 : string = "true; { (); // ?? / i': 12uy / n: 14uy" let v807 : bool = Fable.Core.RustInterop.emitRustExpr () v806 let v808 : string = "true; { (); // ?? / i': 13uy / n: 14uy" let v809 : bool = Fable.Core.RustInterop.emitRustExpr () v808 let v810 : string = "true; { (); // ?? / i': 14uy / n: 14uy" let v811 : bool = Fable.Core.RustInterop.emitRustExpr () v810 let v812 : string = "true; { { (); // ? / i': 15uy / n: 14uy" let v813 : bool = Fable.Core.RustInterop.emitRustExpr () v812 () let v0 : (unit -> unit) = closure0() v0 |> ignore () 00:00:05 d #24 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 v #45 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash: / code.Length: 141485 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract" } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 312 ms). 00:00:07 v #11 > /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fs(3190,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj] 00:00:11 v #12 > chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll 00:00:11 v #13 > chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist 00:00:11 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 1073 } targetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @IanManske Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/chat_contract/chat_contract.fsproj... Project and references (14 source files) parsed in 2506ms Started Fable compilation... Fable compilation finished in 8112ms ./target/Builder/chat_contract/chat_contract.fs(3190,15): (3190,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US6_0 (_)' may indicate a case not covered by the pattern(s). (code 25) ./lib/spiral/common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(548,0): (548,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(2419,0): (2419,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(6923,0): (6923,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(16504,0): (16504,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/chat_contract/chat_contract.fs(3408,6): (3408,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling hashbrown v0.15.2 Compiling wasm-bindgen-shared v0.2.99 Compiling equivalent v1.0.1 Compiling toml_datetime v0.6.8 Compiling winnow v0.6.20 Compiling cfg_aliases v0.2.1 Compiling serde v1.0.216 Compiling indexmap v2.7.0 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling log v0.4.22 Compiling bumpalo v3.16.0 Compiling typenum v1.17.0 Compiling borsh v1.5.3 Compiling once_cell v1.20.2 Compiling serde_json v1.0.133 Compiling fnv v1.0.7 Compiling toml_edit v0.22.22 Compiling syn v1.0.109 Compiling rustversion v1.0.18 Compiling cfg-if v1.0.0 Compiling wasm-bindgen v0.2.99 Compiling ident_case v1.0.1 Compiling hybrid-array v0.2.3 Compiling proc-macro-crate v3.2.0 Compiling near-sdk-macros v5.6.0 Compiling wee_alloc v0.4.5 Compiling heck v0.5.0 Compiling memchr v2.7.4 Compiling ryu v1.0.18 Compiling itoa v1.0.14 Compiling data-encoding v2.6.0 Compiling wasm-bindgen-backend v0.2.99 Compiling darling_core v0.20.10 Compiling data-encoding-macro-internal v0.1.13 Compiling block-buffer v0.11.0-rc.3 Compiling crypto-common v0.2.0-rc.1 Compiling wasm-bindgen-macro-support v0.2.99 Compiling serde_derive v1.0.216 Compiling borsh-derive v1.5.3 Compiling darling_macro v0.20.10 Compiling wasm-bindgen-macro v0.2.99 Compiling darling v0.20.10 Compiling strum_macros v0.26.4 Compiling strum v0.26.3 Compiling cfg-if v0.1.10 Compiling memory_units v0.4.0 Compiling js-sys v0.3.76 Compiling Inflector v0.11.4 Compiling const-oid v0.10.0-rc.3 Compiling digest v0.11.0-pre.9 Compiling data-encoding-macro v0.1.15 Compiling near-sys v0.2.2 Compiling base64 v0.22.1 Compiling bs58 v0.5.1 Compiling base-x v0.2.11 Compiling multibase v0.9.1 Compiling sha2 v0.11.0-pre.4 Compiling inline_colorization v0.1.6 Compiling unsigned-varint v0.8.0 Compiling near-account-id v1.0.0 Compiling near-token v0.3.0 Compiling near-gas v0.3.0 Compiling getrandom v0.2.15 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling near-sdk v5.6.0 Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract) Finished `release` profile [optimized] target(s) in 22.12s Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling serde v1.0.216 Compiling typenum v1.17.0 Compiling once_cell v1.20.2 Compiling equivalent v1.0.1 Compiling hashbrown v0.15.2 Compiling toml_datetime v0.6.8 Compiling cfg_aliases v0.2.1 Compiling winnow v0.6.20 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling generic-array v0.14.7 Compiling indexmap v2.7.0 Compiling crypto-common v0.1.6 Compiling block-buffer v0.10.4 Compiling syn v1.0.109 Compiling digest v0.10.7 Compiling rustversion v1.0.18 Compiling toml_edit v0.22.22 Compiling borsh v1.5.3 Compiling sha2 v0.10.8 Compiling memchr v2.7.4 Compiling proc-macro-crate v3.2.0 Compiling fnv v1.0.7 Compiling aho-corasick v1.1.3 Compiling synstructure v0.13.1 Compiling regex-automata v0.4.9 Compiling axum-core v0.3.4 Compiling ident_case v1.0.1 Compiling darling_core v0.20.10 Compiling serde_derive v1.0.216 Compiling zerofrom-derive v0.1.5 Compiling yoke-derive v0.7.5 Compiling tokio-macros v2.4.0 Compiling zerovec-derive v0.10.3 Compiling tracing-attributes v0.1.28 Compiling tokio v1.42.0 Compiling displaydoc v0.2.5 Compiling tracing v0.1.41 Compiling futures-macro v0.3.31 Compiling zerocopy-derive v0.7.35 Compiling futures-util v0.3.31 Compiling zerocopy v0.7.35 Compiling icu_provider_macros v1.5.0 Compiling borsh-derive v1.5.3 Compiling ppv-lite86 v0.2.20 Compiling thiserror-impl v1.0.69 Compiling rand_chacha v0.3.1 Compiling tokio-util v0.7.13 Compiling thiserror v1.0.69 Compiling rand v0.8.5 Compiling serde_json v1.0.133 Compiling zerofrom v0.1.5 Compiling yoke v0.7.5 Compiling hex v0.4.3 Compiling zerovec v0.10.4 Compiling async-trait v0.1.83 Compiling tinystr v0.7.6 Compiling icu_locid v1.5.0 Compiling deranged v0.3.11 Compiling time v0.3.37 Compiling icu_provider v1.5.0 Compiling pin-project-internal v1.1.7 Compiling serde_repr v0.1.19 Compiling icu_locid_transform v1.5.0 Compiling icu_collections v1.5.0 Compiling pin-project v1.1.7 Compiling near-account-id v1.0.0 Compiling h2 v0.3.26 Compiling futures-executor v0.3.31 Compiling tracing-subscriber v0.3.19 Compiling icu_properties v1.5.1 Compiling tokio-stream v0.1.17 Compiling regex v1.11.1 Compiling hyper v0.14.31 Compiling derive_arbitrary v1.4.1 Compiling derive_more v0.99.18 Compiling enum-map-derive v0.17.0 Compiling curve25519-dalek-derive v0.1.1 Compiling axum v0.6.20 Compiling heck v0.5.0 Compiling icu_normalizer v1.5.0 Compiling curve25519-dalek v4.1.3 Compiling strum_macros v0.24.3 Compiling opentelemetry v0.22.0 Compiling num-rational v0.3.2 Compiling prost-derive v0.12.6 Compiling enum-map v2.7.3 Compiling arbitrary v1.4.1 Compiling tower v0.4.13 Compiling tokio-io-timeout v1.2.0 Compiling darling_macro v0.20.10 Compiling async-stream-impl v0.3.6 Compiling serde_derive_internals v0.29.1 Compiling block-padding v0.3.3 Compiling opentelemetry_sdk v0.22.1 Compiling async-stream v0.3.6 Compiling inout v0.1.3 Compiling darling v0.20.10 Compiling uint v0.9.5 Compiling prost v0.12.6 Compiling schemars_derive v0.8.21 Compiling hyper-timeout v0.4.1 Compiling near-primitives-core v0.23.0 Compiling ed25519-dalek v2.1.1 Compiling strum v0.24.1 Compiling idna_adapter v1.2.0 Compiling openssl-macros v0.1.1 Compiling near-config-utils v0.23.0 Compiling toml_edit v0.19.15 Compiling primitive-types v0.10.1 Compiling tonic v0.11.0 Compiling openssl v0.10.68 Compiling idna v1.0.3 Compiling secp256k1 v0.27.0 Compiling cipher v0.4.4 Compiling actix-rt v2.10.0 Compiling actix-macros v0.2.4 Compiling actix_derive v0.6.2 Compiling blake2 v0.10.6 Compiling hmac v0.12.1 Compiling ryu v1.0.18 Compiling itoa v1.0.14 Compiling near-crypto v0.23.0 Compiling actix v0.13.5 Compiling opentelemetry-proto v0.5.0 Compiling url v2.5.4 Compiling proc-macro-crate v1.3.1 Compiling clap_derive v4.5.18 Compiling zvariant_utils v1.0.1 Compiling sha1 v0.10.6 Compiling serde_yaml v0.9.34+deprecated Compiling opentelemetry-otlp v0.15.0 Compiling prometheus v0.13.4 Compiling proc-macro-error-attr v1.0.4 Compiling clap v4.5.23 Compiling semver v1.0.24 Compiling aes v0.8.4 Compiling h2 v0.4.7 Compiling tracing-opentelemetry v0.23.0 Compiling serde_with_macros v3.11.0 Compiling tracing-appender v0.2.3 Compiling futures v0.3.31 Compiling near-time v0.23.0 Compiling near-rpc-error-core v0.23.0 Compiling enumflags2_derive v0.7.10 Compiling native-tls v0.2.12 Compiling near-rpc-error-macro v0.23.0 Compiling chrono v0.4.39 Compiling sha3 v0.10.8 Compiling enumflags2 v0.7.10 Compiling serde_with v3.11.0 Compiling near-performance-metrics v0.23.0 Compiling near-o11y v0.23.0 Compiling hyper v1.5.1 Compiling proc-macro-error v1.0.4 Compiling near-parameters v0.23.0 Compiling zvariant_derive v3.15.2 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling near-async v0.23.0 Compiling near-primitives v0.23.0 Compiling zvariant v3.15.2 Compiling hyper-util v0.1.10 Compiling schemars v0.8.21 Compiling interactive-clap-derive v0.2.10 Compiling tokio-native-tls v0.3.1 Compiling Inflector v0.11.4 Compiling http-body-util v0.1.2 Compiling vte_generate_state_changes v0.1.2 Compiling log v0.4.22 Compiling vte v0.11.1 Compiling rustls v0.23.20 Compiling hyper-tls v0.6.0 Compiling interactive-clap v0.2.10 Compiling zbus_names v2.6.1 Compiling zbus_macros v3.15.2 Compiling serde_urlencoded v0.7.1 Compiling tracing-error v0.2.1 Compiling derivative v2.2.0 Compiling async-recursion v1.1.1 Compiling digest v0.9.0 Compiling zbus v3.15.2 Compiling ureq v2.12.1 Compiling color-spantrace v0.2.1 Compiling reqwest v0.12.9 Compiling near-chain-configs v0.23.0 Compiling near-jsonrpc-primitives v0.23.0 Compiling vt100 v0.15.2 Compiling ahash v0.8.11 Compiling pbkdf2 v0.11.0 Compiling near-abi v0.4.3 Compiling uriparse v0.6.4 Compiling near_schemafy_core v0.7.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.8 Compiling scroll_derive v0.11.1 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling string_cache v0.8.7 Compiling sha2 v0.9.9 Compiling binary-install v0.2.0 Compiling indicatif v0.17.9 Compiling zip v0.6.6 Compiling crypto-hash v0.3.4 Compiling csv v1.3.1 Compiling hmac v0.9.0 Compiling scroll v0.11.0 Compiling near_schemafy_lib v0.7.0 Compiling secret-service v3.1.0 Compiling hashbrown v0.14.5 Compiling near-jsonrpc-client v0.10.1 Compiling color-eyre v0.6.3 Compiling near-token v0.2.1 Compiling goblin v0.5.4 Compiling near-sandbox-utils v0.8.0 Compiling elementtree v0.7.0 Compiling prettytable v0.10.0 Compiling cargo-util v0.1.2 Compiling keyring v2.3.3 Compiling near-socialdb-client v0.3.2 Compiling bip39 v2.1.0 Compiling near-abi-client-impl v0.1.1 Compiling wasmparser v0.211.1 Compiling slipped10 v0.4.6 Compiling rust_decimal v1.36.0 Compiling toml v0.8.19 Compiling camino v1.1.9 Compiling tracing-indicatif v0.3.8 Compiling near-gas v0.2.5 Compiling zip v0.5.13 Compiling linked-hash-map v0.5.6 Compiling cargo-platform v0.1.9 Compiling smart-default v0.7.1 Compiling near-sdk-macros v5.6.0 Compiling symbolic-debuginfo v8.8.0 Compiling cargo_metadata v0.18.1 Compiling near-abi-client-macros v0.1.1 Compiling names v0.14.0 Compiling near-workspaces v0.11.1 Compiling prettyplease v0.1.25 Compiling rustc_version v0.4.1 Compiling strum_macros v0.26.4 Compiling near-cli-rs v0.11.1 Compiling jsonptr v0.4.7 Compiling strum v0.26.3 Compiling near-abi-client v0.1.1 Compiling json-patch v2.0.0 Compiling near-sandbox-utils v0.9.0 Compiling tokio-retry v0.3.0 Compiling near-token v0.3.0 Compiling near-gas v0.3.0 Compiling near-sdk v5.6.0 Compiling near-sandbox-utils v0.12.0 Compiling cargo-near v0.6.4 Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests) Finished `release` profile [optimized] target(s) in 2m 36s Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests` new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1641007093783, }, transaction: ExecutionOutcome { transaction_hash: 9MjEe8aRuinh7iKe8tV2xVGACFtnAUzWUarrgjJvb8hz, block_hash: 9BYikeKRQbAfYDdAmEj9cB22bHJ8pydrc6YdqPmJGkBw, logs: [], receipt_ids: [ A4yKiqyaUvKz3vJXbkTXwJZfzGDg1Xfmw2LC13tJbSeN, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessReceiptId(A4yKiqyaUvKz3vJXbkTXwJZfzGDg1Xfmw2LC13tJbSeN), }, receipts: [ ExecutionOutcome { transaction_hash: A4yKiqyaUvKz3vJXbkTXwJZfzGDg1Xfmw2LC13tJbSeN, block_hash: 9BYikeKRQbAfYDdAmEj9cB22bHJ8pydrc6YdqPmJGkBw, logs: [], receipt_ids: [ D5NXVq967b2DgRqkqaNjff4cxZGFGJ8ubwX2R478XRuF, ], gas_burnt: NearGas { inner: 1332940885981, }, tokens_burnt: NearToken { inner: 133294088598100000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0010961927386470439 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0008904045118353079 outcome_tokens_burnt_usd: 0.0 claim_alias(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2162584114772, }, transaction: ExecutionOutcome { transaction_hash: DkEqiSSoFYpLgLTepzKTHY1Nk8rdMKiP3Hmzc7sqZUS3, block_hash: EAwkn3ZqAwF9TJABEKJSnNHBa5ozUZfgjkCRZ477KTus, logs: [], receipt_ids: [ DFeyiqk63Vg6LGEqc3RtF32MAgF7oRnTAhmYvVnU8XJC, ], gas_burnt: NearGas { inner: 308110926482, }, tokens_burnt: NearToken { inner: 30811092648200000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessReceiptId(DFeyiqk63Vg6LGEqc3RtF32MAgF7oRnTAhmYvVnU8XJC), }, receipts: [ ExecutionOutcome { transaction_hash: DFeyiqk63Vg6LGEqc3RtF32MAgF7oRnTAhmYvVnU8XJC, block_hash: EAwkn3ZqAwF9TJABEKJSnNHBa5ozUZfgjkCRZ477KTus, logs: [], receipt_ids: [ BeJH4AxJNwR73mRb7Yw1VVXpenkbZZaMzt1a6dKMizeR, ], gas_burnt: NearGas { inner: 1631290625790, }, tokens_burnt: NearToken { inner: 163129062579000000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), }, ExecutionOutcome { transaction_hash: BeJH4AxJNwR73mRb7Yw1VVXpenkbZZaMzt1a6dKMizeR, block_hash: Eq6nLK9JM5TfbgSHxAgu4CGiFeeratV7GfUyrA31Aadx, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ], status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), } total_gas_burnt_usd: 0.001444606188667696 outcome (success: true): outcome_gas_burnt_usd: 0.000205818098889976 outcome_tokens_burnt_usd: 0.0 outcome (success: false): outcome_gas_burnt_usd: 0.00108970213802772 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 dev_create_account(account1): Account { id: AccountId( "dev-20250109044621-41298042814559", ), } generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] } claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3550722265772, }, transaction: ExecutionOutcome { transaction_hash: 4MqWJZdTwGAa6RJMH8nxeC17jsTnytCFn9NC73AwhidK, block_hash: B8e2fq4WEpirhgRW3Wa8Txh4Q71LZQhRKTTeWeoKG72r, logs: [], receipt_ids: [ 5wVFj8ddyBhztR3jpbaq1jxhSR6AqTb2SdGVz3fk4gh9, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessReceiptId(5wVFj8ddyBhztR3jpbaq1jxhSR6AqTb2SdGVz3fk4gh9), }, receipts: [ ExecutionOutcome { transaction_hash: 5wVFj8ddyBhztR3jpbaq1jxhSR6AqTb2SdGVz3fk4gh9, block_hash: AY42CoL5knvoyXX3FUGgT8hBq7GkYgEjqnEdJfHNDhG5, logs: [ "04:46:22 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736397982958289915; signer_account_id = \"dev-20250109044621-41298042814559\"; predecessor_account_id = \"dev-20250109044621-41298042814559\" }\n04:46:22 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ bGeeK4iyACCKHtVHMVmU5G1WrEhMCUYoMzKDDzTtWLQ, ], gas_burnt: NearGas { inner: 3019415361186, }, tokens_burnt: NearToken { inner: 301941536118600000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: bGeeK4iyACCKHtVHMVmU5G1WrEhMCUYoMzKDDzTtWLQ, block_hash: Czt5BDzve8Kj58VRzSNr1mrwyNBpJijhhMwDZBxWCB2w, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002371882473535696 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002016969461272248 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3683155729226, }, transaction: ExecutionOutcome { transaction_hash: DvLuMampSQ3jE3jNuMhquKnNuo67otjwGkh4S99naK2h, block_hash: AzgKPyjeVQYAfXQKrZ13zmHqzRAaQcPtHbgYZC1xP3j, logs: [], receipt_ids: [ ByeFsnPRR971AjLSNLy64WCGGdehGLSCNmCmgDwpGrjp, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessReceiptId(ByeFsnPRR971AjLSNLy64WCGGdehGLSCNmCmgDwpGrjp), }, receipts: [ ExecutionOutcome { transaction_hash: ByeFsnPRR971AjLSNLy64WCGGdehGLSCNmCmgDwpGrjp, block_hash: B6n4x94KQ8y3b1JNxcfBDxMAdJEf4EVYiTNNxZ9rjRZv, logs: [ "04:46:23 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736397983970621819; signer_account_id = \"dev-20250109044621-41298042814559\"; predecessor_account_id = \"dev-20250109044621-41298042814559\" }\n04:46:23 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ 9FQDyURMd18M4c5cA1sdPD9cdpxB2JiiA3EYrv3GEPXK, ], gas_burnt: NearGas { inner: 3151848824640, }, tokens_burnt: NearToken { inner: 315184882464000000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 9FQDyURMd18M4c5cA1sdPD9cdpxB2JiiA3EYrv3GEPXK, block_hash: HBcy5MYVPqVjCxeij4HkfK4oJxE8GcZN5BpeAzKSKGmd, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002460348027122968 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00210543501485952 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1736397983970621819, 0, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250109044621-41298042814559", ): ( 1736397983970621819, 0, ), }, ) dev_create_account(account2): Account { id: AccountId( "dev-20250109044624-37240993720322", ), } claim_alias(alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3784985736884, }, transaction: ExecutionOutcome { transaction_hash: EpU9rbx1YxqKzxmDLsqfSRm9XzoMoCwoxy7Tq8G1XLW6, block_hash: E7DWsBL5rktRkWY3w6omhPyvwTzNU1NXQEJZAyy5nAti, logs: [], receipt_ids: [ 8fBizCxeoCvkRsBvB96tgZnkbFT33Jubwgtq3Bv8JkGH, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044624-37240993720322", ), status: SuccessReceiptId(8fBizCxeoCvkRsBvB96tgZnkbFT33Jubwgtq3Bv8JkGH), }, receipts: [ ExecutionOutcome { transaction_hash: 8fBizCxeoCvkRsBvB96tgZnkbFT33Jubwgtq3Bv8JkGH, block_hash: GeTfiGkdM2N4xUyymMjYSzAPmrjhZmLczQXzFzGoNg4D, logs: [ "04:46:25 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1736397985990920966; signer_account_id = \"dev-20250109044624-37240993720322\"; predecessor_account_id = \"dev-20250109044624-37240993720322\" }\n04:46:25 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ 3UYPp5RCz5pzXg2MJoaY4CkSgCKcDKKvXPtfHZtRsdeD, ], gas_burnt: NearGas { inner: 3253678832298, }, tokens_burnt: NearToken { inner: 325367883229800000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 3UYPp5RCz5pzXg2MJoaY4CkSgCKcDKKvXPtfHZtRsdeD, block_hash: ABQQao41abbThYtibA4Jzdw8SRsWJrkJpQWtsKjm7UxN, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044624-37240993720322", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002528370472238512 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0021734574599750643 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias2", 1736397985990920966, 0, ), ) get_alias_map_borsh(alias2): Some( { AccountId( "dev-20250109044624-37240993720322", ): ( 1736397985990920966, 0, ), }, ) claim_alias(account2, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3974921862743, }, transaction: ExecutionOutcome { transaction_hash: kS2YTgXmZSeXLgezCh8pJrtTjY97eVQWeXxws9K6Xmp, block_hash: 9PCjaZRXhA2xX6krz7MiiqfmMQ6GxDGNEfjCHR3YAP2q, logs: [], receipt_ids: [ DNJj7EmHSJy3PJFN7ZoBdZbV2uaf4ZYrqeGFZrjzrtmM, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044624-37240993720322", ), status: SuccessReceiptId(DNJj7EmHSJy3PJFN7ZoBdZbV2uaf4ZYrqeGFZrjzrtmM), }, receipts: [ ExecutionOutcome { transaction_hash: DNJj7EmHSJy3PJFN7ZoBdZbV2uaf4ZYrqeGFZrjzrtmM, block_hash: 5DLAKAfxSXQ3DCsA5Hssxdak3rF5Hx8P1ku3wpcrzajA, logs: [ "04:46:27 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736397987002783808; signer_account_id = \"dev-20250109044624-37240993720322\"; predecessor_account_id = \"dev-20250109044624-37240993720322\" }\n04:46:27 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ CJu1EUhkUkcReiLtkqZHGFH8jfKpeEHpUexhKZHyFdkN, ], gas_burnt: NearGas { inner: 3443614958157, }, tokens_burnt: NearToken { inner: 344361495815700000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: CJu1EUhkUkcReiLtkqZHGFH8jfKpeEHpUexhKZHyFdkN, block_hash: A8eLtv8oZaTxWfEkcx9T1NkU7BW4QHoCh87TNKquRJhq, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044624-37240993720322", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002655247804312324 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002300334792048876 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias1", 1736397987002783808, 1, ), ) get_alias_map(account2, alias1): Some( { AccountId( "dev-20250109044624-37240993720322", ): ( 1736397987002783808, 1, ), AccountId( "dev-20250109044621-41298042814559", ): ( 1736397983970621819, 0, ), }, ) get_alias_map(account2, alias2): Some( {}, ) claim_alias(account1, alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3970330061507, }, transaction: ExecutionOutcome { transaction_hash: 9qLVwwHoLcNsknKqHNJsWfphVaCw86oe9iwuzFqWSPrq, block_hash: CQCEDUpHbRqkdXpzuWGQFpGaVQxRMijjFHVhHvabH8Xb, logs: [], receipt_ids: [ 3QLh2LuUL94u98kXTwqBCW2sm2evYvPqejcB7Y9KS57N, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessReceiptId(3QLh2LuUL94u98kXTwqBCW2sm2evYvPqejcB7Y9KS57N), }, receipts: [ ExecutionOutcome { transaction_hash: 3QLh2LuUL94u98kXTwqBCW2sm2evYvPqejcB7Y9KS57N, block_hash: 9fLatfCDQhC225dbijkkW6tHHTLX7fcvdcLV2nQuVGb6, logs: [ "04:46:28 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1736397988012283227; signer_account_id = \"dev-20250109044621-41298042814559\"; predecessor_account_id = \"dev-20250109044621-41298042814559\" }\n04:46:28 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ 96mwCqMUAYmcRwKV8jLSnGSX7FyrLCEszamUbaAT1MyG, ], gas_burnt: NearGas { inner: 3439023156921, }, tokens_burnt: NearToken { inner: 343902315692100000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 96mwCqMUAYmcRwKV8jLSnGSX7FyrLCEszamUbaAT1MyG, block_hash: 6Vd4MWuVFw8WsiTZzx3gaVL3ndLLPyT1PWyRUe4de6pi, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0026521804810866758 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002297267468823228 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias2", 1736397988012283227, 0, ), ) get_alias_map(account1, alias2): Some( { AccountId( "dev-20250109044621-41298042814559", ): ( 1736397988012283227, 0, ), }, ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250109044624-37240993720322", ): ( 1736397987002783808, 1, ), }, ) claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3972712619759, }, transaction: ExecutionOutcome { transaction_hash: HRpnngytCfw3d1pJv8TdUVxcs1mGRa64VSWA8xGW2eEe, block_hash: BnSf8QmRgqxzaTajCZHRu9uBc6JNDnGdU8aTAfCM8f4f, logs: [], receipt_ids: [ 6jSt4WNm5x2uBtPX2FviAfjM4QP15Cw2WM6ju8eDhb5s, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessReceiptId(6jSt4WNm5x2uBtPX2FviAfjM4QP15Cw2WM6ju8eDhb5s), }, receipts: [ ExecutionOutcome { transaction_hash: 6jSt4WNm5x2uBtPX2FviAfjM4QP15Cw2WM6ju8eDhb5s, block_hash: 3CPfqTUQbX48PXkoSBipnHmwiVJwkJyvQYakTHHpNZix, logs: [ "04:46:29 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1736397989022737117; signer_account_id = \"dev-20250109044621-41298042814559\"; predecessor_account_id = \"dev-20250109044621-41298042814559\" }\n04:46:29 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ EyrskigFHohXvLu94CBhL1zjWDscFLju4EBbmFoxDF5G, ], gas_burnt: NearGas { inner: 3441405715173, }, tokens_burnt: NearToken { inner: 344140571517300000000, }, executor_id: AccountId( "dev-20250109044619-11652204653583", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: EyrskigFHohXvLu94CBhL1zjWDscFLju4EBbmFoxDF5G, block_hash: 2LkNvpMJoe2g4vVQH52sd1MtBeYZ2KVBXyu989qQ8rLh, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250109044621-41298042814559", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002653772029999012 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0022988590177355638 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1736397989022737117, 1, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250109044624-37240993720322", ): ( 1736397987002783808, 0, ), AccountId( "dev-20250109044621-41298042814559", ): ( 1736397989022737117, 1, ), }, ) get_alias_map(account1, alias2): Some( {}, )
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path cube.dib"; options = { command = ../../../../deps/spiral/workspace/target/release/spiral dib --path cube.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # cube 00:00:02 v #13 > > 00:00:02 v #14 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #15 > > │ ## cube 00:00:05 v #16 > > 00:00:05 v #17 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:05 v #18 > > open System 00:00:05 v #19 > > open System.Threading.Tasks 00:00:05 v #20 > > open System.Text 00:00:05 v #21 > > 00:00:05 v #22 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:05 v #23 > > let width = 160 00:00:05 v #24 > > let height = 44 00:00:05 v #25 > > let backgroundChar = '.' 00:00:05 v #26 > > let distanceFromCam = 100.0 00:00:05 v #27 > > let k1 = 40.0 00:00:05 v #28 > > let incrementSpeed = 0.6 00:00:05 v #29 > > 00:00:05 v #30 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:05 v #31 > > │ ### get_width 00:00:06 v #32 > > 00:00:06 v #33 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:06 v #34 > > inl get_width () = 00:00:06 v #35 > > 160i32 00:00:10 v #36 > > 00:00:10 v #37 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #38 > > │ ### get_height 00:00:10 v #39 > > 00:00:10 v #40 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #41 > > inl get_height () = 00:00:10 v #42 > > 44i32 00:00:10 v #43 > > 00:00:10 v #44 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #45 > > │ ### get_background_char 00:00:10 v #46 > > 00:00:10 v #47 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #48 > > inl get_background_char () = 00:00:10 v #49 > > '.' 00:00:10 v #50 > > 00:00:10 v #51 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:10 v #52 > > │ ### get_distance_from_cam 00:00:10 v #53 > > 00:00:10 v #54 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:10 v #55 > > inl get_distance_from_cam () = 00:00:10 v #56 > > 100f64 00:00:11 v #57 > > 00:00:11 v #58 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #59 > > │ ### get_k1 00:00:11 v #60 > > 00:00:11 v #61 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #62 > > inl get_k1 () = 00:00:11 v #63 > > 40f64 00:00:11 v #64 > > 00:00:11 v #65 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #66 > > │ ### get_increment_speed 00:00:11 v #67 > > 00:00:11 v #68 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #69 > > inl get_increment_speed () = 00:00:11 v #70 > > 0.6f64 00:00:11 v #71 > > 00:00:11 v #72 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:11 v #73 > > │ ### rotation 00:00:11 v #74 > > 00:00:11 v #75 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:11 v #76 > > type Rotation = { a: float; b: float; c: float } 00:00:11 v #77 > > 00:00:11 v #78 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:11 v #79 > > type rotation = 00:00:11 v #80 > > { 00:00:11 v #81 > > a : f64 00:00:11 v #82 > > b : f64 00:00:11 v #83 > > c : f64 00:00:11 v #84 > > } 00:00:12 v #85 > > 00:00:12 v #86 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #87 > > │ ### cube 00:00:12 v #88 > > 00:00:12 v #89 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #90 > > type Cube = { cubeWidth: float; horizontalOffset: float } 00:00:12 v #91 > > 00:00:12 v #92 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #93 > > type cube = 00:00:12 v #94 > > { 00:00:12 v #95 > > cube_width : f64 00:00:12 v #96 > > horizontal_offset : f64 00:00:12 v #97 > > } 00:00:12 v #98 > > 00:00:12 v #99 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #100 > > │ ### get_cubes 00:00:12 v #101 > > 00:00:12 v #102 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #103 > > let cubes = [[ 00:00:12 v #104 > > { cubeWidth = 20.0; horizontalOffset = -40.0 } 00:00:12 v #105 > > { cubeWidth = 10.0; horizontalOffset = 10.0 } 00:00:12 v #106 > > { cubeWidth = 5.0; horizontalOffset = 40.0 } 00:00:12 v #107 > > ]] 00:00:12 v #108 > > 00:00:12 v #109 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #110 > > inl get_cubes () : list cube = 00:00:12 v #111 > > [[ 00:00:12 v #112 > > { cube_width = 20; horizontal_offset = -40 } 00:00:12 v #113 > > { cube_width = 10; horizontal_offset = 10 } 00:00:12 v #114 > > { cube_width = 5; horizontal_offset = 40 } 00:00:12 v #115 > > ]] 00:00:12 v #116 > > 00:00:12 v #117 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #118 > > │ ### calculate_x 00:00:12 v #119 > > 00:00:12 v #120 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #121 > > let calculateX i j k (rot: Rotation) = 00:00:12 v #122 > > let a, b, c = rot.a, rot.b, rot.c 00:00:12 v #123 > > j * sin a * sin b * cos c - k * cos a * sin b * cos c + 00:00:12 v #124 > > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c 00:00:12 v #125 > > 00:00:12 v #126 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:12 v #127 > > inl calculate_x i j k (rot : rotation) = 00:00:12 v #128 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:12 v #129 > > j * sin a * sin b * cos c - k * cos a * sin b * cos c + 00:00:12 v #130 > > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c 00:00:12 v #131 > > 00:00:12 v #132 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:12 v #133 > > │ ### calculate_y 00:00:12 v #134 > > 00:00:12 v #135 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:12 v #136 > > let calculateY i j k (rot: Rotation) = 00:00:12 v #137 > > let a, b, c = rot.a, rot.b, rot.c 00:00:12 v #138 > > j * cos a * cos c + k * sin a * cos c - 00:00:12 v #139 > > j * sin a * sin b * sin c + k * cos a * sin b * sin c - 00:00:12 v #140 > > i * cos b * sin c 00:00:13 v #141 > > 00:00:13 v #142 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #143 > > inl calculate_y i j k (rot : rotation) = 00:00:13 v #144 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:13 v #145 > > j * cos a * cos c + k * sin a * cos c - 00:00:13 v #146 > > j * sin a * sin b * sin c + k * cos a * sin b * sin c - 00:00:13 v #147 > > i * cos b * sin c 00:00:13 v #148 > > 00:00:13 v #149 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #150 > > │ ### calculate_z 00:00:13 v #151 > > 00:00:13 v #152 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:13 v #153 > > let calculateZ i j k (rot: Rotation) = 00:00:13 v #154 > > let a, b, c = rot.a, rot.b, rot.c 00:00:13 v #155 > > k * cos a * cos b - j * sin a * cos b + i * sin b 00:00:13 v #156 > > 00:00:13 v #157 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #158 > > inl calculate_z i j k (rot : rotation) = 00:00:13 v #159 > > inl a, b, c = rot.a, rot.b, rot.c 00:00:13 v #160 > > k * cos a * cos b - j * sin a * cos b + i * sin b 00:00:13 v #161 > > 00:00:13 v #162 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #163 > > │ ### calculate_for_surface 00:00:13 v #164 > > 00:00:13 v #165 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:13 v #166 > > let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset = 00:00:13 v #167 > > let x = calculateX cubeX cubeY cubeZ rot 00:00:13 v #168 > > let y = calculateY cubeX cubeY cubeZ rot 00:00:13 v #169 > > let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam 00:00:13 v #170 > > let ooz = 1.0 / z 00:00:13 v #171 > > let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0) 00:00:13 v #172 > > let yp = int (float height / 2.0 + k1 * ooz * y) 00:00:13 v #173 > > let idx = xp + yp * width 00:00:13 v #174 > > if idx >= 0 && idx < width * height 00:00:13 v #175 > > then Some (idx, (ooz, ch)) 00:00:13 v #176 > > else None 00:00:13 v #177 > > 00:00:13 v #178 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #179 > > let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset = 00:00:13 v #180 > > inl x = calculate_x cube_x cube_y cube_z rot 00:00:13 v #181 > > inl y = calculate_y cube_x cube_y cube_z rot 00:00:13 v #182 > > inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam () 00:00:13 v #183 > > inl ooz = 1.0 / z 00:00:13 v #184 > > inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz 00:00:13 v #185 > > * x * 2.0) 00:00:13 v #186 > > inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y) 00:00:13 v #187 > > inl idx = xp + yp * get_width () 00:00:13 v #188 > > if idx >= 0 && idx < get_width () * get_height () 00:00:13 v #189 > > then Some (idx, (ooz, ch)) 00:00:13 v #190 > > else None 00:00:13 v #191 > > 00:00:13 v #192 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:13 v #193 > > │ ### frange 00:00:13 v #194 > > 00:00:13 v #195 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:13 v #196 > > let frange start stop step = 00:00:13 v #197 > > seq { 00:00:13 v #198 > > let mutable current = start 00:00:13 v #199 > > while (step > 0.0 && current < stop) || (step < 0.0 && current > stop) 00:00:13 v #200 > > do 00:00:13 v #201 > > yield current 00:00:13 v #202 > > current <- current + step 00:00:13 v #203 > > } 00:00:13 v #204 > > 00:00:13 v #205 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:13 v #206 > > inl frange start stop step : _ f64 = 00:00:13 v #207 > > fun () => 00:00:13 v #208 > > inl current = mut start 00:00:13 v #209 > > loopw.while 00:00:13 v #210 > > fun () => (step > 0f64 && *current < stop) || (step < 0 && *current 00:00:13 v #211 > > > stop) 00:00:13 v #212 > > fun () => 00:00:13 v #213 > > *current |> yield 00:00:13 v #214 > > current <- *current + step 00:00:13 v #215 > > |> seq.new_seq 00:00:14 v #216 > > 00:00:14 v #217 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #218 > > │ ### get_cube_points 00:00:14 v #219 > > 00:00:14 v #220 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #221 > > let getCubePoints (cube: Cube) rot = 00:00:14 v #222 > > let cw = cube.cubeWidth 00:00:14 v #223 > > let ho = cube.horizontalOffset 00:00:14 v #224 > > let cubeRange = frange (-cw) cw incrementSpeed 00:00:14 v #225 > > seq { 00:00:14 v #226 > > for cubeX in cubeRange do 00:00:14 v #227 > > for cubeY in cubeRange do 00:00:14 v #228 > > let x = 00:00:14 v #229 > > [[ 00:00:14 v #230 > > calculateForSurface cubeX cubeY (-cw) '@' rot ho 00:00:14 v #231 > > calculateForSurface cw cubeY cubeX '$' rot ho 00:00:14 v #232 > > calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho 00:00:14 v #233 > > calculateForSurface (-cubeX) cubeY cw '#' rot ho 00:00:14 v #234 > > calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho 00:00:14 v #235 > > calculateForSurface cubeX cw cubeY '+' rot ho 00:00:14 v #236 > > ]] 00:00:14 v #237 > > |> Seq.choose id 00:00:14 v #238 > > yield! x 00:00:14 v #239 > > } 00:00:14 v #240 > > 00:00:14 v #241 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #242 > > inl get_cube_points (cube : cube) rot = 00:00:14 v #243 > > inl cw = cube.cube_width 00:00:14 v #244 > > inl ho = cube.horizontal_offset 00:00:14 v #245 > > inl cube_range = frange -cw cw (get_increment_speed ()) 00:00:14 v #246 > > inl cube_range = join cube_range 00:00:14 v #247 > > inl get cube_x cube_y = 00:00:14 v #248 > > [[ 00:00:14 v #249 > > calculate_for_surface cube_x cube_y -cw ';' rot ho 00:00:14 v #250 > > calculate_for_surface cw cube_y cube_x '\\' rot ho 00:00:14 v #251 > > calculate_for_surface -cw cube_y -cube_x '/' rot ho 00:00:14 v #252 > > calculate_for_surface -cube_x cube_y cw '=' rot ho 00:00:14 v #253 > > calculate_for_surface cube_x -cw -cube_y '>' rot ho 00:00:14 v #254 > > calculate_for_surface cube_x cw cube_y '<' rot ho 00:00:14 v #255 > > ]] 00:00:14 v #256 > > |> listm'.box 00:00:14 v #257 > > inl get = join get 00:00:14 v #258 > > inl box x : _ (i32 * f64 * char) = 00:00:14 v #259 > > optionm'.box x 00:00:14 v #260 > > inl box = join box 00:00:14 v #261 > > fun () => 00:00:14 v #262 > > backend_switch { 00:00:14 v #263 > > Fsharp = fun () => 00:00:14 v #264 > > $'for cube_x in !cube_range do' 00:00:14 v #265 > > $'for cube_y in !cube_range do' 00:00:14 v #266 > > $'let x = !get cube_x cube_y |> Seq.choose !box ' 00:00:14 v #267 > > $'yield\! x' : () 00:00:14 v #268 > > Python = fun () => 00:00:14 v #269 > > $'cube_range = !cube_range ' 00:00:14 v #270 > > $'get = !get ' 00:00:14 v #271 > > $'box = !box ' 00:00:14 v #272 > > $'for cube_x in cube_range:' 00:00:14 v #273 > > $' for cube_y in cube_range:' 00:00:14 v #274 > > $' x = get(cube_x)(cube_y)' 00:00:14 v #275 > > $' for i in x:' 00:00:14 v #276 > > $' i_ = box(i)' 00:00:14 v #277 > > $' if i_ is not None: yield i' : () 00:00:14 v #278 > > } 00:00:14 v #279 > > |> seq.new_seq 00:00:14 v #280 > > 00:00:14 v #281 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:14 v #282 > > │ ### generate_frame 00:00:14 v #283 > > 00:00:14 v #284 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #285 > > let generateFrame rot = 00:00:14 v #286 > > let updates = 00:00:14 v #287 > > cubes 00:00:14 v #288 > > |> Seq.collect (fun cube -> getCubePoints cube rot) 00:00:14 v #289 > > let buffer = Array.create (width * height) None 00:00:14 v #290 > > updates 00:00:14 v #291 > > |> Seq.iter (fun (idx, (ooz, ch)) -> 00:00:14 v #292 > > match buffer.[[idx]] with 00:00:14 v #293 > > | Some (prevOoz, _) when prevOoz >= ooz -> () 00:00:14 v #294 > > | _ -> buffer.[[idx]] <- Some (ooz, ch) 00:00:14 v #295 > > ) 00:00:14 v #296 > > let sb = StringBuilder() 00:00:14 v #297 > > for row in 0 .. (height - 1) do 00:00:14 v #298 > > for col in 0 .. (width - 1) do 00:00:14 v #299 > > let idx = col + row * width 00:00:14 v #300 > > let ch = 00:00:14 v #301 > > match buffer.[[idx]] with 00:00:14 v #302 > > | Some (_, ch) -> ch 00:00:14 v #303 > > | None -> backgroundChar 00:00:14 v #304 > > sb.Append(ch) |> ignore 00:00:14 v #305 > > sb.AppendLine() |> ignore 00:00:14 v #306 > > sb.ToString() 00:00:14 v #307 > > 00:00:14 v #308 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:14 v #309 > > //// test 00:00:14 v #310 > > 00:00:14 v #311 > > let rot = { a = 0.0; b = 0.0; c = 0.0 } 00:00:14 v #312 > > let frame = generateFrame rot 00:00:14 v #313 > > Console.Write frame 00:00:14 v #314 > > 00:00:14 v #315 > > ── [ 41.97ms - stdout ] ──────────────────────────────────────────────────────── 00:00:14 v #316 > > │ 00:00:14 v #317 > > ................................................................................ 00:00:14 v #318 > > ................................................................................ 00:00:14 v #319 > > │ 00:00:14 v #320 > > ................................................................................ 00:00:14 v #321 > > ................................................................................ 00:00:14 v #322 > > │ 00:00:14 v #323 > > ................................................................................ 00:00:14 v #324 > > ................................................................................ 00:00:14 v #325 > > │ 00:00:14 v #326 > > ................................................................................ 00:00:14 v #327 > > ................................................................................ 00:00:14 v #328 > > │ 00:00:14 v #329 > > ................................................................................ 00:00:14 v #330 > > ................................................................................ 00:00:14 v #331 > > │ 00:00:14 v #332 > > ................................................................................ 00:00:14 v #333 > > ................................................................................ 00:00:14 v #334 > > │ 00:00:14 v #335 > > ................................................................................ 00:00:14 v #336 > > ................................................................................ 00:00:14 v #337 > > │ 00:00:14 v #338 > > ................................................................................ 00:00:14 v #339 > > ................................................................................ 00:00:14 v #340 > > │ 00:00:14 v #341 > > ................................................................................ 00:00:14 v #342 > > ................................................................................ 00:00:14 v #343 > > │ 00:00:14 v #344 > > ................................................................................ 00:00:14 v #345 > > ................................................................................ 00:00:14 v #346 > > │ 00:00:14 v #347 > > ................................................................................ 00:00:14 v #348 > > ................................................................................ 00:00:14 v #349 > > │ 00:00:14 v #350 > > ................................................................................ 00:00:14 v #351 > > ................................................................................ 00:00:14 v #352 > > │ 00:00:14 v #353 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #354 > > ................................................................................ 00:00:14 v #355 > > │ 00:00:14 v #356 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #357 > > ................................................................................ 00:00:14 v #358 > > │ 00:00:14 v #359 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #360 > > ................................................................................ 00:00:14 v #361 > > │ 00:00:14 v #362 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #363 > > ................................................................................ 00:00:14 v #364 > > │ 00:00:14 v #365 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #366 > > ................................................................................ 00:00:14 v #367 > > │ 00:00:14 v #368 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #369 > > .@@@@@@@@@@@@@@@@@$............................................................. 00:00:14 v #370 > > │ 00:00:14 v #371 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #372 > > .@@@@@@@@@@@@@@@@@$............................................................. 00:00:14 v #373 > > │ 00:00:14 v #374 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #375 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... 00:00:14 v #376 > > │ 00:00:14 v #377 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #378 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... 00:00:14 v #379 > > │ 00:00:14 v #380 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #381 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... 00:00:14 v #382 > > │ 00:00:14 v #383 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #384 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... 00:00:14 v #385 > > │ 00:00:14 v #386 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #387 > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... 00:00:14 v #388 > > │ 00:00:14 v #389 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #390 > > .@@@@@@@@@@@@@@@@@$................+++++++++.................................... 00:00:14 v #391 > > │ 00:00:14 v #392 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #393 > > .@@@@@@@@@@@@@@@@@$............................................................. 00:00:14 v #394 > > │ 00:00:14 v #395 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #396 > > .+++++++++++++++++$............................................................. 00:00:14 v #397 > > │ 00:00:14 v #398 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #399 > > ................................................................................ 00:00:14 v #400 > > │ 00:00:14 v #401 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #402 > > ................................................................................ 00:00:14 v #403 > > │ 00:00:14 v #404 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #405 > > ................................................................................ 00:00:14 v #406 > > │ 00:00:14 v #407 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #408 > > ................................................................................ 00:00:14 v #409 > > │ 00:00:14 v #410 > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... 00:00:14 v #411 > > ................................................................................ 00:00:14 v #412 > > │ 00:00:14 v #413 > > ....................++++++++++++++++++++++++++++++++++++++++.................... 00:00:14 v #414 > > ................................................................................ 00:00:14 v #415 > > │ 00:00:14 v #416 > > ................................................................................ 00:00:14 v #417 > > ................................................................................ 00:00:14 v #418 > > │ 00:00:14 v #419 > > ................................................................................ 00:00:14 v #420 > > ................................................................................ 00:00:14 v #421 > > │ 00:00:14 v #422 > > ................................................................................ 00:00:14 v #423 > > ................................................................................ 00:00:14 v #424 > > │ 00:00:14 v #425 > > ................................................................................ 00:00:14 v #426 > > ................................................................................ 00:00:14 v #427 > > │ 00:00:14 v #428 > > ................................................................................ 00:00:14 v #429 > > ................................................................................ 00:00:14 v #430 > > │ 00:00:14 v #431 > > ................................................................................ 00:00:14 v #432 > > ................................................................................ 00:00:14 v #433 > > │ 00:00:14 v #434 > > ................................................................................ 00:00:14 v #435 > > ................................................................................ 00:00:14 v #436 > > │ 00:00:14 v #437 > > ................................................................................ 00:00:14 v #438 > > ................................................................................ 00:00:14 v #439 > > │ 00:00:14 v #440 > > ................................................................................ 00:00:14 v #441 > > ................................................................................ 00:00:14 v #442 > > │ 00:00:14 v #443 > > ................................................................................ 00:00:14 v #444 > > ................................................................................ 00:00:14 v #445 > > │ 00:00:14 v #446 > > ................................................................................ 00:00:14 v #447 > > ................................................................................ 00:00:14 v #448 > > │ 00:00:14 v #449 > > 00:00:14 v #450 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #451 > > inl generate_frame rot = 00:00:14 v #452 > > inl updates : seq.seq' (int * (f64 * char)) = 00:00:14 v #453 > > inl get_cube_points' cube : seq.seq' (int * (f64 * char)) = 00:00:14 v #454 > > get_cube_points cube rot 00:00:14 v #455 > > inl cubes = get_cubes () |> listm'.box 00:00:14 v #456 > > backend_switch { 00:00:14 v #457 > > Fsharp = fun () => 00:00:14 v #458 > > inl get_cube_points' = join get_cube_points' 00:00:14 v #459 > > (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int * 00:00:14 v #460 > > (f64 * char)) 00:00:14 v #461 > > Python = fun () => 00:00:14 v #462 > > $'cubes = !cubes ' 00:00:14 v #463 > > $'get_cube_points = !get_cube_points' ' 00:00:14 v #464 > > $'[[x for cube in cubes for x in get_cube_points(*cube)]]' : 00:00:14 v #465 > > seq.seq' (int * (f64 * char)) 00:00:14 v #466 > > } 00:00:14 v #467 > > inl none : _ (f64 * char) = None 00:00:14 v #468 > > inl width = get_width () 00:00:14 v #469 > > inl height = get_height () 00:00:14 v #470 > > inl buffer = 00:00:14 v #471 > > backend_switch { 00:00:14 v #472 > > Fsharp = fun () => 00:00:14 v #473 > > $'Array.create (!width * !height) !none ' : a int (option (f64 * 00:00:14 v #474 > > char)) 00:00:14 v #475 > > Python = fun () => 00:00:14 v #476 > > $'[[!none for _ in range(!width * !height)]]' : a int (option 00:00:14 v #477 > > (f64 * char)) 00:00:14 v #478 > > } 00:00:14 v #479 > > 00:00:14 v #480 > > inl fn idx ((ooz : f64), (ch : char)) = 00:00:14 v #481 > > match buffer |> am'.index idx with 00:00:14 v #482 > > | Some (prev_ooz, _) when prev_ooz >= ooz => () 00:00:14 v #483 > > | _ => 00:00:14 v #484 > > inl x = (ooz, ch) |> Some 00:00:14 v #485 > > backend_switch { 00:00:14 v #486 > > Fsharp = fun () => 00:00:14 v #487 > > $'!buffer.[[!idx]] <- !x ' : () 00:00:14 v #488 > > Python = fun () => 00:00:14 v #489 > > $'!buffer[[!idx]] = !x ' : () 00:00:14 v #490 > > } 00:00:14 v #491 > > backend_switch { 00:00:14 v #492 > > Fsharp = fun () => 00:00:14 v #493 > > updates 00:00:14 v #494 > > |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' : 00:00:14 v #495 > > () 00:00:14 v #496 > > Python = fun () => 00:00:14 v #497 > > $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : () 00:00:14 v #498 > > } 00:00:14 v #499 > > 00:00:14 v #500 > > inl sb = "" |> sm'.string_builder 00:00:14 v #501 > > inl fn1 row = 00:00:14 v #502 > > inl fn2 col = 00:00:14 v #503 > > inl idx = col + row * width 00:00:14 v #504 > > inl ch = 00:00:14 v #505 > > match buffer |> am'.index idx with 00:00:14 v #506 > > | Some (_, ch) => ch 00:00:14 v #507 > > | None => get_background_char () 00:00:14 v #508 > > sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore 00:00:14 v #509 > > 00:00:14 v #510 > > backend_switch { 00:00:14 v #511 > > Fsharp = fun () => 00:00:14 v #512 > > $'for col in 0 .. (!width - 1) do !fn2 col' : () 00:00:14 v #513 > > Python = fun () => 00:00:14 v #514 > > $'for col in range(!width): !fn2(col)' : () 00:00:14 v #515 > > } 00:00:14 v #516 > > sb |> sm'.builder_append_line |> ignore 00:00:14 v #517 > > 00:00:14 v #518 > > backend_switch { 00:00:14 v #519 > > Fsharp = fun () => 00:00:14 v #520 > > $'for row in 0 .. (!height - 1) do !fn1 row' : () 00:00:14 v #521 > > Python = fun () => 00:00:14 v #522 > > $'for row in range(!height): !fn1(row)' : () 00:00:14 v #523 > > } 00:00:14 v #524 > > sb |> sm'.obj_to_string 00:00:14 v #525 > > 00:00:14 v #526 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:14 v #527 > > //// test 00:00:14 v #528 > > ///! fsharp 00:00:14 v #529 > > ///! cuda 00:00:14 v #530 > > ///! rust 00:00:14 v #531 > > ///! typescript 00:00:14 v #532 > > ///! python 00:00:14 v #533 > > 00:00:14 v #534 > > { a = 0.0; b = 0.0; c = 0.0 } 00:00:14 v #535 > > |> generate_frame 00:00:14 v #536 > > |> console.write_line 00:00:26 v #537 > > 00:00:26 v #538 > > ── [ 11.36s - return value ] ─────────────────────────────────────────────────── 00:00:26 v #539 > > │ " 00:00:26 v #540 > > │ .py output (Cuda): 00:00:26 v #541 > > │ 00:00:26 v #542 > > ................................................................................ 00:00:26 v #543 > > ................................................................................ 00:00:26 v #544 > > │ 00:00:26 v #545 > > ................................................................................ 00:00:26 v #546 > > ................................................................................ 00:00:26 v #547 > > │ 00:00:26 v #548 > > ................................................................................ 00:00:26 v #549 > > ................................................................................ 00:00:26 v #550 > > │ 00:00:26 v #551 > > ................................................................................ 00:00:26 v #552 > > ................................................................................ 00:00:26 v #553 > > │ 00:00:26 v #554 > > ................................................................................ 00:00:26 v #555 > > ................................................................................ 00:00:26 v #556 > > │ 00:00:26 v #557 > > ................................................................................ 00:00:26 v #558 > > ................................................................................ 00:00:26 v #559 > > │ 00:00:26 v #560 > > ................................................................................ 00:00:26 v #561 > > ................................................................................ 00:00:26 v #562 > > │ 00:00:26 v #563 > > ................................................................................ 00:00:26 v #564 > > ................................................................................ 00:00:26 v #565 > > │ 00:00:26 v #566 > > ................................................................................ 00:00:26 v #567 > > ................................................................................ 00:00:26 v #568 > > │ 00:00:26 v #569 > > ............................................................................. 00:00:26 v #570 > > │ 00:00:26 v #571 > > ................................................................................ 00:00:26 v #572 > > ................................................................................ 00:00:26 v #573 > > │ 00:00:26 v #574 > > ................................................................................ 00:00:26 v #575 > > ................................................................................ 00:00:26 v #576 > > │ 00:00:26 v #577 > > ................................................................................ 00:00:26 v #578 > > ................................................................................ 00:00:26 v #579 > > │ 00:00:26 v #580 > > ................................................................................ 00:00:26 v #581 > > ................................................................................ 00:00:26 v #582 > > │ 00:00:26 v #583 > > ................................................................................ 00:00:26 v #584 > > ................................................................................ 00:00:26 v #585 > > │ 00:00:26 v #586 > > ................................................................................ 00:00:26 v #587 > > ................................................................................ 00:00:26 v #588 > > │ 00:00:26 v #589 > > ................................................................................ 00:00:26 v #590 > > ................................................................................ 00:00:26 v #591 > > │ 00:00:26 v #592 > > ................................................................................ 00:00:26 v #593 > > ................................................................................ 00:00:26 v #594 > > │ 00:00:26 v #595 > > ................................................................................ 00:00:26 v #596 > > ................................................................................ 00:00:26 v #597 > > │ 00:00:26 v #598 > > │ 00:00:26 v #599 > > │ 00:00:26 v #600 > > │ " 00:00:26 v #601 > > │ 00:00:26 v #602 > > 00:00:26 v #603 > > ── [ 11.36s - stdout ] ───────────────────────────────────────────────────────── 00:00:26 v #604 > > │ .fsx output: 00:00:26 v #605 > > │ 00:00:26 v #606 > > ................................................................................ 00:00:26 v #607 > > ................................................................................ 00:00:26 v #608 > > │ 00:00:26 v #609 > > ................................................................................ 00:00:26 v #610 > > ................................................................................ 00:00:26 v #611 > > │ 00:00:26 v #612 > > ................................................................................ 00:00:26 v #613 > > ................................................................................ 00:00:26 v #614 > > │ 00:00:26 v #615 > > ................................................................................ 00:00:26 v #616 > > ................................................................................ 00:00:26 v #617 > > │ 00:00:26 v #618 > > ................................................................................ 00:00:26 v #619 > > ................................................................................ 00:00:26 v #620 > > │ 00:00:26 v #621 > > ................................................................................ 00:00:26 v #622 > > ................................................................................ 00:00:26 v #623 > > │ 00:00:26 v #624 > > ................................................................................ 00:00:26 v #625 > > ................................................................................ 00:00:26 v #626 > > │ 00:00:26 v #627 > > ................................................................................ 00:00:26 v #628 > > ................................................................................ 00:00:26 v #629 > > │ 00:00:26 v #630 > > ................................................................................ 00:00:26 v #631 > > ................................................................................ 00:00:26 v #632 > > │ 00:00:26 v #633 > > ................................................................................ 00:00:26 v #634 > > ................................................................................ 00:00:26 v #635 > > │ 00:00:26 v #636 > > ................................................................................ 00:00:26 v #637 > > ................................................................................ 00:00:26 v #638 > > │ 00:00:26 v #639 > > ................................................................................ 00:00:26 v #640 > > ................................................................................ 00:00:26 v #641 > > │ 00:00:26 v #642 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #643 > > ................................................................................ 00:00:26 v #644 > > │ 00:00:26 v #645 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #646 > > ................................................................................ 00:00:26 v #647 > > │ 00:00:26 v #648 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #649 > > ................................................................................ 00:00:26 v #650 > > │ 00:00:26 v #651 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #652 > > ................................................................................ 00:00:26 v #653 > > │ 00:00:26 v #654 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #655 > > ................................................................................ 00:00:26 v #656 > > │ 00:00:26 v #657 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #658 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:26 v #659 > > │ 00:00:26 v #660 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #661 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:26 v #662 > > │ 00:00:26 v #663 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #664 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:26 v #665 > > │ 00:00:26 v #666 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #667 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:26 v #668 > > │ 00:00:26 v #669 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #670 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:26 v #671 > > │ 00:00:26 v #672 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #673 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:26 v #674 > > │ 00:00:26 v #675 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #676 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:26 v #677 > > │ 00:00:26 v #678 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #679 > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... 00:00:26 v #680 > > │ 00:00:26 v #681 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #682 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:26 v #683 > > │ 00:00:26 v #684 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #685 > > .<<<<<<<<<<<<<<<<<\............................................................. 00:00:26 v #686 > > │ 00:00:26 v #687 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #688 > > ................................................................................ 00:00:26 v #689 > > │ 00:00:26 v #690 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #691 > > ................................................................................ 00:00:26 v #692 > > │ 00:00:26 v #693 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #694 > > ................................................................................ 00:00:26 v #695 > > │ 00:00:26 v #696 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #697 > > ................................................................................ 00:00:26 v #698 > > │ 00:00:26 v #699 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:26 v #700 > > ................................................................................ 00:00:26 v #701 > > │ 00:00:26 v #702 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... 00:00:26 v #703 > > ................................................................................ 00:00:26 v #704 > > │ 00:00:26 v #705 > > ................................................................................ 00:00:26 v #706 > > ................................................................................ 00:00:26 v #707 > > │ 00:00:26 v #708 > > ................................................................................ 00:00:26 v #709 > > ................................................................................ 00:00:26 v #710 > > │ 00:00:26 v #711 > > ................................................................................ 00:00:26 v #712 > > ................................................................................ 00:00:26 v #713 > > │ 00:00:26 v #714 > > ................................................................................ 00:00:26 v #715 > > ................................................................................ 00:00:26 v #716 > > │ 00:00:26 v #717 > > ................................................................................ 00:00:26 v #718 > > ................................................................................ 00:00:26 v #719 > > │ 00:00:26 v #720 > > ................................................................................ 00:00:26 v #721 > > ................................................................................ 00:00:26 v #722 > > │ 00:00:26 v #723 > > ................................................................................ 00:00:26 v #724 > > ................................................................................ 00:00:26 v #725 > > │ 00:00:26 v #726 > > ................................................................................ 00:00:26 v #727 > > ................................................................................ 00:00:26 v #728 > > │ 00:00:26 v #729 > > ................................................................................ 00:00:26 v #730 > > ................................................................................ 00:00:26 v #731 > > │ 00:00:26 v #732 > > ................................................................................ 00:00:26 v #733 > > ................................................................................ 00:00:26 v #734 > > │ 00:00:26 v #735 > > ................................................................................ 00:00:26 v #736 > > ................................................................................ 00:00:26 v #737 > > │ 00:00:26 v #738 > > │ 00:00:26 v #739 > > 00:00:26 v #740 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #741 > > │ ### main_loop 00:00:26 v #742 > > 00:00:26 v #743 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:26 v #744 > > let rec mainLoop rot = async { 00:00:26 v #745 > > let frame = generateFrame rot 00:00:26 v #746 > > // Console.SetCursorPosition(0, 0) 00:00:26 v #747 > > Console.Write(frame) 00:00:26 v #748 > > let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } 00:00:26 v #749 > > do! Async.Sleep 16 00:00:26 v #750 > > return! mainLoop rot' 00:00:26 v #751 > > } 00:00:26 v #752 > > 00:00:26 v #753 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #754 > > let rec main_loop max i rot = 00:00:26 v #755 > > fun () => 00:00:26 v #756 > > inl rot = join rot 00:00:26 v #757 > > inl frame = rot |> generate_frame 00:00:26 v #758 > > if max < 0 then 00:00:26 v #759 > > run_target function 00:00:26 v #760 > > | Fsharp (Native) => fun () => 00:00:26 v #761 > > $'System.Console.SetCursorPosition (0, 0)' 00:00:26 v #762 > > | Rust _ => fun () => 00:00:26 v #763 > > open rust.rust_operators 00:00:26 v #764 > > !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"') 00:00:26 v #765 > > | TypeScript _ => fun () => 00:00:26 v #766 > > open typescript_operators 00:00:26 v #767 > > !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"') 00:00:26 v #768 > > | Python _ => fun () => 00:00:26 v #769 > > open python_operators 00:00:26 v #770 > > // global "import sys" 00:00:26 v #771 > > !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"') 00:00:26 v #772 > > | Cuda _ => fun () => 00:00:26 v #773 > > global "import sys" 00:00:26 v #774 > > $'sys.stdout.write("\\033[[1;1H")' 00:00:26 v #775 > > | _ => fun () => () 00:00:26 v #776 > > frame |> console.write_line 00:00:26 v #777 > > async.sleep 1 |> async.do 00:00:26 v #778 > > if max > 0 && i >= max 00:00:26 v #779 > > then () 00:00:26 v #780 > > else 00:00:26 v #781 > > { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } 00:00:26 v #782 > > |> main_loop max (i + 1) 00:00:26 v #783 > > |> async.return_await' 00:00:26 v #784 > > |> async.new_async_unit 00:00:26 v #785 > > 00:00:26 v #786 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:26 v #787 > > │ ### main 00:00:26 v #788 > > 00:00:26 v #789 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:26 v #790 > > // [[<EntryPoint>]] 00:00:26 v #791 > > let main argv = 00:00:26 v #792 > > // Console.CursorVisible <- false 00:00:26 v #793 > > Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 }) 00:00:26 v #794 > > System.Threading.Thread.Sleep(1000) 00:00:26 v #795 > > 00:00:26 v #796 > > ── fsharp ────────────────────────────────────────────────────────────────────── 00:00:26 v #797 > > // main [[||]] 00:00:26 v #798 > > 00:00:26 v #799 > > ── spiral ────────────────────────────────────────────────────────────────────── 00:00:26 v #800 > > inl main (_args : array_base string) = 00:00:26 v #801 > > inl console = 00:00:26 v #802 > > run_target function 00:00:26 v #803 > > | Fsharp (Wasm) => fun () => false 00:00:26 v #804 > > | _ => fun () => 00:00:26 v #805 > > ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length 00:00:26 v #806 > > |> (=) 0i32) 00:00:26 v #807 > > && ("AUTOMATION" |> env.get_environment_variable |> sm'.length 00:00:26 v #808 > > |> (=) 0i32) 00:00:26 v #809 > > if console then 00:00:26 v #810 > > run_target function 00:00:26 v #811 > > | Fsharp (Native) => fun () => $'System.Console.CursorVisible <- 00:00:26 v #812 > > false' 00:00:26 v #813 > > | Rust _ => fun () => 00:00:26 v #814 > > open rust.rust_operators 00:00:26 v #815 > > !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"') 00:00:26 v #816 > > | TypeScript _ => fun () => 00:00:26 v #817 > > open typescript_operators 00:00:26 v #818 > > !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"') 00:00:26 v #819 > > | Python _ => fun () => 00:00:26 v #820 > > open python_operators 00:00:26 v #821 > > python.import_all "sys" 00:00:26 v #822 > > !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"') 00:00:26 v #823 > > | _ => fun () => () 00:00:26 v #824 > > main_loop (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 } 00:00:26 v #825 > > |> fun x => 00:00:26 v #826 > > run_target_args' x function 00:00:26 v #827 > > | Fsharp (Wasm) 00:00:26 v #828 > > | TypeScript _ => fun x => 00:00:26 v #829 > > x 00:00:26 v #830 > > |> async.start_child 00:00:26 v #831 > > |> ignore 00:00:26 v #832 > > | Python _ => fun x => 00:00:26 v #833 > > x 00:00:26 v #834 > > |> async.start_immediate 00:00:26 v #835 > > threading.sleep' 2000 00:00:26 v #836 > > | _ => fun x => 00:00:26 v #837 > > x 00:00:26 v #838 > > |> async.run_synchronously 00:00:26 v #839 > > 00:00:26 v #840 > > inl main () = 00:00:26 v #841 > > backend_switch { 00:00:26 v #842 > > Fsharp = fun () => 00:00:26 v #843 > > $'let main_ = !main ' 00:00:26 v #844 > > $'#if \!FABLE_COMPILER_RUST' 00:00:26 v #845 > > $'main_ [[||]]' : () 00:00:26 v #846 > > $'#else' 00:00:26 v #847 > > $'let main args = main_ [[||]]; 0' : () 00:00:26 v #848 > > $'#endif' : () 00:00:26 v #849 > > Python = fun () => 00:00:26 v #850 > > main ;[[]] 00:00:26 v #851 > > } 00:00:26 v #852 > > : () 00:00:28 v #853 > > 00:00:28 v #854 > > ── [ 1.68s - stdout ] ────────────────────────────────────────────────────────── 00:00:28 v #855 > > │ 00:00:28 v #856 > > ................................................................................ 00:00:28 v #857 > > ................................................................................ 00:00:28 v #858 > > │ 00:00:28 v #859 > > ................................................................................ 00:00:28 v #860 > > ................................................................................ 00:00:28 v #861 > > │ 00:00:28 v #862 > > ................................................................................ 00:00:28 v #863 > > ................................................................................ 00:00:28 v #864 > > │ 00:00:28 v #865 > > ................................................................................ 00:00:28 v #866 > > ................................................................................ 00:00:28 v #867 > > │ 00:00:28 v #868 > > ................................................................................ 00:00:28 v #869 > > ................................................................................ 00:00:28 v #870 > > │ 00:00:28 v #871 > > ................................................................................ 00:00:28 v #872 > > ................................................................................ 00:00:28 v #873 > > │ 00:00:28 v #874 > > ................................................................................ 00:00:28 v #875 > > ................................................................................ 00:00:28 v #876 > > │ 00:00:28 v #877 > > ................................................................................ 00:00:28 v #878 > > ................................................................................ 00:00:28 v #879 > > │ 00:00:28 v #880 > > ................................................................................ 00:00:28 v #881 > > ................................................................................ 00:00:28 v #882 > > │ 00:00:28 v #883 > > ................................................................................ 00:00:28 v #884 > > ................................................................................ 00:00:28 v #885 > > │ 00:00:28 v #886 > > ................................................................................ 00:00:28 v #887 > > ................................................................................ 00:00:28 v #888 > > │ 00:00:28 v #889 > > ................................................................................ 00:00:28 v #890 > > ................................................................................ 00:00:28 v #891 > > │ 00:00:28 v #892 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #893 > > ................................................................................ 00:00:28 v #894 > > │ 00:00:28 v #895 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #896 > > ................................................................................ 00:00:28 v #897 > > │ 00:00:28 v #898 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #899 > > ................................................................................ 00:00:28 v #900 > > │ 00:00:28 v #901 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #902 > > ................................................................................ 00:00:28 v #903 > > │ 00:00:28 v #904 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #905 > > ................................................................................ 00:00:28 v #906 > > │ 00:00:28 v #907 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #908 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:28 v #909 > > │ 00:00:28 v #910 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #911 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:28 v #912 > > │ 00:00:28 v #913 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #914 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:28 v #915 > > │ 00:00:28 v #916 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #917 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:28 v #918 > > │ 00:00:28 v #919 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #920 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:28 v #921 > > │ 00:00:28 v #922 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #923 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:28 v #924 > > │ 00:00:28 v #925 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #926 > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... 00:00:28 v #927 > > │ 00:00:28 v #928 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #929 > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... 00:00:28 v #930 > > │ 00:00:28 v #931 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #932 > > .;;;;;;;;;;;;;;;;;\............................................................. 00:00:28 v #933 > > │ 00:00:28 v #934 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #935 > > .<<<<<<<<<<<<<<<<<\............................................................. 00:00:28 v #936 > > │ 00:00:28 v #937 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #938 > > ................................................................................ 00:00:28 v #939 > > │ 00:00:28 v #940 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #941 > > ................................................................................ 00:00:28 v #942 > > │ 00:00:28 v #943 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #944 > > ................................................................................ 00:00:28 v #945 > > │ 00:00:28 v #946 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #947 > > ................................................................................ 00:00:28 v #948 > > │ 00:00:28 v #949 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #950 > > ................................................................................ 00:00:28 v #951 > > │ 00:00:28 v #952 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... 00:00:28 v #953 > > ................................................................................ 00:00:28 v #954 > > │ 00:00:28 v #955 > > ................................................................................ 00:00:28 v #956 > > ................................................................................ 00:00:28 v #957 > > │ 00:00:28 v #958 > > ................................................................................ 00:00:28 v #959 > > ................................................................................ 00:00:28 v #960 > > │ 00:00:28 v #961 > > ................................................................................ 00:00:28 v #962 > > ................................................................................ 00:00:28 v #963 > > │ 00:00:28 v #964 > > ................................................................................ 00:00:28 v #965 > > ................................................................................ 00:00:28 v #966 > > │ 00:00:28 v #967 > > ................................................................................ 00:00:28 v #968 > > ................................................................................ 00:00:28 v #969 > > │ 00:00:28 v #970 > > ................................................................................ 00:00:28 v #971 > > ................................................................................ 00:00:28 v #972 > > │ 00:00:28 v #973 > > ................................................................................ 00:00:28 v #974 > > ................................................................................ 00:00:28 v #975 > > │ 00:00:28 v #976 > > ................................................................................ 00:00:28 v #977 > > ................................................................................ 00:00:28 v #978 > > │ 00:00:28 v #979 > > ................................................................................ 00:00:28 v #980 > > ................................................................................ 00:00:28 v #981 > > │ 00:00:28 v #982 > > ................................................................................ 00:00:28 v #983 > > ................................................................................ 00:00:28 v #984 > > │ 00:00:28 v #985 > > ................................................................................ 00:00:28 v #986 > > ................................................................................ 00:00:28 v #987 > > │ 00:00:28 v #988 > > │ 00:00:28 v #989 > > ................................................................................ 00:00:28 v #990 > > ................................................................................ 00:00:28 v #991 > > │ 00:00:28 v #992 > > ................................................................................ 00:00:28 v #993 > > ................................................................................ 00:00:28 v #994 > > │ 00:00:28 v #995 > > ................................................................................ 00:00:28 v #996 > > ................................................................................ 00:00:28 v #997 > > │ 00:00:28 v #998 > > ................................................................................ 00:00:28 v #999 > > ................................................................................ 00:00:28 v #1000 > > │ 00:00:28 v #1001 > > ................................................................................ 00:00:28 v #1002 > > ................................................................................ 00:00:28 v #1003 > > │ 00:00:28 v #1004 > > ................................................................................ 00:00:28 v #1005 > > ................................................................................ 00:00:28 v #1006 > > │ 00:00:28 v #1007 > > ................................................................................ 00:00:28 v #1008 > > ................................................................................ 00:00:28 v #1009 > > │ 00:00:28 v #1010 > > ................................................................................ 00:00:28 v #1011 > > ................................................................................ 00:00:28 v #1012 > > │ 00:00:28 v #1013 > > ................................................................................ 00:00:28 v #1014 > > ................................................................................ 00:00:28 v #1015 > > │ 00:00:28 v #1016 > > ................................................................................ 00:00:28 v #1017 > > ................................................................................ 00:00:28 v #1018 > > │ 00:00:28 v #1019 > > ................................................................................ 00:00:28 v #1020 > > ................................................................................ 00:00:28 v #1021 > > │ 00:00:28 v #1022 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1023 > > ................................................................................ 00:00:28 v #1024 > > │ 00:00:28 v #1025 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1026 > > ................................................................................ 00:00:28 v #1027 > > │ 00:00:28 v #1028 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1029 > > ................................................................................ 00:00:28 v #1030 > > │ 00:00:28 v #1031 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1032 > > ................................................................................ 00:00:28 v #1033 > > │ 00:00:28 v #1034 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1035 > > ................................................................................ 00:00:28 v #1036 > > │ 00:00:28 v #1037 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1038 > > ................................................................................ 00:00:28 v #1039 > > │ 00:00:28 v #1040 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1041 > > .;;;;;;;;;;;;;;;;;;\............................................................ 00:00:28 v #1042 > > │ 00:00:28 v #1043 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1044 > > .;;;;;;;;;;;;;;;;;;\............................................................ 00:00:28 v #1045 > > │ 00:00:28 v #1046 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1047 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... 00:00:28 v #1048 > > │ 00:00:28 v #1049 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1050 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... 00:00:28 v #1051 > > │ 00:00:28 v #1052 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1053 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... 00:00:28 v #1054 > > │ 00:00:28 v #1055 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1056 > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... 00:00:28 v #1057 > > │ 00:00:28 v #1058 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1059 > > .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<................................... 00:00:28 v #1060 > > │ 00:00:28 v #1061 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1062 > > .;;;;;;;;;;;;;;;;;;;................<<<<<....................................... 00:00:28 v #1063 > > │ 00:00:28 v #1064 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1065 > > .;;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1066 > > │ 00:00:28 v #1067 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1068 > > .<<<<<<<<<<<<<<<<<<<............................................................ 00:00:28 v #1069 > > │ 00:00:28 v #1070 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1071 > > ................................................................................ 00:00:28 v #1072 > > │ 00:00:28 v #1073 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1074 > > ................................................................................ 00:00:28 v #1075 > > │ 00:00:28 v #1076 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1077 > > ................................................................................ 00:00:28 v #1078 > > │ 00:00:28 v #1079 > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1080 > > ................................................................................ 00:00:28 v #1081 > > │ 00:00:28 v #1082 > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.................. 00:00:28 v #1083 > > ................................................................................ 00:00:28 v #1084 > > │ 00:00:28 v #1085 > > ................................................................................ 00:00:28 v #1086 > > ................................................................................ 00:00:28 v #1087 > > │ 00:00:28 v #1088 > > ................................................................................ 00:00:28 v #1089 > > ................................................................................ 00:00:28 v #1090 > > │ 00:00:28 v #1091 > > ................................................................................ 00:00:28 v #1092 > > ................................................................................ 00:00:28 v #1093 > > │ 00:00:28 v #1094 > > ................................................................................ 00:00:28 v #1095 > > ................................................................................ 00:00:28 v #1096 > > │ 00:00:28 v #1097 > > ................................................................................ 00:00:28 v #1098 > > ................................................................................ 00:00:28 v #1099 > > │ 00:00:28 v #1100 > > ................................................................................ 00:00:28 v #1101 > > ................................................................................ 00:00:28 v #1102 > > │ 00:00:28 v #1103 > > ................................................................................ 00:00:28 v #1104 > > ................................................................................ 00:00:28 v #1105 > > │ 00:00:28 v #1106 > > ................................................................................ 00:00:28 v #1107 > > ................................................................................ 00:00:28 v #1108 > > │ 00:00:28 v #1109 > > ................................................................................ 00:00:28 v #1110 > > ................................................................................ 00:00:28 v #1111 > > │ 00:00:28 v #1112 > > ................................................................................ 00:00:28 v #1113 > > ................................................................................ 00:00:28 v #1114 > > │ 00:00:28 v #1115 > > ................................................................................ 00:00:28 v #1116 > > ................................................................................ 00:00:28 v #1117 > > │ 00:00:28 v #1118 > > ................................................................................ 00:00:28 v #1119 > > ................................................................................ 00:00:28 v #1120 > > │ 00:00:28 v #1121 > > │ 00:00:28 v #1122 > > ................................................................................ 00:00:28 v #1123 > > ................................................................................ 00:00:28 v #1124 > > │ 00:00:28 v #1125 > > ................................................................................ 00:00:28 v #1126 > > ................................................................................ 00:00:28 v #1127 > > │ 00:00:28 v #1128 > > ................................................................................ 00:00:28 v #1129 > > ................................................................................ 00:00:28 v #1130 > > │ 00:00:28 v #1131 > > ................................................................................ 00:00:28 v #1132 > > ................................................................................ 00:00:28 v #1133 > > │ 00:00:28 v #1134 > > ................................................................................ 00:00:28 v #1135 > > ................................................................................ 00:00:28 v #1136 > > │ 00:00:28 v #1137 > > ................................................................................ 00:00:28 v #1138 > > ................................................................................ 00:00:28 v #1139 > > │ 00:00:28 v #1140 > > ................................................................................ 00:00:28 v #1141 > > ................................................................................ 00:00:28 v #1142 > > │ 00:00:28 v #1143 > > ................................................................................ 00:00:28 v #1144 > > ................................................................................ 00:00:28 v #1145 > > │ 00:00:28 v #1146 > > ................................................................................ 00:00:28 v #1147 > > ................................................................................ 00:00:28 v #1148 > > │ 00:00:28 v #1149 > > ................................................................................ 00:00:28 v #1150 > > ................................................................................ 00:00:28 v #1151 > > │ 00:00:28 v #1152 > > ................................................................................ 00:00:28 v #1153 > > ................................................................................ 00:00:28 v #1154 > > │ 00:00:28 v #1155 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1156 > > ................................................................................ 00:00:28 v #1157 > > │ 00:00:28 v #1158 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1159 > > ................................................................................ 00:00:28 v #1160 > > │ 00:00:28 v #1161 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1162 > > ................................................................................ 00:00:28 v #1163 > > │ 00:00:28 v #1164 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1165 > > ................................................................................ 00:00:28 v #1166 > > │ 00:00:28 v #1167 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1168 > > ................................................................................ 00:00:28 v #1169 > > │ 00:00:28 v #1170 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1171 > > ................................................................................ 00:00:28 v #1172 > > │ 00:00:28 v #1173 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1174 > > .;;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1175 > > │ 00:00:28 v #1176 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1177 > > .;;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1178 > > │ 00:00:28 v #1179 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1180 > > .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... 00:00:28 v #1181 > > │ 00:00:28 v #1182 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1183 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... 00:00:28 v #1184 > > │ 00:00:28 v #1185 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1186 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... 00:00:28 v #1187 > > │ 00:00:28 v #1188 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1189 > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... 00:00:28 v #1190 > > │ 00:00:28 v #1191 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1192 > > .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<................................... 00:00:28 v #1193 > > │ 00:00:28 v #1194 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1195 > > ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<.................................... 00:00:28 v #1196 > > │ 00:00:28 v #1197 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1198 > > ..;;;;;;;;;;<<<<<<<<............................................................ 00:00:28 v #1199 > > │ 00:00:28 v #1200 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1201 > > ..<<<<<<<<<<.................................................................... 00:00:28 v #1202 > > │ 00:00:28 v #1203 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1204 > > ................................................................................ 00:00:28 v #1205 > > │ 00:00:28 v #1206 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1207 > > ................................................................................ 00:00:28 v #1208 > > │ 00:00:28 v #1209 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1210 > > ................................................................................ 00:00:28 v #1211 > > │ 00:00:28 v #1212 > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\................. 00:00:28 v #1213 > > ................................................................................ 00:00:28 v #1214 > > │ 00:00:28 v #1215 > > .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<............................... 00:00:28 v #1216 > > ................................................................................ 00:00:28 v #1217 > > │ 00:00:28 v #1218 > > ................................................................................ 00:00:28 v #1219 > > ................................................................................ 00:00:28 v #1220 > > │ 00:00:28 v #1221 > > ................................................................................ 00:00:28 v #1222 > > ................................................................................ 00:00:28 v #1223 > > │ 00:00:28 v #1224 > > ................................................................................ 00:00:28 v #1225 > > ................................................................................ 00:00:28 v #1226 > > │ 00:00:28 v #1227 > > ................................................................................ 00:00:28 v #1228 > > ................................................................................ 00:00:28 v #1229 > > │ 00:00:28 v #1230 > > ................................................................................ 00:00:28 v #1231 > > ................................................................................ 00:00:28 v #1232 > > │ 00:00:28 v #1233 > > ................................................................................ 00:00:28 v #1234 > > ................................................................................ 00:00:28 v #1235 > > │ 00:00:28 v #1236 > > ................................................................................ 00:00:28 v #1237 > > ................................................................................ 00:00:28 v #1238 > > │ 00:00:28 v #1239 > > ................................................................................ 00:00:28 v #1240 > > ................................................................................ 00:00:28 v #1241 > > │ 00:00:28 v #1242 > > ................................................................................ 00:00:28 v #1243 > > ................................................................................ 00:00:28 v #1244 > > │ 00:00:28 v #1245 > > ................................................................................ 00:00:28 v #1246 > > ................................................................................ 00:00:28 v #1247 > > │ 00:00:28 v #1248 > > ................................................................................ 00:00:28 v #1249 > > ................................................................................ 00:00:28 v #1250 > > │ 00:00:28 v #1251 > > ................................................................................ 00:00:28 v #1252 > > ................................................................................ 00:00:28 v #1253 > > │ 00:00:28 v #1254 > > │ 00:00:28 v #1255 > > ................................................................................ 00:00:28 v #1256 > > ................................................................................ 00:00:28 v #1257 > > │ 00:00:28 v #1258 > > ................................................................................ 00:00:28 v #1259 > > ................................................................................ 00:00:28 v #1260 > > │ 00:00:28 v #1261 > > ................................................................................ 00:00:28 v #1262 > > ................................................................................ 00:00:28 v #1263 > > │ 00:00:28 v #1264 > > ................................................................................ 00:00:28 v #1265 > > ................................................................................ 00:00:28 v #1266 > > │ 00:00:28 v #1267 > > ................................................................................ 00:00:28 v #1268 > > ................................................................................ 00:00:28 v #1269 > > │ 00:00:28 v #1270 > > ................................................................................ 00:00:28 v #1271 > > ................................................................................ 00:00:28 v #1272 > > │ 00:00:28 v #1273 > > ................................................................................ 00:00:28 v #1274 > > ................................................................................ 00:00:28 v #1275 > > │ 00:00:28 v #1276 > > ................................................................................ 00:00:28 v #1277 > > ................................................................................ 00:00:28 v #1278 > > │ 00:00:28 v #1279 > > ................................................................................ 00:00:28 v #1280 > > ................................................................................ 00:00:28 v #1281 > > │ 00:00:28 v #1282 > > ................................................................................ 00:00:28 v #1283 > > ................................................................................ 00:00:28 v #1284 > > │ 00:00:28 v #1285 > > ......................;;;;;;;;;;;............................................... 00:00:28 v #1286 > > ................................................................................ 00:00:28 v #1287 > > │ 00:00:28 v #1288 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1289 > > ................................................................................ 00:00:28 v #1290 > > │ 00:00:28 v #1291 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1292 > > ................................................................................ 00:00:28 v #1293 > > │ 00:00:28 v #1294 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1295 > > ................................................................................ 00:00:28 v #1296 > > │ 00:00:28 v #1297 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1298 > > ................................................................................ 00:00:28 v #1299 > > │ 00:00:28 v #1300 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1301 > > ................................................................................ 00:00:28 v #1302 > > │ 00:00:28 v #1303 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1304 > > ..............;;;;;;............................................................ 00:00:28 v #1305 > > │ 00:00:28 v #1306 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1307 > > .>;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1308 > > │ 00:00:28 v #1309 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1310 > > ./;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1311 > > │ 00:00:28 v #1312 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1313 > > ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... 00:00:28 v #1314 > > │ 00:00:28 v #1315 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1316 > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... 00:00:28 v #1317 > > │ 00:00:28 v #1318 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1319 > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... 00:00:28 v #1320 > > │ 00:00:28 v #1321 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1322 > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... 00:00:28 v #1323 > > │ 00:00:28 v #1324 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1325 > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<................................... 00:00:28 v #1326 > > │ 00:00:28 v #1327 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1328 > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... 00:00:28 v #1329 > > │ 00:00:28 v #1330 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1331 > > ./<<<<<<<<<<<<<<<<<<<........................................................... 00:00:28 v #1332 > > │ 00:00:28 v #1333 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1334 > > ./<<<<<<<<<<<<<<<............................................................... 00:00:28 v #1335 > > │ 00:00:28 v #1336 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #1337 > > ................................................................................ 00:00:28 v #1338 > > │ 00:00:28 v #1339 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #1340 > > ................................................................................ 00:00:28 v #1341 > > │ 00:00:28 v #1342 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1343 > > ................................................................................ 00:00:28 v #1344 > > │ 00:00:28 v #1345 > > ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ 00:00:28 v #1346 > > ................................................................................ 00:00:28 v #1347 > > │ 00:00:28 v #1348 > > ......................<<<<<<<<<<................................................ 00:00:28 v #1349 > > ................................................................................ 00:00:28 v #1350 > > │ 00:00:28 v #1351 > > ................................................................................ 00:00:28 v #1352 > > ................................................................................ 00:00:28 v #1353 > > │ 00:00:28 v #1354 > > ................................................................................ 00:00:28 v #1355 > > ................................................................................ 00:00:28 v #1356 > > │ 00:00:28 v #1357 > > ................................................................................ 00:00:28 v #1358 > > ................................................................................ 00:00:28 v #1359 > > │ 00:00:28 v #1360 > > ................................................................................ 00:00:28 v #1361 > > ................................................................................ 00:00:28 v #1362 > > │ 00:00:28 v #1363 > > ................................................................................ 00:00:28 v #1364 > > ................................................................................ 00:00:28 v #1365 > > │ 00:00:28 v #1366 > > ................................................................................ 00:00:28 v #1367 > > ................................................................................ 00:00:28 v #1368 > > │ 00:00:28 v #1369 > > ................................................................................ 00:00:28 v #1370 > > ................................................................................ 00:00:28 v #1371 > > │ 00:00:28 v #1372 > > ................................................................................ 00:00:28 v #1373 > > ................................................................................ 00:00:28 v #1374 > > │ 00:00:28 v #1375 > > ................................................................................ 00:00:28 v #1376 > > ................................................................................ 00:00:28 v #1377 > > │ 00:00:28 v #1378 > > ................................................................................ 00:00:28 v #1379 > > ................................................................................ 00:00:28 v #1380 > > │ 00:00:28 v #1381 > > ................................................................................ 00:00:28 v #1382 > > ................................................................................ 00:00:28 v #1383 > > │ 00:00:28 v #1384 > > ................................................................................ 00:00:28 v #1385 > > ................................................................................ 00:00:28 v #1386 > > │ 00:00:28 v #1387 > > │ 00:00:28 v #1388 > > ................................................................................ 00:00:28 v #1389 > > ................................................................................ 00:00:28 v #1390 > > │ 00:00:28 v #1391 > > ................................................................................ 00:00:28 v #1392 > > ................................................................................ 00:00:28 v #1393 > > │ 00:00:28 v #1394 > > ................................................................................ 00:00:28 v #1395 > > ................................................................................ 00:00:28 v #1396 > > │ 00:00:28 v #1397 > > ................................................................................ 00:00:28 v #1398 > > ................................................................................ 00:00:28 v #1399 > > │ 00:00:28 v #1400 > > ................................................................................ 00:00:28 v #1401 > > ................................................................................ 00:00:28 v #1402 > > │ 00:00:28 v #1403 > > ................................................................................ 00:00:28 v #1404 > > ................................................................................ 00:00:28 v #1405 > > │ 00:00:28 v #1406 > > ................................................................................ 00:00:28 v #1407 > > ................................................................................ 00:00:28 v #1408 > > │ 00:00:28 v #1409 > > ................................................................................ 00:00:28 v #1410 > > ................................................................................ 00:00:28 v #1411 > > │ 00:00:28 v #1412 > > ................................................................................ 00:00:28 v #1413 > > ................................................................................ 00:00:28 v #1414 > > │ 00:00:28 v #1415 > > ................................................................................ 00:00:28 v #1416 > > ................................................................................ 00:00:28 v #1417 > > │ 00:00:28 v #1418 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1419 > > ................................................................................ 00:00:28 v #1420 > > │ 00:00:28 v #1421 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1422 > > ................................................................................ 00:00:28 v #1423 > > │ 00:00:28 v #1424 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1425 > > ................................................................................ 00:00:28 v #1426 > > │ 00:00:28 v #1427 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1428 > > ................................................................................ 00:00:28 v #1429 > > │ 00:00:28 v #1430 > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1431 > > ................................................................................ 00:00:28 v #1432 > > │ 00:00:28 v #1433 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1434 > > ................................................................................ 00:00:28 v #1435 > > │ 00:00:28 v #1436 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #1437 > > ..;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1438 > > │ 00:00:28 v #1439 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1440 > > .>;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1441 > > │ 00:00:28 v #1442 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1443 > > ./;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1444 > > │ 00:00:28 v #1445 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1446 > > >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... 00:00:28 v #1447 > > │ 00:00:28 v #1448 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1449 > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... 00:00:28 v #1450 > > │ 00:00:28 v #1451 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1452 > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... 00:00:28 v #1453 > > │ 00:00:28 v #1454 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1455 > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. 00:00:28 v #1456 > > │ 00:00:28 v #1457 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #1458 > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.................................. 00:00:28 v #1459 > > │ 00:00:28 v #1460 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1461 > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... 00:00:28 v #1462 > > │ 00:00:28 v #1463 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1464 > > .//<<<<<<<<<<<<<<<<<<........................................................... 00:00:28 v #1465 > > │ 00:00:28 v #1466 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1467 > > ./<<<<<<<<<<<<<<<<.............................................................. 00:00:28 v #1468 > > │ 00:00:28 v #1469 > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... 00:00:28 v #1470 > > ................................................................................ 00:00:28 v #1471 > > │ 00:00:28 v #1472 > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1473 > > ................................................................................ 00:00:28 v #1474 > > │ 00:00:28 v #1475 > > ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #1476 > > ................................................................................ 00:00:28 v #1477 > > │ 00:00:28 v #1478 > > ........................<<<<<<<<<<<<<<<<<<<<<<.................................. 00:00:28 v #1479 > > ................................................................................ 00:00:28 v #1480 > > │ 00:00:28 v #1481 > > ................................................................................ 00:00:28 v #1482 > > ................................................................................ 00:00:28 v #1483 > > │ 00:00:28 v #1484 > > ................................................................................ 00:00:28 v #1485 > > ................................................................................ 00:00:28 v #1486 > > │ 00:00:28 v #1487 > > ................................................................................ 00:00:28 v #1488 > > ................................................................................ 00:00:28 v #1489 > > │ 00:00:28 v #1490 > > ................................................................................ 00:00:28 v #1491 > > ................................................................................ 00:00:28 v #1492 > > │ 00:00:28 v #1493 > > ................................................................................ 00:00:28 v #1494 > > ................................................................................ 00:00:28 v #1495 > > │ 00:00:28 v #1496 > > ................................................................................ 00:00:28 v #1497 > > ................................................................................ 00:00:28 v #1498 > > │ 00:00:28 v #1499 > > ................................................................................ 00:00:28 v #1500 > > ................................................................................ 00:00:28 v #1501 > > │ 00:00:28 v #1502 > > ................................................................................ 00:00:28 v #1503 > > ................................................................................ 00:00:28 v #1504 > > │ 00:00:28 v #1505 > > ................................................................................ 00:00:28 v #1506 > > ................................................................................ 00:00:28 v #1507 > > │ 00:00:28 v #1508 > > ................................................................................ 00:00:28 v #1509 > > ................................................................................ 00:00:28 v #1510 > > │ 00:00:28 v #1511 > > ................................................................................ 00:00:28 v #1512 > > ................................................................................ 00:00:28 v #1513 > > │ 00:00:28 v #1514 > > ................................................................................ 00:00:28 v #1515 > > ................................................................................ 00:00:28 v #1516 > > │ 00:00:28 v #1517 > > ................................................................................ 00:00:28 v #1518 > > ................................................................................ 00:00:28 v #1519 > > │ 00:00:28 v #1520 > > │ 00:00:28 v #1521 > > ................................................................................ 00:00:28 v #1522 > > ................................................................................ 00:00:28 v #1523 > > │ 00:00:28 v #1524 > > ................................................................................ 00:00:28 v #1525 > > ................................................................................ 00:00:28 v #1526 > > │ 00:00:28 v #1527 > > ................................................................................ 00:00:28 v #1528 > > ................................................................................ 00:00:28 v #1529 > > │ 00:00:28 v #1530 > > ................................................................................ 00:00:28 v #1531 > > ................................................................................ 00:00:28 v #1532 > > │ 00:00:28 v #1533 > > ................................................................................ 00:00:28 v #1534 > > ................................................................................ 00:00:28 v #1535 > > │ 00:00:28 v #1536 > > ................................................................................ 00:00:28 v #1537 > > ................................................................................ 00:00:28 v #1538 > > │ 00:00:28 v #1539 > > ................................................................................ 00:00:28 v #1540 > > ................................................................................ 00:00:28 v #1541 > > │ 00:00:28 v #1542 > > ................................................................................ 00:00:28 v #1543 > > ................................................................................ 00:00:28 v #1544 > > │ 00:00:28 v #1545 > > ................................................................................ 00:00:28 v #1546 > > ................................................................................ 00:00:28 v #1547 > > │ 00:00:28 v #1548 > > ................................................................................ 00:00:28 v #1549 > > ................................................................................ 00:00:28 v #1550 > > │ 00:00:28 v #1551 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... 00:00:28 v #1552 > > ................................................................................ 00:00:28 v #1553 > > │ 00:00:28 v #1554 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1555 > > ................................................................................ 00:00:28 v #1556 > > │ 00:00:28 v #1557 > > ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1558 > > ................................................................................ 00:00:28 v #1559 > > │ 00:00:28 v #1560 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1561 > > ................................................................................ 00:00:28 v #1562 > > │ 00:00:28 v #1563 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1564 > > ................................................................................ 00:00:28 v #1565 > > │ 00:00:28 v #1566 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1567 > > ................................................................................ 00:00:28 v #1568 > > │ 00:00:28 v #1569 > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1570 > > ..;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1571 > > │ 00:00:28 v #1572 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1573 > > .>;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1574 > > │ 00:00:28 v #1575 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1576 > > >/;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1577 > > │ 00:00:28 v #1578 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1579 > > //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... 00:00:28 v #1580 > > │ 00:00:28 v #1581 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1582 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... 00:00:28 v #1583 > > │ 00:00:28 v #1584 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #1585 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. 00:00:28 v #1586 > > │ 00:00:28 v #1587 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1588 > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.................................. 00:00:28 v #1589 > > │ 00:00:28 v #1590 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1591 > > .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. 00:00:28 v #1592 > > │ 00:00:28 v #1593 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... 00:00:28 v #1594 > > .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<.................................... 00:00:28 v #1595 > > │ 00:00:28 v #1596 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1597 > > .///<<<<<<<<<<<<<<<<<........................................................... 00:00:28 v #1598 > > │ 00:00:28 v #1599 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. 00:00:28 v #1600 > > ./<<<<<<<<<<<<<<<<.............................................................. 00:00:28 v #1601 > > │ 00:00:28 v #1602 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #1603 > > ................................................................................ 00:00:28 v #1604 > > │ 00:00:28 v #1605 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.............. 00:00:28 v #1606 > > ................................................................................ 00:00:28 v #1607 > > │ 00:00:28 v #1608 > > .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #1609 > > ................................................................................ 00:00:28 v #1610 > > │ 00:00:28 v #1611 > > .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.............................. 00:00:28 v #1612 > > ................................................................................ 00:00:28 v #1613 > > │ 00:00:28 v #1614 > > ........................<<<<<<<................................................. 00:00:28 v #1615 > > ................................................................................ 00:00:28 v #1616 > > │ 00:00:28 v #1617 > > ................................................................................ 00:00:28 v #1618 > > ................................................................................ 00:00:28 v #1619 > > │ 00:00:28 v #1620 > > ................................................................................ 00:00:28 v #1621 > > ................................................................................ 00:00:28 v #1622 > > │ 00:00:28 v #1623 > > ................................................................................ 00:00:28 v #1624 > > ................................................................................ 00:00:28 v #1625 > > │ 00:00:28 v #1626 > > ................................................................................ 00:00:28 v #1627 > > ................................................................................ 00:00:28 v #1628 > > │ 00:00:28 v #1629 > > ................................................................................ 00:00:28 v #1630 > > ................................................................................ 00:00:28 v #1631 > > │ 00:00:28 v #1632 > > ................................................................................ 00:00:28 v #1633 > > ................................................................................ 00:00:28 v #1634 > > │ 00:00:28 v #1635 > > ................................................................................ 00:00:28 v #1636 > > ................................................................................ 00:00:28 v #1637 > > │ 00:00:28 v #1638 > > ................................................................................ 00:00:28 v #1639 > > ................................................................................ 00:00:28 v #1640 > > │ 00:00:28 v #1641 > > ................................................................................ 00:00:28 v #1642 > > ................................................................................ 00:00:28 v #1643 > > │ 00:00:28 v #1644 > > ................................................................................ 00:00:28 v #1645 > > ................................................................................ 00:00:28 v #1646 > > │ 00:00:28 v #1647 > > ................................................................................ 00:00:28 v #1648 > > ................................................................................ 00:00:28 v #1649 > > │ 00:00:28 v #1650 > > ................................................................................ 00:00:28 v #1651 > > ................................................................................ 00:00:28 v #1652 > > │ 00:00:28 v #1653 > > │ 00:00:28 v #1654 > > ................................................................................ 00:00:28 v #1655 > > ................................................................................ 00:00:28 v #1656 > > │ 00:00:28 v #1657 > > ................................................................................ 00:00:28 v #1658 > > ................................................................................ 00:00:28 v #1659 > > │ 00:00:28 v #1660 > > ................................................................................ 00:00:28 v #1661 > > ................................................................................ 00:00:28 v #1662 > > │ 00:00:28 v #1663 > > ................................................................................ 00:00:28 v #1664 > > ................................................................................ 00:00:28 v #1665 > > │ 00:00:28 v #1666 > > ................................................................................ 00:00:28 v #1667 > > ................................................................................ 00:00:28 v #1668 > > │ 00:00:28 v #1669 > > ................................................................................ 00:00:28 v #1670 > > ................................................................................ 00:00:28 v #1671 > > │ 00:00:28 v #1672 > > ................................................................................ 00:00:28 v #1673 > > ................................................................................ 00:00:28 v #1674 > > │ 00:00:28 v #1675 > > ................................................................................ 00:00:28 v #1676 > > ................................................................................ 00:00:28 v #1677 > > │ 00:00:28 v #1678 > > ................................................................................ 00:00:28 v #1679 > > ................................................................................ 00:00:28 v #1680 > > │ 00:00:28 v #1681 > > ................................................................................ 00:00:28 v #1682 > > ................................................................................ 00:00:28 v #1683 > > │ 00:00:28 v #1684 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #1685 > > ................................................................................ 00:00:28 v #1686 > > │ 00:00:28 v #1687 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #1688 > > ................................................................................ 00:00:28 v #1689 > > │ 00:00:28 v #1690 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1691 > > ................................................................................ 00:00:28 v #1692 > > │ 00:00:28 v #1693 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1694 > > ................................................................................ 00:00:28 v #1695 > > │ 00:00:28 v #1696 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1697 > > ................................................................................ 00:00:28 v #1698 > > │ 00:00:28 v #1699 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1700 > > ................................................................................ 00:00:28 v #1701 > > │ 00:00:28 v #1702 > > .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1703 > > ..;;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #1704 > > │ 00:00:28 v #1705 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1706 > > .>;;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1707 > > │ 00:00:28 v #1708 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1709 > > >//;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1710 > > │ 00:00:28 v #1711 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1712 > > ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... 00:00:28 v #1713 > > │ 00:00:28 v #1714 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #1715 > > ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;................................... 00:00:28 v #1716 > > │ 00:00:28 v #1717 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #1718 > > ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.................................. 00:00:28 v #1719 > > │ 00:00:28 v #1720 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... 00:00:28 v #1721 > > ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.................................. 00:00:28 v #1722 > > │ 00:00:28 v #1723 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1724 > > ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. 00:00:28 v #1725 > > │ 00:00:28 v #1726 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. 00:00:28 v #1727 > > ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<.................................... 00:00:28 v #1728 > > │ 00:00:28 v #1729 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #1730 > > .///<<<<<<<<<<<<<<<<<........................................................... 00:00:28 v #1731 > > │ 00:00:28 v #1732 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. 00:00:28 v #1733 > > .//<<<<<<<<<<<<<<<.............................................................. 00:00:28 v #1734 > > │ 00:00:28 v #1735 > > .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<............. 00:00:28 v #1736 > > .<<<............................................................................ 00:00:28 v #1737 > > │ 00:00:28 v #1738 > > .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #1739 > > ................................................................................ 00:00:28 v #1740 > > │ 00:00:28 v #1741 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................... 00:00:28 v #1742 > > ................................................................................ 00:00:28 v #1743 > > │ 00:00:28 v #1744 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................ 00:00:28 v #1745 > > ................................................................................ 00:00:28 v #1746 > > │ 00:00:28 v #1747 > > .......................//<<<<<<<<<<<<<.......................................... 00:00:28 v #1748 > > ................................................................................ 00:00:28 v #1749 > > │ 00:00:28 v #1750 > > ................................................................................ 00:00:28 v #1751 > > ................................................................................ 00:00:28 v #1752 > > │ 00:00:28 v #1753 > > ................................................................................ 00:00:28 v #1754 > > ................................................................................ 00:00:28 v #1755 > > │ 00:00:28 v #1756 > > ................................................................................ 00:00:28 v #1757 > > ................................................................................ 00:00:28 v #1758 > > │ 00:00:28 v #1759 > > ................................................................................ 00:00:28 v #1760 > > ................................................................................ 00:00:28 v #1761 > > │ 00:00:28 v #1762 > > ................................................................................ 00:00:28 v #1763 > > ................................................................................ 00:00:28 v #1764 > > │ 00:00:28 v #1765 > > ................................................................................ 00:00:28 v #1766 > > ................................................................................ 00:00:28 v #1767 > > │ 00:00:28 v #1768 > > ................................................................................ 00:00:28 v #1769 > > ................................................................................ 00:00:28 v #1770 > > │ 00:00:28 v #1771 > > ................................................................................ 00:00:28 v #1772 > > ................................................................................ 00:00:28 v #1773 > > │ 00:00:28 v #1774 > > ................................................................................ 00:00:28 v #1775 > > ................................................................................ 00:00:28 v #1776 > > │ 00:00:28 v #1777 > > ................................................................................ 00:00:28 v #1778 > > ................................................................................ 00:00:28 v #1779 > > │ 00:00:28 v #1780 > > ................................................................................ 00:00:28 v #1781 > > ................................................................................ 00:00:28 v #1782 > > │ 00:00:28 v #1783 > > ................................................................................ 00:00:28 v #1784 > > ................................................................................ 00:00:28 v #1785 > > │ 00:00:28 v #1786 > > │ 00:00:28 v #1787 > > ................................................................................ 00:00:28 v #1788 > > ................................................................................ 00:00:28 v #1789 > > │ 00:00:28 v #1790 > > ................................................................................ 00:00:28 v #1791 > > ................................................................................ 00:00:28 v #1792 > > │ 00:00:28 v #1793 > > ................................................................................ 00:00:28 v #1794 > > ................................................................................ 00:00:28 v #1795 > > │ 00:00:28 v #1796 > > ................................................................................ 00:00:28 v #1797 > > ................................................................................ 00:00:28 v #1798 > > │ 00:00:28 v #1799 > > ................................................................................ 00:00:28 v #1800 > > ................................................................................ 00:00:28 v #1801 > > │ 00:00:28 v #1802 > > ................................................................................ 00:00:28 v #1803 > > ................................................................................ 00:00:28 v #1804 > > │ 00:00:28 v #1805 > > ................................................................................ 00:00:28 v #1806 > > ................................................................................ 00:00:28 v #1807 > > │ 00:00:28 v #1808 > > ................................................................................ 00:00:28 v #1809 > > ................................................................................ 00:00:28 v #1810 > > │ 00:00:28 v #1811 > > ................................................................................ 00:00:28 v #1812 > > ................................................................................ 00:00:28 v #1813 > > │ 00:00:28 v #1814 > > ................................................................................ 00:00:28 v #1815 > > ................................................................................ 00:00:28 v #1816 > > │ 00:00:28 v #1817 > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #1818 > > ................................................................................ 00:00:28 v #1819 > > │ 00:00:28 v #1820 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #1821 > > ................................................................................ 00:00:28 v #1822 > > │ 00:00:28 v #1823 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... 00:00:28 v #1824 > > ................................................................................ 00:00:28 v #1825 > > │ 00:00:28 v #1826 > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1827 > > ................................................................................ 00:00:28 v #1828 > > │ 00:00:28 v #1829 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #1830 > > ................................................................................ 00:00:28 v #1831 > > │ 00:00:28 v #1832 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1833 > > ................................................................................ 00:00:28 v #1834 > > │ 00:00:28 v #1835 > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1836 > > ..;;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #1837 > > │ 00:00:28 v #1838 > > ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1839 > > .>/;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1840 > > │ 00:00:28 v #1841 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1842 > > >//;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1843 > > │ 00:00:28 v #1844 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............> 00:00:28 v #1845 > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... 00:00:28 v #1846 > > │ 00:00:28 v #1847 > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1848 > > ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;................................... 00:00:28 v #1849 > > │ 00:00:28 v #1850 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #1851 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. 00:00:28 v #1852 > > │ 00:00:28 v #1853 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1854 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. 00:00:28 v #1855 > > │ 00:00:28 v #1856 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #1857 > > ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.................................. 00:00:28 v #1858 > > │ 00:00:28 v #1859 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. 00:00:28 v #1860 > > /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<.................................... 00:00:28 v #1861 > > │ 00:00:28 v #1862 > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. 00:00:28 v #1863 > > .///<<<<<<<<<<<<<<<<............................................................ 00:00:28 v #1864 > > │ 00:00:28 v #1865 > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............ 00:00:28 v #1866 > > .//<<<<<<<<<<<<<<<.............................................................. 00:00:28 v #1867 > > │ 00:00:28 v #1868 > > ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<............. 00:00:28 v #1869 > > .<<<<<<......................................................................... 00:00:28 v #1870 > > │ 00:00:28 v #1871 > > ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. 00:00:28 v #1872 > > ................................................................................ 00:00:28 v #1873 > > │ 00:00:28 v #1874 > > .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... 00:00:28 v #1875 > > ................................................................................ 00:00:28 v #1876 > > │ 00:00:28 v #1877 > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<........................... 00:00:28 v #1878 > > ................................................................................ 00:00:28 v #1879 > > │ 00:00:28 v #1880 > > .......................///<<<<<<<<<<<<<<<<...................................... 00:00:28 v #1881 > > ................................................................................ 00:00:28 v #1882 > > │ 00:00:28 v #1883 > > ......................./<<<<<................................................... 00:00:28 v #1884 > > ................................................................................ 00:00:28 v #1885 > > │ 00:00:28 v #1886 > > ................................................................................ 00:00:28 v #1887 > > ................................................................................ 00:00:28 v #1888 > > │ 00:00:28 v #1889 > > ................................................................................ 00:00:28 v #1890 > > ................................................................................ 00:00:28 v #1891 > > │ 00:00:28 v #1892 > > ................................................................................ 00:00:28 v #1893 > > ................................................................................ 00:00:28 v #1894 > > │ 00:00:28 v #1895 > > ................................................................................ 00:00:28 v #1896 > > ................................................................................ 00:00:28 v #1897 > > │ 00:00:28 v #1898 > > ................................................................................ 00:00:28 v #1899 > > ................................................................................ 00:00:28 v #1900 > > │ 00:00:28 v #1901 > > ................................................................................ 00:00:28 v #1902 > > ................................................................................ 00:00:28 v #1903 > > │ 00:00:28 v #1904 > > ................................................................................ 00:00:28 v #1905 > > ................................................................................ 00:00:28 v #1906 > > │ 00:00:28 v #1907 > > ................................................................................ 00:00:28 v #1908 > > ................................................................................ 00:00:28 v #1909 > > │ 00:00:28 v #1910 > > ................................................................................ 00:00:28 v #1911 > > ................................................................................ 00:00:28 v #1912 > > │ 00:00:28 v #1913 > > ................................................................................ 00:00:28 v #1914 > > ................................................................................ 00:00:28 v #1915 > > │ 00:00:28 v #1916 > > ................................................................................ 00:00:28 v #1917 > > ................................................................................ 00:00:28 v #1918 > > │ 00:00:28 v #1919 > > │ 00:00:28 v #1920 > > ................................................................................ 00:00:28 v #1921 > > ................................................................................ 00:00:28 v #1922 > > │ 00:00:28 v #1923 > > ................................................................................ 00:00:28 v #1924 > > ................................................................................ 00:00:28 v #1925 > > │ 00:00:28 v #1926 > > ................................................................................ 00:00:28 v #1927 > > ................................................................................ 00:00:28 v #1928 > > │ 00:00:28 v #1929 > > ................................................................................ 00:00:28 v #1930 > > ................................................................................ 00:00:28 v #1931 > > │ 00:00:28 v #1932 > > ................................................................................ 00:00:28 v #1933 > > ................................................................................ 00:00:28 v #1934 > > │ 00:00:28 v #1935 > > ................................................................................ 00:00:28 v #1936 > > ................................................................................ 00:00:28 v #1937 > > │ 00:00:28 v #1938 > > ................................................................................ 00:00:28 v #1939 > > ................................................................................ 00:00:28 v #1940 > > │ 00:00:28 v #1941 > > ................................................................................ 00:00:28 v #1942 > > ................................................................................ 00:00:28 v #1943 > > │ 00:00:28 v #1944 > > ................................................................................ 00:00:28 v #1945 > > ................................................................................ 00:00:28 v #1946 > > │ 00:00:28 v #1947 > > ........................;;;;;;.................................................. 00:00:28 v #1948 > > ................................................................................ 00:00:28 v #1949 > > │ 00:00:28 v #1950 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #1951 > > ................................................................................ 00:00:28 v #1952 > > │ 00:00:28 v #1953 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #1954 > > ................................................................................ 00:00:28 v #1955 > > │ 00:00:28 v #1956 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #1957 > > ................................................................................ 00:00:28 v #1958 > > │ 00:00:28 v #1959 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... 00:00:28 v #1960 > > ................................................................................ 00:00:28 v #1961 > > │ 00:00:28 v #1962 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #1963 > > ................................................................................ 00:00:28 v #1964 > > │ 00:00:28 v #1965 > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #1966 > > ................................................................................ 00:00:28 v #1967 > > │ 00:00:28 v #1968 > > ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #1969 > > ..;;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #1970 > > │ 00:00:28 v #1971 > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #1972 > > .>/;;;;;;;;;;;;;;;;\............................................................ 00:00:28 v #1973 > > │ 00:00:28 v #1974 > > ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #1975 > > >//;;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #1976 > > │ 00:00:28 v #1977 > > ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #1978 > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... 00:00:28 v #1979 > > │ 00:00:28 v #1980 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #1981 > > ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.................................. 00:00:28 v #1982 > > │ 00:00:28 v #1983 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. 00:00:28 v #1984 > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. 00:00:28 v #1985 > > │ 00:00:28 v #1986 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. 00:00:28 v #1987 > > /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\................................. 00:00:28 v #1988 > > │ 00:00:28 v #1989 > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. 00:00:28 v #1990 > > /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.................................. 00:00:28 v #1991 > > │ 00:00:28 v #1992 > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ 00:00:28 v #1993 > > //////<<<<<<<<<<<<<<<<<............//<<<<<<<.................................... 00:00:28 v #1994 > > │ 00:00:28 v #1995 > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ 00:00:28 v #1996 > > /////<<<<<<<<<<<<<<<............................................................ 00:00:28 v #1997 > > │ 00:00:28 v #1998 > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............ 00:00:28 v #1999 > > .//<<<<<<<<<<<<<<<.............................................................. 00:00:28 v #2000 > > │ 00:00:28 v #2001 > > ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................ 00:00:28 v #2002 > > ./<<<<<<<<...................................................................... 00:00:28 v #2003 > > │ 00:00:28 v #2004 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #2005 > > ................................................................................ 00:00:28 v #2006 > > │ 00:00:28 v #2007 > > ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... 00:00:28 v #2008 > > ................................................................................ 00:00:28 v #2009 > > │ 00:00:28 v #2010 > > ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<........................... 00:00:28 v #2011 > > ................................................................................ 00:00:28 v #2012 > > │ 00:00:28 v #2013 > > .......................///<<<<<<<<<<<<<<<<<<<<.................................. 00:00:28 v #2014 > > ................................................................................ 00:00:28 v #2015 > > │ 00:00:28 v #2016 > > .......................//<<<<<<<<<.............................................. 00:00:28 v #2017 > > ................................................................................ 00:00:28 v #2018 > > │ 00:00:28 v #2019 > > ................................................................................ 00:00:28 v #2020 > > ................................................................................ 00:00:28 v #2021 > > │ 00:00:28 v #2022 > > ................................................................................ 00:00:28 v #2023 > > ................................................................................ 00:00:28 v #2024 > > │ 00:00:28 v #2025 > > ................................................................................ 00:00:28 v #2026 > > ................................................................................ 00:00:28 v #2027 > > │ 00:00:28 v #2028 > > ................................................................................ 00:00:28 v #2029 > > ................................................................................ 00:00:28 v #2030 > > │ 00:00:28 v #2031 > > ................................................................................ 00:00:28 v #2032 > > ................................................................................ 00:00:28 v #2033 > > │ 00:00:28 v #2034 > > ................................................................................ 00:00:28 v #2035 > > ................................................................................ 00:00:28 v #2036 > > │ 00:00:28 v #2037 > > ................................................................................ 00:00:28 v #2038 > > ................................................................................ 00:00:28 v #2039 > > │ 00:00:28 v #2040 > > ................................................................................ 00:00:28 v #2041 > > ................................................................................ 00:00:28 v #2042 > > │ 00:00:28 v #2043 > > ................................................................................ 00:00:28 v #2044 > > ................................................................................ 00:00:28 v #2045 > > │ 00:00:28 v #2046 > > ................................................................................ 00:00:28 v #2047 > > ................................................................................ 00:00:28 v #2048 > > │ 00:00:28 v #2049 > > ................................................................................ 00:00:28 v #2050 > > ................................................................................ 00:00:28 v #2051 > > │ 00:00:28 v #2052 > > │ 00:00:28 v #2053 > > ................................................................................ 00:00:28 v #2054 > > ................................................................................ 00:00:28 v #2055 > > │ 00:00:28 v #2056 > > ................................................................................ 00:00:28 v #2057 > > ................................................................................ 00:00:28 v #2058 > > │ 00:00:28 v #2059 > > ................................................................................ 00:00:28 v #2060 > > ................................................................................ 00:00:28 v #2061 > > │ 00:00:28 v #2062 > > ................................................................................ 00:00:28 v #2063 > > ................................................................................ 00:00:28 v #2064 > > │ 00:00:28 v #2065 > > ................................................................................ 00:00:28 v #2066 > > ................................................................................ 00:00:28 v #2067 > > │ 00:00:28 v #2068 > > ................................................................................ 00:00:28 v #2069 > > ................................................................................ 00:00:28 v #2070 > > │ 00:00:28 v #2071 > > ................................................................................ 00:00:28 v #2072 > > ................................................................................ 00:00:28 v #2073 > > │ 00:00:28 v #2074 > > ................................................................................ 00:00:28 v #2075 > > ................................................................................ 00:00:28 v #2076 > > │ 00:00:28 v #2077 > > ................................................................................ 00:00:28 v #2078 > > ................................................................................ 00:00:28 v #2079 > > │ 00:00:28 v #2080 > > ........................;;;;;;;;;............................................... 00:00:28 v #2081 > > ................................................................................ 00:00:28 v #2082 > > │ 00:00:28 v #2083 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ 00:00:28 v #2084 > > ................................................................................ 00:00:28 v #2085 > > │ 00:00:28 v #2086 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #2087 > > ................................................................................ 00:00:28 v #2088 > > │ 00:00:28 v #2089 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #2090 > > ................................................................................ 00:00:28 v #2091 > > │ 00:00:28 v #2092 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #2093 > > ................................................................................ 00:00:28 v #2094 > > │ 00:00:28 v #2095 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #2096 > > ................................................................................ 00:00:28 v #2097 > > │ 00:00:28 v #2098 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #2099 > > ................................................................................ 00:00:28 v #2100 > > │ 00:00:28 v #2101 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #2102 > > ..;;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #2103 > > │ 00:00:28 v #2104 > > ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #2105 > > .>/;;;;;;;;;;;;;;;;\............................................................ 00:00:28 v #2106 > > │ 00:00:28 v #2107 > > .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #2108 > > >///;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2109 > > │ 00:00:28 v #2110 > > ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............> 00:00:28 v #2111 > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... 00:00:28 v #2112 > > │ 00:00:28 v #2113 > > ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............> 00:00:28 v #2114 > > ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. 00:00:28 v #2115 > > │ 00:00:28 v #2116 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ 00:00:28 v #2117 > > /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.................................. 00:00:28 v #2118 > > │ 00:00:28 v #2119 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ 00:00:28 v #2120 > > //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<................................. 00:00:28 v #2121 > > │ 00:00:28 v #2122 > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... 00:00:28 v #2123 > > ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.................................. 00:00:28 v #2124 > > │ 00:00:28 v #2125 > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... 00:00:28 v #2126 > > ///////<<<<<<<<<<<<<<<.............//<<<<<<<.................................... 00:00:28 v #2127 > > │ 00:00:28 v #2128 > > .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<........... 00:00:28 v #2129 > > /////<<<<<<<<<<<<<<<............................................................ 00:00:28 v #2130 > > │ 00:00:28 v #2131 > > .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.............. 00:00:28 v #2132 > > .///<<<<<<<<<<<<<<.............................................................. 00:00:28 v #2133 > > │ 00:00:28 v #2134 > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................. 00:00:28 v #2135 > > .//<<<<<<<<<.................................................................... 00:00:28 v #2136 > > │ 00:00:28 v #2137 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... 00:00:28 v #2138 > > ................................................................................ 00:00:28 v #2139 > > │ 00:00:28 v #2140 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... 00:00:28 v #2141 > > ................................................................................ 00:00:28 v #2142 > > │ 00:00:28 v #2143 > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2144 > > ................................................................................ 00:00:28 v #2145 > > │ 00:00:28 v #2146 > > ......................./////<<<<<<<<<<<<<<<<<<<<................................ 00:00:28 v #2147 > > ................................................................................ 00:00:28 v #2148 > > │ 00:00:28 v #2149 > > .......................///<<<<<<<<<<<<.......................................... 00:00:28 v #2150 > > ................................................................................ 00:00:28 v #2151 > > │ 00:00:28 v #2152 > > ........................<<<<<................................................... 00:00:28 v #2153 > > ................................................................................ 00:00:28 v #2154 > > │ 00:00:28 v #2155 > > ................................................................................ 00:00:28 v #2156 > > ................................................................................ 00:00:28 v #2157 > > │ 00:00:28 v #2158 > > ................................................................................ 00:00:28 v #2159 > > ................................................................................ 00:00:28 v #2160 > > │ 00:00:28 v #2161 > > ................................................................................ 00:00:28 v #2162 > > ................................................................................ 00:00:28 v #2163 > > │ 00:00:28 v #2164 > > ................................................................................ 00:00:28 v #2165 > > ................................................................................ 00:00:28 v #2166 > > │ 00:00:28 v #2167 > > ................................................................................ 00:00:28 v #2168 > > ................................................................................ 00:00:28 v #2169 > > │ 00:00:28 v #2170 > > ................................................................................ 00:00:28 v #2171 > > ................................................................................ 00:00:28 v #2172 > > │ 00:00:28 v #2173 > > ................................................................................ 00:00:28 v #2174 > > ................................................................................ 00:00:28 v #2175 > > │ 00:00:28 v #2176 > > ................................................................................ 00:00:28 v #2177 > > ................................................................................ 00:00:28 v #2178 > > │ 00:00:28 v #2179 > > ................................................................................ 00:00:28 v #2180 > > ................................................................................ 00:00:28 v #2181 > > │ 00:00:28 v #2182 > > ................................................................................ 00:00:28 v #2183 > > ................................................................................ 00:00:28 v #2184 > > │ 00:00:28 v #2185 > > │ 00:00:28 v #2186 > > ................................................................................ 00:00:28 v #2187 > > ................................................................................ 00:00:28 v #2188 > > │ 00:00:28 v #2189 > > ................................................................................ 00:00:28 v #2190 > > ................................................................................ 00:00:28 v #2191 > > │ 00:00:28 v #2192 > > ................................................................................ 00:00:28 v #2193 > > ................................................................................ 00:00:28 v #2194 > > │ 00:00:28 v #2195 > > ................................................................................ 00:00:28 v #2196 > > ................................................................................ 00:00:28 v #2197 > > │ 00:00:28 v #2198 > > ................................................................................ 00:00:28 v #2199 > > ................................................................................ 00:00:28 v #2200 > > │ 00:00:28 v #2201 > > ................................................................................ 00:00:28 v #2202 > > ................................................................................ 00:00:28 v #2203 > > │ 00:00:28 v #2204 > > ................................................................................ 00:00:28 v #2205 > > ................................................................................ 00:00:28 v #2206 > > │ 00:00:28 v #2207 > > ................................................................................ 00:00:28 v #2208 > > ................................................................................ 00:00:28 v #2209 > > │ 00:00:28 v #2210 > > ................................................................................ 00:00:28 v #2211 > > ................................................................................ 00:00:28 v #2212 > > │ 00:00:28 v #2213 > > ........................;;;;;;;;;;.............................................. 00:00:28 v #2214 > > ................................................................................ 00:00:28 v #2215 > > │ 00:00:28 v #2216 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... 00:00:28 v #2217 > > ................................................................................ 00:00:28 v #2218 > > │ 00:00:28 v #2219 > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ 00:00:28 v #2220 > > ................................................................................ 00:00:28 v #2221 > > │ 00:00:28 v #2222 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #2223 > > ................................................................................ 00:00:28 v #2224 > > │ 00:00:28 v #2225 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #2226 > > ................................................................................ 00:00:28 v #2227 > > │ 00:00:28 v #2228 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #2229 > > ................................................................................ 00:00:28 v #2230 > > │ 00:00:28 v #2231 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... 00:00:28 v #2232 > > ................................................................................ 00:00:28 v #2233 > > │ 00:00:28 v #2234 > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #2235 > > ../;;;;;;;;;;;;;;;.............................................................. 00:00:28 v #2236 > > │ 00:00:28 v #2237 > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. 00:00:28 v #2238 > > .>/;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #2239 > > │ 00:00:28 v #2240 > > ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #2241 > > >///;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2242 > > │ 00:00:28 v #2243 > > ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............> 00:00:28 v #2244 > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... 00:00:28 v #2245 > > │ 00:00:28 v #2246 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............> 00:00:28 v #2247 > > /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. 00:00:28 v #2248 > > │ 00:00:28 v #2249 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... 00:00:28 v #2250 > > //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\................................. 00:00:28 v #2251 > > │ 00:00:28 v #2252 > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... 00:00:28 v #2253 > > //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<................................. 00:00:28 v #2254 > > │ 00:00:28 v #2255 > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......... 00:00:28 v #2256 > > ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.................................. 00:00:28 v #2257 > > │ 00:00:28 v #2258 > > ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<........... 00:00:28 v #2259 > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... 00:00:28 v #2260 > > │ 00:00:28 v #2261 > > ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............. 00:00:28 v #2262 > > //////<<<<<<<<<<<<<<............................................................ 00:00:28 v #2263 > > │ 00:00:28 v #2264 > > ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #2265 > > .////<<<<<<<<<<<<<.............................................................. 00:00:28 v #2266 > > │ 00:00:28 v #2267 > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. 00:00:28 v #2268 > > ..<<<<<<<<<<<................................................................... 00:00:28 v #2269 > > │ 00:00:28 v #2270 > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<..................... 00:00:28 v #2271 > > ................................................................................ 00:00:28 v #2272 > > │ 00:00:28 v #2273 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2274 > > ................................................................................ 00:00:28 v #2275 > > │ 00:00:28 v #2276 > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2277 > > ................................................................................ 00:00:28 v #2278 > > │ 00:00:28 v #2279 > > ......................./////<<<<<<<<<<<<<<<<<<<<<<.............................. 00:00:28 v #2280 > > ................................................................................ 00:00:28 v #2281 > > │ 00:00:28 v #2282 > > .......................////<<<<<<<<<<<<<<....................................... 00:00:28 v #2283 > > ................................................................................ 00:00:28 v #2284 > > │ 00:00:28 v #2285 > > ......................../<<<<<<<<............................................... 00:00:28 v #2286 > > ................................................................................ 00:00:28 v #2287 > > │ 00:00:28 v #2288 > > ................................................................................ 00:00:28 v #2289 > > ................................................................................ 00:00:28 v #2290 > > │ 00:00:28 v #2291 > > ................................................................................ 00:00:28 v #2292 > > ................................................................................ 00:00:28 v #2293 > > │ 00:00:28 v #2294 > > ................................................................................ 00:00:28 v #2295 > > ................................................................................ 00:00:28 v #2296 > > │ 00:00:28 v #2297 > > ................................................................................ 00:00:28 v #2298 > > ................................................................................ 00:00:28 v #2299 > > │ 00:00:28 v #2300 > > ................................................................................ 00:00:28 v #2301 > > ................................................................................ 00:00:28 v #2302 > > │ 00:00:28 v #2303 > > ................................................................................ 00:00:28 v #2304 > > ................................................................................ 00:00:28 v #2305 > > │ 00:00:28 v #2306 > > ................................................................................ 00:00:28 v #2307 > > ................................................................................ 00:00:28 v #2308 > > │ 00:00:28 v #2309 > > ................................................................................ 00:00:28 v #2310 > > ................................................................................ 00:00:28 v #2311 > > │ 00:00:28 v #2312 > > ................................................................................ 00:00:28 v #2313 > > ................................................................................ 00:00:28 v #2314 > > │ 00:00:28 v #2315 > > ................................................................................ 00:00:28 v #2316 > > ................................................................................ 00:00:28 v #2317 > > │ 00:00:28 v #2318 > > │ 00:00:28 v #2319 > > ................................................................................ 00:00:28 v #2320 > > ................................................................................ 00:00:28 v #2321 > > │ 00:00:28 v #2322 > > ................................................................................ 00:00:28 v #2323 > > ................................................................................ 00:00:28 v #2324 > > │ 00:00:28 v #2325 > > ................................................................................ 00:00:28 v #2326 > > ................................................................................ 00:00:28 v #2327 > > │ 00:00:28 v #2328 > > ................................................................................ 00:00:28 v #2329 > > ................................................................................ 00:00:28 v #2330 > > │ 00:00:28 v #2331 > > ................................................................................ 00:00:28 v #2332 > > ................................................................................ 00:00:28 v #2333 > > │ 00:00:28 v #2334 > > ................................................................................ 00:00:28 v #2335 > > ................................................................................ 00:00:28 v #2336 > > │ 00:00:28 v #2337 > > ................................................................................ 00:00:28 v #2338 > > ................................................................................ 00:00:28 v #2339 > > │ 00:00:28 v #2340 > > ................................................................................ 00:00:28 v #2341 > > ................................................................................ 00:00:28 v #2342 > > │ 00:00:28 v #2343 > > ................................................................................ 00:00:28 v #2344 > > ................................................................................ 00:00:28 v #2345 > > │ 00:00:28 v #2346 > > ........................;;;;;;;;;............................................... 00:00:28 v #2347 > > ................................................................................ 00:00:28 v #2348 > > │ 00:00:28 v #2349 > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... 00:00:28 v #2350 > > ................................................................................ 00:00:28 v #2351 > > │ 00:00:28 v #2352 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... 00:00:28 v #2353 > > ................................................................................ 00:00:28 v #2354 > > │ 00:00:28 v #2355 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ 00:00:28 v #2356 > > ................................................................................ 00:00:28 v #2357 > > │ 00:00:28 v #2358 > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #2359 > > ................................................................................ 00:00:28 v #2360 > > │ 00:00:28 v #2361 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #2362 > > ................................................................................ 00:00:28 v #2363 > > │ 00:00:28 v #2364 > > ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #2365 > > ................................................................................ 00:00:28 v #2366 > > │ 00:00:28 v #2367 > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #2368 > > ..;;;;;;;;;;;;;;;;.............................................................. 00:00:28 v #2369 > > │ 00:00:28 v #2370 > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #2371 > > .>//;;;;;;;;;;;;;;;............................................................. 00:00:28 v #2372 > > │ 00:00:28 v #2373 > > ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #2374 > > >///;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2375 > > │ 00:00:28 v #2376 > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> 00:00:28 v #2377 > > /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\................................... 00:00:28 v #2378 > > │ 00:00:28 v #2379 > > .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........> 00:00:28 v #2380 > > //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. 00:00:28 v #2381 > > │ 00:00:28 v #2382 > > .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... 00:00:28 v #2383 > > //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;................................. 00:00:28 v #2384 > > │ 00:00:28 v #2385 > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......... 00:00:28 v #2386 > > ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<................................. 00:00:28 v #2387 > > │ 00:00:28 v #2388 > > ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<......... 00:00:28 v #2389 > > ////////;<<<<<<<<<<<<<<...........////<<<<<<<<.................................. 00:00:28 v #2390 > > │ 00:00:28 v #2391 > > ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<........... 00:00:28 v #2392 > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... 00:00:28 v #2393 > > │ 00:00:28 v #2394 > > .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. 00:00:28 v #2395 > > //////<<<<<<<<<<<<<<............................................................ 00:00:28 v #2396 > > │ 00:00:28 v #2397 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................. 00:00:28 v #2398 > > .///<<<<<<<<<<<<<<.............................................................. 00:00:28 v #2399 > > │ 00:00:28 v #2400 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #2401 > > ..//<<<<<<<<<<.................................................................. 00:00:28 v #2402 > > │ 00:00:28 v #2403 > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................... 00:00:28 v #2404 > > ..<............................................................................. 00:00:28 v #2405 > > │ 00:00:28 v #2406 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2407 > > ................................................................................ 00:00:28 v #2408 > > │ 00:00:28 v #2409 > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2410 > > ................................................................................ 00:00:28 v #2411 > > │ 00:00:28 v #2412 > > .......................//////<<<<<<<<<<<<<<<<<<<<<<............................. 00:00:28 v #2413 > > ................................................................................ 00:00:28 v #2414 > > │ 00:00:28 v #2415 > > ........................////<<<<<<<<<<<<<<<..................................... 00:00:28 v #2416 > > ................................................................................ 00:00:28 v #2417 > > │ 00:00:28 v #2418 > > ........................//<<<<<<<<<<............................................ 00:00:28 v #2419 > > ................................................................................ 00:00:28 v #2420 > > │ 00:00:28 v #2421 > > .........................<<<.................................................... 00:00:28 v #2422 > > ................................................................................ 00:00:28 v #2423 > > │ 00:00:28 v #2424 > > ................................................................................ 00:00:28 v #2425 > > ................................................................................ 00:00:28 v #2426 > > │ 00:00:28 v #2427 > > ................................................................................ 00:00:28 v #2428 > > ................................................................................ 00:00:28 v #2429 > > │ 00:00:28 v #2430 > > ................................................................................ 00:00:28 v #2431 > > ................................................................................ 00:00:28 v #2432 > > │ 00:00:28 v #2433 > > ................................................................................ 00:00:28 v #2434 > > ................................................................................ 00:00:28 v #2435 > > │ 00:00:28 v #2436 > > ................................................................................ 00:00:28 v #2437 > > ................................................................................ 00:00:28 v #2438 > > │ 00:00:28 v #2439 > > ................................................................................ 00:00:28 v #2440 > > ................................................................................ 00:00:28 v #2441 > > │ 00:00:28 v #2442 > > ................................................................................ 00:00:28 v #2443 > > ................................................................................ 00:00:28 v #2444 > > │ 00:00:28 v #2445 > > ................................................................................ 00:00:28 v #2446 > > ................................................................................ 00:00:28 v #2447 > > │ 00:00:28 v #2448 > > ................................................................................ 00:00:28 v #2449 > > ................................................................................ 00:00:28 v #2450 > > │ 00:00:28 v #2451 > > │ 00:00:28 v #2452 > > ................................................................................ 00:00:28 v #2453 > > ................................................................................ 00:00:28 v #2454 > > │ 00:00:28 v #2455 > > ................................................................................ 00:00:28 v #2456 > > ................................................................................ 00:00:28 v #2457 > > │ 00:00:28 v #2458 > > ................................................................................ 00:00:28 v #2459 > > ................................................................................ 00:00:28 v #2460 > > │ 00:00:28 v #2461 > > ................................................................................ 00:00:28 v #2462 > > ................................................................................ 00:00:28 v #2463 > > │ 00:00:28 v #2464 > > ................................................................................ 00:00:28 v #2465 > > ................................................................................ 00:00:28 v #2466 > > │ 00:00:28 v #2467 > > ................................................................................ 00:00:28 v #2468 > > ................................................................................ 00:00:28 v #2469 > > │ 00:00:28 v #2470 > > ................................................................................ 00:00:28 v #2471 > > ................................................................................ 00:00:28 v #2472 > > │ 00:00:28 v #2473 > > ................................................................................ 00:00:28 v #2474 > > ................................................................................ 00:00:28 v #2475 > > │ 00:00:28 v #2476 > > ................................................................................ 00:00:28 v #2477 > > ................................................................................ 00:00:28 v #2478 > > │ 00:00:28 v #2479 > > .......................>;;;;;;;;................................................ 00:00:28 v #2480 > > ................................................................................ 00:00:28 v #2481 > > │ 00:00:28 v #2482 > > .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................... 00:00:28 v #2483 > > ................................................................................ 00:00:28 v #2484 > > │ 00:00:28 v #2485 > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... 00:00:28 v #2486 > > ................................................................................ 00:00:28 v #2487 > > │ 00:00:28 v #2488 > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................ 00:00:28 v #2489 > > ................................................................................ 00:00:28 v #2490 > > │ 00:00:28 v #2491 > > .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #2492 > > ................................................................................ 00:00:28 v #2493 > > │ 00:00:28 v #2494 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................... 00:00:28 v #2495 > > ................................................................................ 00:00:28 v #2496 > > │ 00:00:28 v #2497 > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #2498 > > ................................................................................ 00:00:28 v #2499 > > │ 00:00:28 v #2500 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #2501 > > ..;;;;;;;;;;;;;;;\.............................................................. 00:00:28 v #2502 > > │ 00:00:28 v #2503 > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #2504 > > .>/;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #2505 > > │ 00:00:28 v #2506 > > ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #2507 > > >///;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2508 > > │ 00:00:28 v #2509 > > .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> 00:00:28 v #2510 > > /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\................................... 00:00:28 v #2511 > > │ 00:00:28 v #2512 > > ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........> 00:00:28 v #2513 > > //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.................................. 00:00:28 v #2514 > > │ 00:00:28 v #2515 > > ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........> 00:00:28 v #2516 > > ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;................................. 00:00:28 v #2517 > > │ 00:00:28 v #2518 > > .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<....... 00:00:28 v #2519 > > ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<................................. 00:00:28 v #2520 > > │ 00:00:28 v #2521 > > ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<......... 00:00:28 v #2522 > > /////////<<<<<<<<<<<<<<...........////<<<<<<<<.................................. 00:00:28 v #2523 > > │ 00:00:28 v #2524 > > ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............ 00:00:28 v #2525 > > ////////<<<<<<<<<<<<<..............//<<<<<<<.................................... 00:00:28 v #2526 > > │ 00:00:28 v #2527 > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #2528 > > ///////<<<<<<<<<<<<<............................................................ 00:00:28 v #2529 > > │ 00:00:28 v #2530 > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.................. 00:00:28 v #2531 > > .////<<<<<<<<<<<<<.............................................................. 00:00:28 v #2532 > > │ 00:00:28 v #2533 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................... 00:00:28 v #2534 > > ..//<<<<<<<<<<<................................................................. 00:00:28 v #2535 > > │ 00:00:28 v #2536 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<...................... 00:00:28 v #2537 > > ...<<........................................................................... 00:00:28 v #2538 > > │ 00:00:28 v #2539 > > ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2540 > > ................................................................................ 00:00:28 v #2541 > > │ 00:00:28 v #2542 > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2543 > > ................................................................................ 00:00:28 v #2544 > > │ 00:00:28 v #2545 > > .......................///////<<<<<<<<<<<<<<<<<<<<<<............................ 00:00:28 v #2546 > > ................................................................................ 00:00:28 v #2547 > > │ 00:00:28 v #2548 > > ......................../////<<<<<<<<<<<<<<<<................................... 00:00:28 v #2549 > > ................................................................................ 00:00:28 v #2550 > > │ 00:00:28 v #2551 > > ........................////<<<<<<<<<<.......................................... 00:00:28 v #2552 > > ................................................................................ 00:00:28 v #2553 > > │ 00:00:28 v #2554 > > ........................./<<<<<<................................................ 00:00:28 v #2555 > > ................................................................................ 00:00:28 v #2556 > > │ 00:00:28 v #2557 > > ................................................................................ 00:00:28 v #2558 > > ................................................................................ 00:00:28 v #2559 > > │ 00:00:28 v #2560 > > ................................................................................ 00:00:28 v #2561 > > ................................................................................ 00:00:28 v #2562 > > │ 00:00:28 v #2563 > > ................................................................................ 00:00:28 v #2564 > > ................................................................................ 00:00:28 v #2565 > > │ 00:00:28 v #2566 > > ................................................................................ 00:00:28 v #2567 > > ................................................................................ 00:00:28 v #2568 > > │ 00:00:28 v #2569 > > ................................................................................ 00:00:28 v #2570 > > ................................................................................ 00:00:28 v #2571 > > │ 00:00:28 v #2572 > > ................................................................................ 00:00:28 v #2573 > > ................................................................................ 00:00:28 v #2574 > > │ 00:00:28 v #2575 > > ................................................................................ 00:00:28 v #2576 > > ................................................................................ 00:00:28 v #2577 > > │ 00:00:28 v #2578 > > ................................................................................ 00:00:28 v #2579 > > ................................................................................ 00:00:28 v #2580 > > │ 00:00:28 v #2581 > > ................................................................................ 00:00:28 v #2582 > > ................................................................................ 00:00:28 v #2583 > > │ 00:00:28 v #2584 > > │ 00:00:28 v #2585 > > ................................................................................ 00:00:28 v #2586 > > ................................................................................ 00:00:28 v #2587 > > │ 00:00:28 v #2588 > > ................................................................................ 00:00:28 v #2589 > > ................................................................................ 00:00:28 v #2590 > > │ 00:00:28 v #2591 > > ................................................................................ 00:00:28 v #2592 > > ................................................................................ 00:00:28 v #2593 > > │ 00:00:28 v #2594 > > ................................................................................ 00:00:28 v #2595 > > ................................................................................ 00:00:28 v #2596 > > │ 00:00:28 v #2597 > > ................................................................................ 00:00:28 v #2598 > > ................................................................................ 00:00:28 v #2599 > > │ 00:00:28 v #2600 > > ................................................................................ 00:00:28 v #2601 > > ................................................................................ 00:00:28 v #2602 > > │ 00:00:28 v #2603 > > ................................................................................ 00:00:28 v #2604 > > ................................................................................ 00:00:28 v #2605 > > │ 00:00:28 v #2606 > > ................................................................................ 00:00:28 v #2607 > > ................................................................................ 00:00:28 v #2608 > > │ 00:00:28 v #2609 > > ................................................................................ 00:00:28 v #2610 > > ................................................................................ 00:00:28 v #2611 > > │ 00:00:28 v #2612 > > .......................;;;;;;;.................................................. 00:00:28 v #2613 > > ................................................................................ 00:00:28 v #2614 > > │ 00:00:28 v #2615 > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;............................. 00:00:28 v #2616 > > ................................................................................ 00:00:28 v #2617 > > │ 00:00:28 v #2618 > > ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;........................... 00:00:28 v #2619 > > ................................................................................ 00:00:28 v #2620 > > │ 00:00:28 v #2621 > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... 00:00:28 v #2622 > > ................................................................................ 00:00:28 v #2623 > > │ 00:00:28 v #2624 > > .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ 00:00:28 v #2625 > > ................................................................................ 00:00:28 v #2626 > > │ 00:00:28 v #2627 > > ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... 00:00:28 v #2628 > > ................................................................................ 00:00:28 v #2629 > > │ 00:00:28 v #2630 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... 00:00:28 v #2631 > > ................................................................................ 00:00:28 v #2632 > > │ 00:00:28 v #2633 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #2634 > > ../;;;;;;;;;;;;;;............................................................... 00:00:28 v #2635 > > │ 00:00:28 v #2636 > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #2637 > > .>/;;;;;;;;;;;;;;;;............................................................. 00:00:28 v #2638 > > │ 00:00:28 v #2639 > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... 00:00:28 v #2640 > > >///;;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2641 > > │ 00:00:28 v #2642 > > .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............> 00:00:28 v #2643 > > ///////;;;;;;;;;;;;;;..............>/;;;;;;;.................................... 00:00:28 v #2644 > > │ 00:00:28 v #2645 > > ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........> 00:00:28 v #2646 > > ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. 00:00:28 v #2647 > > │ 00:00:28 v #2648 > > ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......> 00:00:28 v #2649 > > /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<................................. 00:00:28 v #2650 > > │ 00:00:28 v #2651 > > ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<........ 00:00:28 v #2652 > > /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<................................. 00:00:28 v #2653 > > │ 00:00:28 v #2654 > > ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<........... 00:00:28 v #2655 > > //////////<<<<<<<<<<<<<.........../////<<<<<<<.................................. 00:00:28 v #2656 > > │ 00:00:28 v #2657 > > .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............. 00:00:28 v #2658 > > /////////<<<<<<<<<<<<..............//<<<<<<<.................................... 00:00:28 v #2659 > > │ 00:00:28 v #2660 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ 00:00:28 v #2661 > > ////////<<<<<<<<<<<<............................................................ 00:00:28 v #2662 > > │ 00:00:28 v #2663 > > ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................. 00:00:28 v #2664 > > ./////<<<<<<<<<<<<.............................................................. 00:00:28 v #2665 > > │ 00:00:28 v #2666 > > ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<.................... 00:00:28 v #2667 > > ..///<<<<<<<<<<................................................................. 00:00:28 v #2668 > > │ 00:00:28 v #2669 > > .....................///////////////<<<<<<<<<<<<<<<<<<<<<<...................... 00:00:28 v #2670 > > .../<<<......................................................................... 00:00:28 v #2671 > > │ 00:00:28 v #2672 > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2673 > > ................................................................................ 00:00:28 v #2674 > > │ 00:00:28 v #2675 > > ......................///////////<<<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2676 > > ................................................................................ 00:00:28 v #2677 > > │ 00:00:28 v #2678 > > ......................./////////<<<<<<<<<<<<<<<<<<<<............................ 00:00:28 v #2679 > > ................................................................................ 00:00:28 v #2680 > > │ 00:00:28 v #2681 > > ........................///////<<<<<<<<<<<<<<<.................................. 00:00:28 v #2682 > > ................................................................................ 00:00:28 v #2683 > > │ 00:00:28 v #2684 > > .........................////<<<<<<<<<<<........................................ 00:00:28 v #2685 > > ................................................................................ 00:00:28 v #2686 > > │ 00:00:28 v #2687 > > ..........................//<<<<<<<............................................. 00:00:28 v #2688 > > ................................................................................ 00:00:28 v #2689 > > │ 00:00:28 v #2690 > > ...........................<<................................................... 00:00:28 v #2691 > > ................................................................................ 00:00:28 v #2692 > > │ 00:00:28 v #2693 > > ................................................................................ 00:00:28 v #2694 > > ................................................................................ 00:00:28 v #2695 > > │ 00:00:28 v #2696 > > ................................................................................ 00:00:28 v #2697 > > ................................................................................ 00:00:28 v #2698 > > │ 00:00:28 v #2699 > > ................................................................................ 00:00:28 v #2700 > > ................................................................................ 00:00:28 v #2701 > > │ 00:00:28 v #2702 > > ................................................................................ 00:00:28 v #2703 > > ................................................................................ 00:00:28 v #2704 > > │ 00:00:28 v #2705 > > ................................................................................ 00:00:28 v #2706 > > ................................................................................ 00:00:28 v #2707 > > │ 00:00:28 v #2708 > > ................................................................................ 00:00:28 v #2709 > > ................................................................................ 00:00:28 v #2710 > > │ 00:00:28 v #2711 > > ................................................................................ 00:00:28 v #2712 > > ................................................................................ 00:00:28 v #2713 > > │ 00:00:28 v #2714 > > ................................................................................ 00:00:28 v #2715 > > ................................................................................ 00:00:28 v #2716 > > │ 00:00:28 v #2717 > > │ 00:00:28 v #2718 > > ................................................................................ 00:00:28 v #2719 > > ................................................................................ 00:00:28 v #2720 > > │ 00:00:28 v #2721 > > ................................................................................ 00:00:28 v #2722 > > ................................................................................ 00:00:28 v #2723 > > │ 00:00:28 v #2724 > > ................................................................................ 00:00:28 v #2725 > > ................................................................................ 00:00:28 v #2726 > > │ 00:00:28 v #2727 > > ................................................................................ 00:00:28 v #2728 > > ................................................................................ 00:00:28 v #2729 > > │ 00:00:28 v #2730 > > ................................................................................ 00:00:28 v #2731 > > ................................................................................ 00:00:28 v #2732 > > │ 00:00:28 v #2733 > > ................................................................................ 00:00:28 v #2734 > > ................................................................................ 00:00:28 v #2735 > > │ 00:00:28 v #2736 > > ................................................................................ 00:00:28 v #2737 > > ................................................................................ 00:00:28 v #2738 > > │ 00:00:28 v #2739 > > ................................................................................ 00:00:28 v #2740 > > ................................................................................ 00:00:28 v #2741 > > │ 00:00:28 v #2742 > > ................................................................................ 00:00:28 v #2743 > > ................................................................................ 00:00:28 v #2744 > > │ 00:00:28 v #2745 > > .......................;;;;..................................................... 00:00:28 v #2746 > > ................................................................................ 00:00:28 v #2747 > > │ 00:00:28 v #2748 > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................ 00:00:28 v #2749 > > ................................................................................ 00:00:28 v #2750 > > │ 00:00:28 v #2751 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;............................. 00:00:28 v #2752 > > ................................................................................ 00:00:28 v #2753 > > │ 00:00:28 v #2754 > > .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;........................... 00:00:28 v #2755 > > ................................................................................ 00:00:28 v #2756 > > │ 00:00:28 v #2757 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;......................... 00:00:28 v #2758 > > ................................................................................ 00:00:28 v #2759 > > │ 00:00:28 v #2760 > > ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #2761 > > ................................................................................ 00:00:28 v #2762 > > │ 00:00:28 v #2763 > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... 00:00:28 v #2764 > > ................................................................................ 00:00:28 v #2765 > > │ 00:00:28 v #2766 > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... 00:00:28 v #2767 > > ..;;;;;;;;;;;;;;\............................................................... 00:00:28 v #2768 > > │ 00:00:28 v #2769 > > ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ 00:00:28 v #2770 > > .>/;;;;;;;;;;;;;;;.............................................................. 00:00:28 v #2771 > > │ 00:00:28 v #2772 > > .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. 00:00:28 v #2773 > > >///;/;;;;;;;;;;;;;;............................................................ 00:00:28 v #2774 > > │ 00:00:28 v #2775 > > ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........> 00:00:28 v #2776 > > //////;;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... 00:00:28 v #2777 > > │ 00:00:28 v #2778 > > ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........> 00:00:28 v #2779 > > ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. 00:00:28 v #2780 > > │ 00:00:28 v #2781 > > ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......> 00:00:28 v #2782 > > /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<................................. 00:00:28 v #2783 > > │ 00:00:28 v #2784 > > ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<......... 00:00:28 v #2785 > > //////////;<<<<<<<<<<<<<.........///////<<<<<<<................................. 00:00:28 v #2786 > > │ 00:00:28 v #2787 > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<........... 00:00:28 v #2788 > > //////////<<<<<<<<<<<<............/////<<<<<<................................... 00:00:28 v #2789 > > │ 00:00:28 v #2790 > > ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #2791 > > /////////<<<<<<<<<<<<..............///<<<<<<.................................... 00:00:28 v #2792 > > │ 00:00:28 v #2793 > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<................. 00:00:28 v #2794 > > ///////<<<<<<<<<<<<..................<.......................................... 00:00:28 v #2795 > > │ 00:00:28 v #2796 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #2797 > > .//////<<<<<<<<<<<.............................................................. 00:00:28 v #2798 > > │ 00:00:28 v #2799 > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<..................... 00:00:28 v #2800 > > ...//<<<<<<<<<<................................................................. 00:00:28 v #2801 > > │ 00:00:28 v #2802 > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<...................... 00:00:28 v #2803 > > ..../<<<........................................................................ 00:00:28 v #2804 > > │ 00:00:28 v #2805 > > .....................///////////////<<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2806 > > ................................................................................ 00:00:28 v #2807 > > │ 00:00:28 v #2808 > > ....................../////////////<<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2809 > > ................................................................................ 00:00:28 v #2810 > > │ 00:00:28 v #2811 > > .......................//////////<<<<<<<<<<<<<<<<<<<<........................... 00:00:28 v #2812 > > ................................................................................ 00:00:28 v #2813 > > │ 00:00:28 v #2814 > > ........................////////<<<<<<<<<<<<<<<................................. 00:00:28 v #2815 > > ................................................................................ 00:00:28 v #2816 > > │ 00:00:28 v #2817 > > ..........................////<<<<<<<<<<<<...................................... 00:00:28 v #2818 > > ................................................................................ 00:00:28 v #2819 > > │ 00:00:28 v #2820 > > ..........................////<<<<<<<........................................... 00:00:28 v #2821 > > ................................................................................ 00:00:28 v #2822 > > │ 00:00:28 v #2823 > > ............................<<<<................................................ 00:00:28 v #2824 > > ................................................................................ 00:00:28 v #2825 > > │ 00:00:28 v #2826 > > ................................................................................ 00:00:28 v #2827 > > ................................................................................ 00:00:28 v #2828 > > │ 00:00:28 v #2829 > > ................................................................................ 00:00:28 v #2830 > > ................................................................................ 00:00:28 v #2831 > > │ 00:00:28 v #2832 > > ................................................................................ 00:00:28 v #2833 > > ................................................................................ 00:00:28 v #2834 > > │ 00:00:28 v #2835 > > ................................................................................ 00:00:28 v #2836 > > ................................................................................ 00:00:28 v #2837 > > │ 00:00:28 v #2838 > > ................................................................................ 00:00:28 v #2839 > > ................................................................................ 00:00:28 v #2840 > > │ 00:00:28 v #2841 > > ................................................................................ 00:00:28 v #2842 > > ................................................................................ 00:00:28 v #2843 > > │ 00:00:28 v #2844 > > ................................................................................ 00:00:28 v #2845 > > ................................................................................ 00:00:28 v #2846 > > │ 00:00:28 v #2847 > > ................................................................................ 00:00:28 v #2848 > > ................................................................................ 00:00:28 v #2849 > > │ 00:00:28 v #2850 > > │ 00:00:28 v #2851 > > ................................................................................ 00:00:28 v #2852 > > ................................................................................ 00:00:28 v #2853 > > │ 00:00:28 v #2854 > > ................................................................................ 00:00:28 v #2855 > > ................................................................................ 00:00:28 v #2856 > > │ 00:00:28 v #2857 > > ................................................................................ 00:00:28 v #2858 > > ................................................................................ 00:00:28 v #2859 > > │ 00:00:28 v #2860 > > ................................................................................ 00:00:28 v #2861 > > ................................................................................ 00:00:28 v #2862 > > │ 00:00:28 v #2863 > > ................................................................................ 00:00:28 v #2864 > > ................................................................................ 00:00:28 v #2865 > > │ 00:00:28 v #2866 > > ................................................................................ 00:00:28 v #2867 > > ................................................................................ 00:00:28 v #2868 > > │ 00:00:28 v #2869 > > ................................................................................ 00:00:28 v #2870 > > ................................................................................ 00:00:28 v #2871 > > │ 00:00:28 v #2872 > > ................................................................................ 00:00:28 v #2873 > > ................................................................................ 00:00:28 v #2874 > > │ 00:00:28 v #2875 > > ................................................................................ 00:00:28 v #2876 > > ................................................................................ 00:00:28 v #2877 > > │ 00:00:28 v #2878 > > .......................;;....................................................... 00:00:28 v #2879 > > ................................................................................ 00:00:28 v #2880 > > │ 00:00:28 v #2881 > > ......................>;;;;;;;;;;;;;;;;;;;;..................................... 00:00:28 v #2882 > > ................................................................................ 00:00:28 v #2883 > > │ 00:00:28 v #2884 > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.............................. 00:00:28 v #2885 > > ................................................................................ 00:00:28 v #2886 > > │ 00:00:28 v #2887 > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................ 00:00:28 v #2888 > > ................................................................................ 00:00:28 v #2889 > > │ 00:00:28 v #2890 > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\......................... 00:00:28 v #2891 > > ................................................................................ 00:00:28 v #2892 > > │ 00:00:28 v #2893 > > ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... 00:00:28 v #2894 > > ................................................................................ 00:00:28 v #2895 > > │ 00:00:28 v #2896 > > ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #2897 > > ................................................................................ 00:00:28 v #2898 > > │ 00:00:28 v #2899 > > ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. 00:00:28 v #2900 > > .>/;;;;;;;;;;;;;................................................................ 00:00:28 v #2901 > > │ 00:00:28 v #2902 > > ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #2903 > > >//;;;;;;;;;;;;;;;.............................................................. 00:00:28 v #2904 > > │ 00:00:28 v #2905 > > .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #2906 > > >////;;;;;;;;;;;;;;;............................................................ 00:00:28 v #2907 > > │ 00:00:28 v #2908 > > .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........> 00:00:28 v #2909 > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... 00:00:28 v #2910 > > │ 00:00:28 v #2911 > > ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........> 00:00:28 v #2912 > > ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.................................. 00:00:28 v #2913 > > │ 00:00:28 v #2914 > > ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........> 00:00:28 v #2915 > > //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<................................. 00:00:28 v #2916 > > │ 00:00:28 v #2917 > > ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<......... 00:00:28 v #2918 > > ////////////<<<<<<<<<<<..........///////<<<<<<<................................. 00:00:28 v #2919 > > │ 00:00:28 v #2920 > > ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............ 00:00:28 v #2921 > > ///////////<<<<<<<<<<<............/////<<<<<<................................... 00:00:28 v #2922 > > │ 00:00:28 v #2923 > > ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #2924 > > //////////<<<<<<<<<<<..............///<<<<<<.................................... 00:00:28 v #2925 > > │ 00:00:28 v #2926 > > ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.................. 00:00:28 v #2927 > > ////////<<<<<<<<<<<..................<.......................................... 00:00:28 v #2928 > > │ 00:00:28 v #2929 > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #2930 > > .//////<<<<<<<<<<<.............................................................. 00:00:28 v #2931 > > │ 00:00:28 v #2932 > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<..................... 00:00:28 v #2933 > > ...///<<<<<<<<<<................................................................ 00:00:28 v #2934 > > │ 00:00:28 v #2935 > > ....................//////////////////<<<<<<<<<<<<<<<<<<<<...................... 00:00:28 v #2936 > > ..../<<<<....................................................................... 00:00:28 v #2937 > > │ 00:00:28 v #2938 > > .....................////////////////<<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #2939 > > ................................................................................ 00:00:28 v #2940 > > │ 00:00:28 v #2941 > > ......................//////////////<<<<<<<<<<<<<<<<<<.......................... 00:00:28 v #2942 > > ................................................................................ 00:00:28 v #2943 > > │ 00:00:28 v #2944 > > ........................///////////<<<<<<<<<<<<<<<<<<........................... 00:00:28 v #2945 > > ................................................................................ 00:00:28 v #2946 > > │ 00:00:28 v #2947 > > .........................////////<<<<<<<<<<<<<<<................................ 00:00:28 v #2948 > > ................................................................................ 00:00:28 v #2949 > > │ 00:00:28 v #2950 > > ..........................//////<<<<<<<<<<<..................................... 00:00:28 v #2951 > > ................................................................................ 00:00:28 v #2952 > > │ 00:00:28 v #2953 > > ...........................////<<<<<<<<......................................... 00:00:28 v #2954 > > ................................................................................ 00:00:28 v #2955 > > │ 00:00:28 v #2956 > > ............................//<<<<.............................................. 00:00:28 v #2957 > > ................................................................................ 00:00:28 v #2958 > > │ 00:00:28 v #2959 > > ................................................................................ 00:00:28 v #2960 > > ................................................................................ 00:00:28 v #2961 > > │ 00:00:28 v #2962 > > ................................................................................ 00:00:28 v #2963 > > ................................................................................ 00:00:28 v #2964 > > │ 00:00:28 v #2965 > > ................................................................................ 00:00:28 v #2966 > > ................................................................................ 00:00:28 v #2967 > > │ 00:00:28 v #2968 > > ................................................................................ 00:00:28 v #2969 > > ................................................................................ 00:00:28 v #2970 > > │ 00:00:28 v #2971 > > ................................................................................ 00:00:28 v #2972 > > ................................................................................ 00:00:28 v #2973 > > │ 00:00:28 v #2974 > > ................................................................................ 00:00:28 v #2975 > > ................................................................................ 00:00:28 v #2976 > > │ 00:00:28 v #2977 > > ................................................................................ 00:00:28 v #2978 > > ................................................................................ 00:00:28 v #2979 > > │ 00:00:28 v #2980 > > ................................................................................ 00:00:28 v #2981 > > ................................................................................ 00:00:28 v #2982 > > │ 00:00:28 v #2983 > > │ 00:00:28 v #2984 > > ................................................................................ 00:00:28 v #2985 > > ................................................................................ 00:00:28 v #2986 > > │ 00:00:28 v #2987 > > ................................................................................ 00:00:28 v #2988 > > ................................................................................ 00:00:28 v #2989 > > │ 00:00:28 v #2990 > > ................................................................................ 00:00:28 v #2991 > > ................................................................................ 00:00:28 v #2992 > > │ 00:00:28 v #2993 > > ................................................................................ 00:00:28 v #2994 > > ................................................................................ 00:00:28 v #2995 > > │ 00:00:28 v #2996 > > ................................................................................ 00:00:28 v #2997 > > ................................................................................ 00:00:28 v #2998 > > │ 00:00:28 v #2999 > > ................................................................................ 00:00:28 v #3000 > > ................................................................................ 00:00:28 v #3001 > > │ 00:00:28 v #3002 > > ................................................................................ 00:00:28 v #3003 > > ................................................................................ 00:00:28 v #3004 > > │ 00:00:28 v #3005 > > ................................................................................ 00:00:28 v #3006 > > ................................................................................ 00:00:28 v #3007 > > │ 00:00:28 v #3008 > > ................................................................................ 00:00:28 v #3009 > > ................................................................................ 00:00:28 v #3010 > > │ 00:00:28 v #3011 > > ................................................................................ 00:00:28 v #3012 > > ................................................................................ 00:00:28 v #3013 > > │ 00:00:28 v #3014 > > ....................../;;;;;;;;;;;;;;;;......................................... 00:00:28 v #3015 > > ................................................................................ 00:00:28 v #3016 > > │ 00:00:28 v #3017 > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................ 00:00:28 v #3018 > > ................................................................................ 00:00:28 v #3019 > > │ 00:00:28 v #3020 > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;............................. 00:00:28 v #3021 > > ................................................................................ 00:00:28 v #3022 > > │ 00:00:28 v #3023 > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;........................... 00:00:28 v #3024 > > ................................................................................ 00:00:28 v #3025 > > │ 00:00:28 v #3026 > > ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................ 00:00:28 v #3027 > > ................................................................................ 00:00:28 v #3028 > > │ 00:00:28 v #3029 > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #3030 > > ................................................................................ 00:00:28 v #3031 > > │ 00:00:28 v #3032 > > ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #3033 > > .>;;;;;;;;;;;;;................................................................. 00:00:28 v #3034 > > │ 00:00:28 v #3035 > > ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #3036 > > >//;/;;;;;;;;;;;;............................................................... 00:00:28 v #3037 > > │ 00:00:28 v #3038 > > .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............ 00:00:28 v #3039 > > //////;;;;;;;;;;;;;;............................................................ 00:00:28 v #3040 > > │ 00:00:28 v #3041 > > ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........> 00:00:28 v #3042 > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... 00:00:28 v #3043 > > │ 00:00:28 v #3044 > > ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........> 00:00:28 v #3045 > > ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;.................................. 00:00:28 v #3046 > > │ 00:00:28 v #3047 > > ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........> 00:00:28 v #3048 > > ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<................................. 00:00:28 v #3049 > > │ 00:00:28 v #3050 > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............ 00:00:28 v #3051 > > ////////////<<<<<<<<<<<..........///////<<<<<<.................................. 00:00:28 v #3052 > > │ 00:00:28 v #3053 > > ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............ 00:00:28 v #3054 > > ///////////<<<<<<<<<<<............/////<<<<<<................................... 00:00:28 v #3055 > > │ 00:00:28 v #3056 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<............... 00:00:28 v #3057 > > //////////<<<<<<<<<<<...............///<<<<<.................................... 00:00:28 v #3058 > > │ 00:00:28 v #3059 > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<................... 00:00:28 v #3060 > > /////////<<<<<<<<<<................../.......................................... 00:00:28 v #3061 > > │ 00:00:28 v #3062 > > ................//////////////////////////<<<<<<<<<<<<<<<<<<.................... 00:00:28 v #3063 > > .///////<<<<<<<<<<.............................................................. 00:00:28 v #3064 > > │ 00:00:28 v #3065 > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<..................... 00:00:28 v #3066 > > ...////<<<<<<<<<................................................................ 00:00:28 v #3067 > > │ 00:00:28 v #3068 > > ....................///////////////////<<<<<<<<<<<<<<<<<<....................... 00:00:28 v #3069 > > ...../<<<....................................................................... 00:00:28 v #3070 > > │ 00:00:28 v #3071 > > ...................../////////////////<<<<<<<<<<<<<<<<<<........................ 00:00:28 v #3072 > > ................................................................................ 00:00:28 v #3073 > > │ 00:00:28 v #3074 > > ......................///////////////<<<<<<<<<<<<<<<<<<......................... 00:00:28 v #3075 > > ................................................................................ 00:00:28 v #3076 > > │ 00:00:28 v #3077 > > ........................////////////<<<<<<<<<<<<<<<<<........................... 00:00:28 v #3078 > > ................................................................................ 00:00:28 v #3079 > > │ 00:00:28 v #3080 > > .........................//////////<<<<<<<<<<<<<<............................... 00:00:28 v #3081 > > ................................................................................ 00:00:28 v #3082 > > │ 00:00:28 v #3083 > > ...........................///////<<<<<<<<<<<................................... 00:00:28 v #3084 > > ................................................................................ 00:00:28 v #3085 > > │ 00:00:28 v #3086 > > ............................/////<<<<<<<........................................ 00:00:28 v #3087 > > ................................................................................ 00:00:28 v #3088 > > │ 00:00:28 v #3089 > > ..............................//<<<<............................................ 00:00:28 v #3090 > > ................................................................................ 00:00:28 v #3091 > > │ 00:00:28 v #3092 > > ................................................................................ 00:00:28 v #3093 > > ................................................................................ 00:00:28 v #3094 > > │ 00:00:28 v #3095 > > ................................................................................ 00:00:28 v #3096 > > ................................................................................ 00:00:28 v #3097 > > │ 00:00:28 v #3098 > > ................................................................................ 00:00:28 v #3099 > > ................................................................................ 00:00:28 v #3100 > > │ 00:00:28 v #3101 > > ................................................................................ 00:00:28 v #3102 > > ................................................................................ 00:00:28 v #3103 > > │ 00:00:28 v #3104 > > ................................................................................ 00:00:28 v #3105 > > ................................................................................ 00:00:28 v #3106 > > │ 00:00:28 v #3107 > > ................................................................................ 00:00:28 v #3108 > > ................................................................................ 00:00:28 v #3109 > > │ 00:00:28 v #3110 > > ................................................................................ 00:00:28 v #3111 > > ................................................................................ 00:00:28 v #3112 > > │ 00:00:28 v #3113 > > ................................................................................ 00:00:28 v #3114 > > ................................................................................ 00:00:28 v #3115 > > │ 00:00:28 v #3116 > > │ 00:00:28 v #3117 > > ................................................................................ 00:00:28 v #3118 > > ................................................................................ 00:00:28 v #3119 > > │ 00:00:28 v #3120 > > ................................................................................ 00:00:28 v #3121 > > ................................................................................ 00:00:28 v #3122 > > │ 00:00:28 v #3123 > > ................................................................................ 00:00:28 v #3124 > > ................................................................................ 00:00:28 v #3125 > > │ 00:00:28 v #3126 > > ................................................................................ 00:00:28 v #3127 > > ................................................................................ 00:00:28 v #3128 > > │ 00:00:28 v #3129 > > ................................................................................ 00:00:28 v #3130 > > ................................................................................ 00:00:28 v #3131 > > │ 00:00:28 v #3132 > > ................................................................................ 00:00:28 v #3133 > > ................................................................................ 00:00:28 v #3134 > > │ 00:00:28 v #3135 > > ................................................................................ 00:00:28 v #3136 > > ................................................................................ 00:00:28 v #3137 > > │ 00:00:28 v #3138 > > ................................................................................ 00:00:28 v #3139 > > ................................................................................ 00:00:28 v #3140 > > │ 00:00:28 v #3141 > > ................................................................................ 00:00:28 v #3142 > > ................................................................................ 00:00:28 v #3143 > > │ 00:00:28 v #3144 > > ................................................................................ 00:00:28 v #3145 > > ................................................................................ 00:00:28 v #3146 > > │ 00:00:28 v #3147 > > .....................>;;;;;;;;;;;;.............................................. 00:00:28 v #3148 > > ................................................................................ 00:00:28 v #3149 > > │ 00:00:28 v #3150 > > .....................///;;;;;;;;;;;;;;;;;;;;;;.................................. 00:00:28 v #3151 > > ................................................................................ 00:00:28 v #3152 > > │ 00:00:28 v #3153 > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;............................... 00:00:28 v #3154 > > ................................................................................ 00:00:28 v #3155 > > │ 00:00:28 v #3156 > > ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\........................... 00:00:28 v #3157 > > ................................................................................ 00:00:28 v #3158 > > │ 00:00:28 v #3159 > > ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................ 00:00:28 v #3160 > > ................................................................................ 00:00:28 v #3161 > > │ 00:00:28 v #3162 > > ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #3163 > > ................................................................................ 00:00:28 v #3164 > > │ 00:00:28 v #3165 > > ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.................. 00:00:28 v #3166 > > .;;;;;;;;;;;;;.................................................................. 00:00:28 v #3167 > > │ 00:00:28 v #3168 > > .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.............. 00:00:28 v #3169 > > >///;;;;;;;;;;;;;............................................................... 00:00:28 v #3170 > > │ 00:00:28 v #3171 > > .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............ 00:00:28 v #3172 > > /////;;;;;;;;;;;;;;;............................................................ 00:00:28 v #3173 > > │ 00:00:28 v #3174 > > ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........> 00:00:28 v #3175 > > ////////;/;;;;;;;;;;;;;............>/;;;;;;;.................................... 00:00:28 v #3176 > > │ 00:00:28 v #3177 > > ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........> 00:00:28 v #3178 > > //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.................................. 00:00:28 v #3179 > > │ 00:00:28 v #3180 > > ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........> 00:00:28 v #3181 > > /////////////<<<<<<<<<<..........>///////<<<<<<................................. 00:00:28 v #3182 > > │ 00:00:28 v #3183 > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............. 00:00:28 v #3184 > > ////////////<<<<<<<<<<...........////////<<<<<.................................. 00:00:28 v #3185 > > │ 00:00:28 v #3186 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............> 00:00:28 v #3187 > > ///////////<<<<<<<<<<............///////<<<<<................................... 00:00:28 v #3188 > > │ 00:00:28 v #3189 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<............... 00:00:28 v #3190 > > ///////////<<<<<<<<<................///<<<<<.................................... 00:00:28 v #3191 > > │ 00:00:28 v #3192 > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<.................. 00:00:28 v #3193 > > //////////<<<<<<<<<.................../......................................... 00:00:28 v #3194 > > │ 00:00:28 v #3195 > > ...............////////////////////////////<<<<<<<<<<<<<<<<<.................... 00:00:28 v #3196 > > ..///////<<<<<<<<<.............................................................. 00:00:28 v #3197 > > │ 00:00:28 v #3198 > > ................./////////////////////////<<<<<<<<<<<<<<<<...................... 00:00:28 v #3199 > > ....////<<<<<<<<................................................................ 00:00:28 v #3200 > > │ 00:00:28 v #3201 > > ...................//////////////////////<<<<<<<<<<<<<<<<....................... 00:00:28 v #3202 > > ....../<<<...................................................................... 00:00:28 v #3203 > > │ 00:00:28 v #3204 > > .....................//////////////////<<<<<<<<<<<<<<<<<........................ 00:00:28 v #3205 > > ................................................................................ 00:00:28 v #3206 > > │ 00:00:28 v #3207 > > ....................../////////////////<<<<<<<<<<<<<<<<......................... 00:00:28 v #3208 > > ................................................................................ 00:00:28 v #3209 > > │ 00:00:28 v #3210 > > ........................//////////////<<<<<<<<<<<<<<<........................... 00:00:28 v #3211 > > ................................................................................ 00:00:28 v #3212 > > │ 00:00:28 v #3213 > > ..........................///////////<<<<<<<<<<<<............................... 00:00:28 v #3214 > > ................................................................................ 00:00:28 v #3215 > > │ 00:00:28 v #3216 > > ............................////////<<<<<<<<<<.................................. 00:00:28 v #3217 > > ................................................................................ 00:00:28 v #3218 > > │ 00:00:28 v #3219 > > .............................//////<<<<<<<...................................... 00:00:28 v #3220 > > ................................................................................ 00:00:28 v #3221 > > │ 00:00:28 v #3222 > > ...............................///<<<<.......................................... 00:00:28 v #3223 > > ................................................................................ 00:00:28 v #3224 > > │ 00:00:28 v #3225 > > .................................<.............................................. 00:00:28 v #3226 > > ................................................................................ 00:00:28 v #3227 > > │ 00:00:28 v #3228 > > ................................................................................ 00:00:28 v #3229 > > ................................................................................ 00:00:28 v #3230 > > │ 00:00:28 v #3231 > > ................................................................................ 00:00:28 v #3232 > > ................................................................................ 00:00:28 v #3233 > > │ 00:00:28 v #3234 > > ................................................................................ 00:00:28 v #3235 > > ................................................................................ 00:00:28 v #3236 > > │ 00:00:28 v #3237 > > ................................................................................ 00:00:28 v #3238 > > ................................................................................ 00:00:28 v #3239 > > │ 00:00:28 v #3240 > > ................................................................................ 00:00:28 v #3241 > > ................................................................................ 00:00:28 v #3242 > > │ 00:00:28 v #3243 > > ................................................................................ 00:00:28 v #3244 > > ................................................................................ 00:00:28 v #3245 > > │ 00:00:28 v #3246 > > ................................................................................ 00:00:28 v #3247 > > ................................................................................ 00:00:28 v #3248 > > │ 00:00:28 v #3249 > > │ 00:00:28 v #3250 > > ................................................................................ 00:00:28 v #3251 > > ................................................................................ 00:00:28 v #3252 > > │ 00:00:28 v #3253 > > ................................................................................ 00:00:28 v #3254 > > ................................................................................ 00:00:28 v #3255 > > │ 00:00:28 v #3256 > > ................................................................................ 00:00:28 v #3257 > > ................................................................................ 00:00:28 v #3258 > > │ 00:00:28 v #3259 > > ................................................................................ 00:00:28 v #3260 > > ................................................................................ 00:00:28 v #3261 > > │ 00:00:28 v #3262 > > ................................................................................ 00:00:28 v #3263 > > ................................................................................ 00:00:28 v #3264 > > │ 00:00:28 v #3265 > > ................................................................................ 00:00:28 v #3266 > > ................................................................................ 00:00:28 v #3267 > > │ 00:00:28 v #3268 > > ................................................................................ 00:00:28 v #3269 > > ................................................................................ 00:00:28 v #3270 > > │ 00:00:28 v #3271 > > ................................................................................ 00:00:28 v #3272 > > ................................................................................ 00:00:28 v #3273 > > │ 00:00:28 v #3274 > > ................................................................................ 00:00:28 v #3275 > > ................................................................................ 00:00:28 v #3276 > > │ 00:00:28 v #3277 > > ................................................................................ 00:00:28 v #3278 > > ................................................................................ 00:00:28 v #3279 > > │ 00:00:28 v #3280 > > ...................../;;;;;;;;.................................................. 00:00:28 v #3281 > > ................................................................................ 00:00:28 v #3282 > > │ 00:00:28 v #3283 > > ....................>//;;;;;;;;;;;;;;;;;;;;;.................................... 00:00:28 v #3284 > > ................................................................................ 00:00:28 v #3285 > > │ 00:00:28 v #3286 > > ....................//////;;;;;;;;;;;;;;;;;;;;;................................. 00:00:28 v #3287 > > ................................................................................ 00:00:28 v #3288 > > │ 00:00:28 v #3289 > > ...................>//////////;/;;;;;;;;;;;;;;;;;;;............................. 00:00:28 v #3290 > > ................................................................................ 00:00:28 v #3291 > > │ 00:00:28 v #3292 > > ...................//////////////;/;;;;;;;;;;;;;;;;;;;;......................... 00:00:28 v #3293 > > ................................................................................ 00:00:28 v #3294 > > │ 00:00:28 v #3295 > > ..................>////////////////////;;;;;;;;;;;;;;;;;;;;..................... 00:00:28 v #3296 > > ................................................................................ 00:00:28 v #3297 > > │ 00:00:28 v #3298 > > ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;................. 00:00:28 v #3299 > > .;;;;;;;;;;;;\.................................................................. 00:00:28 v #3300 > > │ 00:00:28 v #3301 > > .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.............. 00:00:28 v #3302 > > >/;;/;;;;;;;;;;;;............................................................... 00:00:28 v #3303 > > │ 00:00:28 v #3304 > > .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............ 00:00:28 v #3305 > > /////;;/;;;;;;;;;;;;............................................................ 00:00:28 v #3306 > > │ 00:00:28 v #3307 > > ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............> 00:00:28 v #3308 > > ////////;;;;;;;;;;;;;;;............;;;;;;;;;.................................... 00:00:28 v #3309 > > │ 00:00:28 v #3310 > > ................/////////////////////////////////<<<<<<<<<<<<<<<<.............> 00:00:28 v #3311 > > ////////////;;<<<<<<<<<<..........>////;;;;;;;;................................. 00:00:28 v #3312 > > │ 00:00:28 v #3313 > > ...............>////////////////////////////////<<<<<<<<<<<<<<<<.............. 00:00:28 v #3314 > > //////////////<<<<<<<<<...........//////;<<<<<<................................. 00:00:28 v #3315 > > │ 00:00:28 v #3316 > > ...............////////////////////////////////<<<<<<<<<<<<<<<<..............> 00:00:28 v #3317 > > /////////////<<<<<<<<<...........>///////<<<<<.................................. 00:00:28 v #3318 > > │ 00:00:28 v #3319 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............> 00:00:28 v #3320 > > ////////////<<<<<<<<<............///////<<<<<................................... 00:00:28 v #3321 > > │ 00:00:28 v #3322 > > ..............///////////////////////////////<<<<<<<<<<<<<<<<................ 00:00:28 v #3323 > > ///////////<<<<<<<<<................///<<<<<.................................... 00:00:28 v #3324 > > │ 00:00:28 v #3325 > > .............>///////////////////////////////<<<<<<<<<<<<<<<................... 00:00:28 v #3326 > > //////////<<<<<<<<<............................................................. 00:00:28 v #3327 > > │ 00:00:28 v #3328 > > ..............//////////////////////////////<<<<<<<<<<<<<<<..................... 00:00:28 v #3329 > > ..///////<<<<<<<<<.............................................................. 00:00:28 v #3330 > > │ 00:00:28 v #3331 > > ................///////////////////////////<<<<<<<<<<<<<<<...................... 00:00:28 v #3332 > > ..../////<<<<<<<................................................................ 00:00:28 v #3333 > > │ 00:00:28 v #3334 > > ..................////////////////////////<<<<<<<<<<<<<<<....................... 00:00:28 v #3335 > > ......./<<...................................................................... 00:00:28 v #3336 > > │ 00:00:28 v #3337 > > ..................../////////////////////<<<<<<<<<<<<<<<........................ 00:00:28 v #3338 > > ................................................................................ 00:00:28 v #3339 > > │ 00:00:28 v #3340 > > ......................//////////////////<<<<<<<<<<<<<<<......................... 00:00:28 v #3341 > > ................................................................................ 00:00:28 v #3342 > > │ 00:00:28 v #3343 > > ........................///////////////<<<<<<<<<<<<<<........................... 00:00:28 v #3344 > > ................................................................................ 00:00:28 v #3345 > > │ 00:00:28 v #3346 > > ...........................///////////<<<<<<<<<<<<.............................. 00:00:28 v #3347 > > ................................................................................ 00:00:28 v #3348 > > │ 00:00:28 v #3349 > > ............................//////////<<<<<<<<<................................. 00:00:28 v #3350 > > ................................................................................ 00:00:28 v #3351 > > │ 00:00:28 v #3352 > > ..............................///////<<<<<<..................................... 00:00:28 v #3353 > > ................................................................................ 00:00:28 v #3354 > > │ 00:00:28 v #3355 > > ................................////<<<<........................................ 00:00:28 v #3356 > > ................................................................................ 00:00:28 v #3357 > > │ 00:00:28 v #3358 > > ...................................<............................................ 00:00:28 v #3359 > > ................................................................................ 00:00:28 v #3360 > > │ 00:00:28 v #3361 > > ................................................................................ 00:00:28 v #3362 > > ................................................................................ 00:00:28 v #3363 > > │ 00:00:28 v #3364 > > ................................................................................ 00:00:28 v #3365 > > ................................................................................ 00:00:28 v #3366 > > │ 00:00:28 v #3367 > > ................................................................................ 00:00:28 v #3368 > > ................................................................................ 00:00:28 v #3369 > > │ 00:00:28 v #3370 > > ................................................................................ 00:00:28 v #3371 > > ................................................................................ 00:00:28 v #3372 > > │ 00:00:28 v #3373 > > ................................................................................ 00:00:28 v #3374 > > ................................................................................ 00:00:28 v #3375 > > │ 00:00:28 v #3376 > > ................................................................................ 00:00:28 v #3377 > > ................................................................................ 00:00:28 v #3378 > > │ 00:00:28 v #3379 > > ................................................................................ 00:00:28 v #3380 > > ................................................................................ 00:00:28 v #3381 > > │ 00:00:28 v #3382 > > │ 00:00:28 v #3383 > > ................................................................................ 00:00:28 v #3384 > > ................................................................................ 00:00:28 v #3385 > > │ 00:00:28 v #3386 > > ................................................................................ 00:00:28 v #3387 > > ................................................................................ 00:00:28 v #3388 > > │ 00:00:28 v #3389 > > ................................................................................ 00:00:28 v #3390 > > ................................................................................ 00:00:28 v #3391 > > │ 00:00:28 v #3392 > > ................................................................................ 00:00:28 v #3393 > > ................................................................................ 00:00:28 v #3394 > > │ 00:00:28 v #3395 > > ................................................................................ 00:00:28 v #3396 > > ................................................................................ 00:00:28 v #3397 > > │ 00:00:28 v #3398 > > ................................................................................ 00:00:28 v #3399 > > ................................................................................ 00:00:28 v #3400 > > │ 00:00:28 v #3401 > > ................................................................................ 00:00:28 v #3402 > > ................................................................................ 00:00:28 v #3403 > > │ 00:00:28 v #3404 > > ................................................................................ 00:00:28 v #3405 > > ................................................................................ 00:00:28 v #3406 > > │ 00:00:28 v #3407 > > ................................................................................ 00:00:28 v #3408 > > ................................................................................ 00:00:28 v #3409 > > │ 00:00:28 v #3410 > > ................................................................................ 00:00:28 v #3411 > > ................................................................................ 00:00:28 v #3412 > > │ 00:00:28 v #3413 > > .....................;;;;;...................................................... 00:00:28 v #3414 > > ................................................................................ 00:00:28 v #3415 > > │ 00:00:28 v #3416 > > ....................>/;/;;;;;;;;;;;;;;.......................................... 00:00:28 v #3417 > > ................................................................................ 00:00:28 v #3418 > > │ 00:00:28 v #3419 > > ....................//////;/;;;;;;;;;;;;;;;;;................................... 00:00:28 v #3420 > > ................................................................................ 00:00:28 v #3421 > > │ 00:00:28 v #3422 > > ...................>//////////;;/;;;;;;;;;;;;;;;;;.............................. 00:00:28 v #3423 > > ................................................................................ 00:00:28 v #3424 > > │ 00:00:28 v #3425 > > ...................////////////////;;;;;;;;;;;;;;;;;;;;......................... 00:00:28 v #3426 > > ................................................................................ 00:00:28 v #3427 > > │ 00:00:28 v #3428 > > ..................>///////////////////////;;;;;;;;;;;;;;;;;..................... 00:00:28 v #3429 > > ................................................................................ 00:00:28 v #3430 > > │ 00:00:28 v #3431 > > ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................ 00:00:28 v #3432 > > .;;;;;;;;;;;.................................................................... 00:00:28 v #3433 > > │ 00:00:28 v #3434 > > .................>///////////////////////////////;;;;;<<<<<<<<<<<<<............. 00:00:28 v #3435 > > >//;/;;;;;;;;;;;................................................................ 00:00:28 v #3436 > > │ 00:00:28 v #3437 > > .................//////////////////////////////////<<<<<<<<<<<<<<<.............> 00:00:28 v #3438 > > //////;//;;;;;;;;;;;............................................................ 00:00:28 v #3439 > > │ 00:00:28 v #3440 > > ................>/////////////////////////////////<<<<<<<<<<<<<<<..............> 00:00:28 v #3441 > > /////////;/;;;;;;;;;<<<<...........;;;;;;;;..................................... 00:00:28 v #3442 > > │ 00:00:28 v #3443 > > ................//////////////////////////////////<<<<<<<<<<<<<<..............> 00:00:28 v #3444 > > //////////////<<<<<<<<<...........>///;;;;;;;<<................................. 00:00:28 v #3445 > > │ 00:00:28 v #3446 > > ...............>/////////////////////////////////<<<<<<<<<<<<<<<.............. 00:00:28 v #3447 > > //////////////<<<<<<<<<...........///////;<<<<<................................. 00:00:28 v #3448 > > │ 00:00:28 v #3449 > > .............../////////////////////////////////<<<<<<<<<<<<<<<..............> 00:00:28 v #3450 > > /////////////<<<<<<<<<...........>///////<<<<<.................................. 00:00:28 v #3451 > > │ 00:00:28 v #3452 > > ..............>////////////////////////////////<<<<<<<<<<<<<<<..............> 00:00:28 v #3453 > > ////////////<<<<<<<<<............///////<<<<<................................... 00:00:28 v #3454 > > │ 00:00:28 v #3455 > > ..............>///////////////////////////////<<<<<<<<<<<<<<<............... 00:00:28 v #3456 > > ////////////<<<<<<<<................////<<<<<................................... 00:00:28 v #3457 > > │ 00:00:28 v #3458 > > ..............////////////////////////////////<<<<<<<<<<<<<<................... 00:00:28 v #3459 > > ///////////<<<<<<<<............................................................. 00:00:28 v #3460 > > │ 00:00:28 v #3461 > > .............>///////////////////////////////<<<<<<<<<<<<<<..................... 00:00:28 v #3462 > > ..////////<<<<<<<<.............................................................. 00:00:28 v #3463 > > │ 00:00:28 v #3464 > > .............../////////////////////////////<<<<<<<<<<<<<<...................... 00:00:28 v #3465 > > .....////<<<<<<<................................................................ 00:00:28 v #3466 > > │ 00:00:28 v #3467 > > .................//////////////////////////<<<<<<<<<<<<<<....................... 00:00:28 v #3468 > > .......//<<..................................................................... 00:00:28 v #3469 > > │ 00:00:28 v #3470 > > ....................///////////////////////<<<<<<<<<<<<<........................ 00:00:28 v #3471 > > ................................................................................ 00:00:28 v #3472 > > │ 00:00:28 v #3473 > > ......................////////////////////<<<<<<<<<<<<<......................... 00:00:28 v #3474 > > ................................................................................ 00:00:28 v #3475 > > │ 00:00:28 v #3476 > > ......................../////////////////<<<<<<<<<<<<........................... 00:00:28 v #3477 > > ................................................................................ 00:00:28 v #3478 > > │ 00:00:28 v #3479 > > .........................../////////////<<<<<<<<<<.............................. 00:00:28 v #3480 > > ................................................................................ 00:00:28 v #3481 > > │ 00:00:28 v #3482 > > .............................//////////<<<<<<<<................................. 00:00:28 v #3483 > > ................................................................................ 00:00:28 v #3484 > > │ 00:00:28 v #3485 > > ................................///////<<<<<.................................... 00:00:28 v #3486 > > ................................................................................ 00:00:28 v #3487 > > │ 00:00:28 v #3488 > > ..................................////<<<....................................... 00:00:28 v #3489 > > ................................................................................ 00:00:28 v #3490 > > │ 00:00:28 v #3491 > > .....................................<.......................................... 00:00:28 v #3492 > > ................................................................................ 00:00:28 v #3493 > > │ 00:00:28 v #3494 > > ................................................................................ 00:00:28 v #3495 > > ................................................................................ 00:00:28 v #3496 > > │ 00:00:28 v #3497 > > ................................................................................ 00:00:28 v #3498 > > ................................................................................ 00:00:28 v #3499 > > │ 00:00:28 v #3500 > > ................................................................................ 00:00:28 v #3501 > > ................................................................................ 00:00:28 v #3502 > > │ 00:00:28 v #3503 > > ................................................................................ 00:00:28 v #3504 > > ................................................................................ 00:00:28 v #3505 > > │ 00:00:28 v #3506 > > ................................................................................ 00:00:28 v #3507 > > ................................................................................ 00:00:28 v #3508 > > │ 00:00:28 v #3509 > > ................................................................................ 00:00:28 v #3510 > > ................................................................................ 00:00:28 v #3511 > > │ 00:00:28 v #3512 > > ................................................................................ 00:00:28 v #3513 > > ................................................................................ 00:00:28 v #3514 > > │ 00:00:28 v #3515 > > │ 00:00:28 v #3516 > > ................................................................................ 00:00:28 v #3517 > > ................................................................................ 00:00:28 v #3518 > > │ 00:00:28 v #3519 > > ................................................................................ 00:00:28 v #3520 > > ................................................................................ 00:00:28 v #3521 > > │ 00:00:28 v #3522 > > ................................................................................ 00:00:28 v #3523 > > ................................................................................ 00:00:28 v #3524 > > │ 00:00:28 v #3525 > > ................................................................................ 00:00:28 v #3526 > > ................................................................................ 00:00:28 v #3527 > > │ 00:00:28 v #3528 > > ................................................................................ 00:00:28 v #3529 > > ................................................................................ 00:00:28 v #3530 > > │ 00:00:28 v #3531 > > ................................................................................ 00:00:28 v #3532 > > ................................................................................ 00:00:28 v #3533 > > │ 00:00:28 v #3534 > > ................................................................................ 00:00:28 v #3535 > > ................................................................................ 00:00:28 v #3536 > > │ 00:00:28 v #3537 > > ................................................................................ 00:00:28 v #3538 > > ................................................................................ 00:00:28 v #3539 > > │ 00:00:28 v #3540 > > ................................................................................ 00:00:28 v #3541 > > ................................................................................ 00:00:28 v #3542 > > │ 00:00:28 v #3543 > > ................................................................................ 00:00:28 v #3544 > > ................................................................................ 00:00:28 v #3545 > > │ 00:00:28 v #3546 > > ....................;;.......................................................... 00:00:28 v #3547 > > ................................................................................ 00:00:28 v #3548 > > │ 00:00:28 v #3549 > > ....................//;/;;;;;;;;;............................................... 00:00:28 v #3550 > > ................................................................................ 00:00:28 v #3551 > > │ 00:00:28 v #3552 > > ...................>//////;;;/;;;;;;;;;;;;;..................................... 00:00:28 v #3553 > > ................................................................................ 00:00:28 v #3554 > > │ 00:00:28 v #3555 > > ...................////////////;;;;;;;;;;;;;;;;;................................ 00:00:28 v #3556 > > ................................................................................ 00:00:28 v #3557 > > │ 00:00:28 v #3558 > > ..................>/////////////////////;;;;;;;;;;;;;;.......................... 00:00:28 v #3559 > > ................................................................................ 00:00:28 v #3560 > > │ 00:00:28 v #3561 > > ..................>///////////////////////;;;/;;;;;;;;;;;;;;.................... 00:00:28 v #3562 > > ................................................................................ 00:00:28 v #3563 > > │ 00:00:28 v #3564 > > ................../////////////////////////////;;/;;;;;;;;;;;;;;;............... 00:00:28 v #3565 > > ;;;;;;;;;;;..................................................................... 00:00:28 v #3566 > > │ 00:00:28 v #3567 > > .................>//////////////////////////////////<<<<<<<<<<<<<<.............. 00:00:28 v #3568 > > >/;/;;;;;;;;;;;;................................................................ 00:00:28 v #3569 > > │ 00:00:28 v #3570 > > .................//////////////////////////////////<<<<<<<<<<<<<<..............> 00:00:28 v #3571 > > ///////;;/;;;;;;;;;;;........................................................... 00:00:28 v #3572 > > │ 00:00:28 v #3573 > > ................>//////////////////////////////////<<<<<<<<<<<<<...............> 00:00:28 v #3574 > > //////////;;/;;;<<<<<<<............/;;;;;;;\.................................... 00:00:28 v #3575 > > │ 00:00:28 v #3576 > > ................//////////////////////////////////<<<<<<<<<<<<<...............> 00:00:28 v #3577 > > ///////////////<<<<<<<<...........>//;;/;;;;<<<................................. 00:00:28 v #3578 > > │ 00:00:28 v #3579 > > ...............>//////////////////////////////////<<<<<<<<<<<<................ 00:00:28 v #3580 > > //////////////<<<<<<<<............>///////<<<<.................................. 00:00:28 v #3581 > > │ 00:00:28 v #3582 > > ...............>/////////////////////////////////<<<<<<<<<<<<<...............> 00:00:28 v #3583 > > /////////////<<<<<<<<............>///////<<<<<.................................. 00:00:28 v #3584 > > │ 00:00:28 v #3585 > > .............../////////////////////////////////<<<<<<<<<<<<<................> 00:00:28 v #3586 > > /////////////<<<<<<<<............////////<<<<................................... 00:00:28 v #3587 > > │ 00:00:28 v #3588 > > ..............>////////////////////////////////<<<<<<<<<<<<<................. 00:00:28 v #3589 > > ////////////<<<<<<<<................////<<<<<................................... 00:00:28 v #3590 > > │ 00:00:28 v #3591 > > ............../////////////////////////////////<<<<<<<<<<<<................... 00:00:28 v #3592 > > ///////////<<<<<<<<............................................................. 00:00:28 v #3593 > > │ 00:00:28 v #3594 > > .............>////////////////////////////////<<<<<<<<<<<<<..................... 00:00:28 v #3595 > > ../////////<<<<<<<<............................................................. 00:00:28 v #3596 > > │ 00:00:28 v #3597 > > .............////////////////////////////////<<<<<<<<<<<<<...................... 00:00:28 v #3598 > > ...../////<<<<<<................................................................ 00:00:28 v #3599 > > │ 00:00:28 v #3600 > > ................/////////////////////////////<<<<<<<<<<<<....................... 00:00:28 v #3601 > > ........./<..................................................................... 00:00:28 v #3602 > > │ 00:00:28 v #3603 > > .................../////////////////////////<<<<<<<<<<<<........................ 00:00:28 v #3604 > > ................................................................................ 00:00:28 v #3605 > > │ 00:00:28 v #3606 > > ....................../////////////////////<<<<<<<<<<<<......................... 00:00:28 v #3607 > > ................................................................................ 00:00:28 v #3608 > > │ 00:00:28 v #3609 > > ........................///////////////////<<<<<<<<<<........................... 00:00:28 v #3610 > > ................................................................................ 00:00:28 v #3611 > > │ 00:00:28 v #3612 > > ............................//////////////<<<<<<<<<............................. 00:00:28 v #3613 > > ................................................................................ 00:00:28 v #3614 > > │ 00:00:28 v #3615 > > ...............................//////////<<<<<<<................................ 00:00:28 v #3616 > > ................................................................................ 00:00:28 v #3617 > > │ 00:00:28 v #3618 > > ..................................///////<<<<<.................................. 00:00:28 v #3619 > > ................................................................................ 00:00:28 v #3620 > > │ 00:00:28 v #3621 > > ....................................////<<<..................................... 00:00:28 v #3622 > > ................................................................................ 00:00:28 v #3623 > > │ 00:00:28 v #3624 > > ......................................./........................................ 00:00:28 v #3625 > > ................................................................................ 00:00:28 v #3626 > > │ 00:00:28 v #3627 > > ................................................................................ 00:00:28 v #3628 > > ................................................................................ 00:00:28 v #3629 > > │ 00:00:28 v #3630 > > ................................................................................ 00:00:28 v #3631 > > ................................................................................ 00:00:28 v #3632 > > │ 00:00:28 v #3633 > > ................................................................................ 00:00:28 v #3634 > > ................................................................................ 00:00:28 v #3635 > > │ 00:00:28 v #3636 > > ................................................................................ 00:00:28 v #3637 > > ................................................................................ 00:00:28 v #3638 > > │ 00:00:28 v #3639 > > ................................................................................ 00:00:28 v #3640 > > ................................................................................ 00:00:28 v #3641 > > │ 00:00:28 v #3642 > > ................................................................................ 00:00:28 v #3643 > > ................................................................................ 00:00:28 v #3644 > > │ 00:00:28 v #3645 > > ................................................................................ 00:00:28 v #3646 > > ................................................................................ 00:00:28 v #3647 > > │ 00:00:28 v #3648 > > │ 00:00:28 v #3649 > > ................................................................................ 00:00:28 v #3650 > > ................................................................................ 00:00:28 v #3651 > > │ 00:00:28 v #3652 > > ................................................................................ 00:00:28 v #3653 > > ................................................................................ 00:00:28 v #3654 > > │ 00:00:28 v #3655 > > ................................................................................ 00:00:28 v #3656 > > ................................................................................ 00:00:28 v #3657 > > │ 00:00:28 v #3658 > > ................................................................................ 00:00:28 v #3659 > > ................................................................................ 00:00:28 v #3660 > > │ 00:00:28 v #3661 > > ................................................................................ 00:00:28 v #3662 > > ................................................................................ 00:00:28 v #3663 > > │ 00:00:28 v #3664 > > ................................................................................ 00:00:28 v #3665 > > ................................................................................ 00:00:28 v #3666 > > │ 00:00:28 v #3667 > > ................................................................................ 00:00:28 v #3668 > > ................................................................................ 00:00:28 v #3669 > > │ 00:00:28 v #3670 > > ................................................................................ 00:00:28 v #3671 > > ................................................................................ 00:00:28 v #3672 > > │ 00:00:28 v #3673 > > ................................................................................ 00:00:28 v #3674 > > ................................................................................ 00:00:28 v #3675 > > │ 00:00:28 v #3676 > > ................................................................................ 00:00:28 v #3677 > > ................................................................................ 00:00:28 v #3678 > > │ 00:00:28 v #3679 > > ................................................................................ 00:00:28 v #3680 > > ................................................................................ 00:00:28 v #3681 > > │ 00:00:28 v #3682 > > ...................;/;;;;;;;;................................................... 00:00:28 v #3683 > > ................................................................................ 00:00:28 v #3684 > > │ 00:00:28 v #3685 > > ...................//////;///;;;;;;;;;;......................................... 00:00:28 v #3686 > > ................................................................................ 00:00:28 v #3687 > > │ 00:00:28 v #3688 > > ..................>/////////////;;;;;;;;;;;;;;;................................. 00:00:28 v #3689 > > ................................................................................ 00:00:28 v #3690 > > │ 00:00:28 v #3691 > > ..................>////////////////////;//;;;;;;;;;;;;.......................... 00:00:28 v #3692 > > ................................................................................ 00:00:28 v #3693 > > │ 00:00:28 v #3694 > > ................../////////////////////////////;/;;;;;;;;;;;;................... 00:00:28 v #3695 > > ................................................................................ 00:00:28 v #3696 > > │ 00:00:28 v #3697 > > .................>///////////////////////////////////<<<<<<<<<<<<............... 00:00:28 v #3698 > > ................................................................................ 00:00:28 v #3699 > > │ 00:00:28 v #3700 > > .................>//////////////////////////////////<<<<<<<<<<<<................ 00:00:28 v #3701 > > /;;/;;;;;;;;;;;................................................................. 00:00:28 v #3702 > > │ 00:00:28 v #3703 > > .................///////////////////////////////////<<<<<<<<<<<<...............> 00:00:28 v #3704 > > ///////;;;;;;;;;;;;;;........................................................... 00:00:28 v #3705 > > │ 00:00:28 v #3706 > > ................>//////////////////////////////////<<<<<<<<<<<<................> 00:00:28 v #3707 > > /////////////;;<<<<<<<<............;;;;;;;;..................................... 00:00:28 v #3708 > > │ 00:00:28 v #3709 > > ................>//////////////////////////////////<<<<<<<<<<<................> 00:00:28 v #3710 > > ///////////////<<<<<<<............>//;;/;;<<<<<................................. 00:00:28 v #3711 > > │ 00:00:28 v #3712 > > ................//////////////////////////////////<<<<<<<<<<<<................> 00:00:28 v #3713 > > ///////////////<<<<<<<............>///////<<<<.................................. 00:00:28 v #3714 > > │ 00:00:28 v #3715 > > ...............>//////////////////////////////////<<<<<<<<<<<................. 00:00:28 v #3716 > > //////////////<<<<<<<............>///////<<<<<.................................. 00:00:28 v #3717 > > │ 00:00:28 v #3718 > > ...............//////////////////////////////////<<<<<<<<<<<.................> 00:00:28 v #3719 > > /////////////<<<<<<<.............>///////<<<<................................... 00:00:28 v #3720 > > │ 00:00:28 v #3721 > > ...............//////////////////////////////////<<<<<<<<<<<................. 00:00:28 v #3722 > > /////////////<<<<<<<................////<<<<<................................... 00:00:28 v #3723 > > │ 00:00:28 v #3724 > > ..............>/////////////////////////////////<<<<<<<<<<<.................. 00:00:28 v #3725 > > ////////////<<<<<<<............................................................. 00:00:28 v #3726 > > │ 00:00:28 v #3727 > > ............../////////////////////////////////<<<<<<<<<<<...................... 00:00:28 v #3728 > > ..//////////<<<<<<<............................................................. 00:00:28 v #3729 > > │ 00:00:28 v #3730 > > .............//////////////////////////////////<<<<<<<<<<<...................... 00:00:28 v #3731 > > ....../////<<<<<................................................................ 00:00:28 v #3732 > > │ 00:00:28 v #3733 > > ..............////////////////////////////////<<<<<<<<<<<....................... 00:00:28 v #3734 > > ........../<.................................................................... 00:00:28 v #3735 > > │ 00:00:28 v #3736 > > ................./////////////////////////////<<<<<<<<<<........................ 00:00:28 v #3737 > > ................................................................................ 00:00:28 v #3738 > > │ 00:00:28 v #3739 > > .....................////////////////////////<<<<<<<<<<<........................ 00:00:28 v #3740 > > ................................................................................ 00:00:28 v #3741 > > │ 00:00:28 v #3742 > > ........................////////////////////<<<<<<<<<<.......................... 00:00:28 v #3743 > > ................................................................................ 00:00:28 v #3744 > > │ 00:00:28 v #3745 > > ............................////////////////<<<<<<<............................. 00:00:28 v #3746 > > ................................................................................ 00:00:28 v #3747 > > │ 00:00:28 v #3748 > > ................................///////////<<<<<<............................... 00:00:28 v #3749 > > ................................................................................ 00:00:28 v #3750 > > │ 00:00:28 v #3751 > > ...................................////////<<<<................................. 00:00:28 v #3752 > > ................................................................................ 00:00:28 v #3753 > > │ 00:00:28 v #3754 > > .......................................///<<.................................... 00:00:28 v #3755 > > ................................................................................ 00:00:28 v #3756 > > │ 00:00:28 v #3757 > > ................................................................................ 00:00:28 v #3758 > > ................................................................................ 00:00:28 v #3759 > > │ 00:00:28 v #3760 > > ................................................................................ 00:00:28 v #3761 > > ................................................................................ 00:00:28 v #3762 > > │ 00:00:28 v #3763 > > ................................................................................ 00:00:28 v #3764 > > ................................................................................ 00:00:28 v #3765 > > │ 00:00:28 v #3766 > > ................................................................................ 00:00:28 v #3767 > > ................................................................................ 00:00:28 v #3768 > > │ 00:00:28 v #3769 > > ................................................................................ 00:00:28 v #3770 > > ................................................................................ 00:00:28 v #3771 > > │ 00:00:28 v #3772 > > ................................................................................ 00:00:28 v #3773 > > ................................................................................ 00:00:28 v #3774 > > │ 00:00:28 v #3775 > > ................................................................................ 00:00:28 v #3776 > > ................................................................................ 00:00:28 v #3777 > > │ 00:00:28 v #3778 > > ................................................................................ 00:00:28 v #3779 > > ................................................................................ 00:00:28 v #3780 > > │ 00:00:28 v #3781 > > │ 00:00:28 v #3782 > > ................................................................................ 00:00:28 v #3783 > > ................................................................................ 00:00:28 v #3784 > > │ 00:00:28 v #3785 > > ................................................................................ 00:00:28 v #3786 > > ................................................................................ 00:00:28 v #3787 > > │ 00:00:28 v #3788 > > ................................................................................ 00:00:28 v #3789 > > ................................................................................ 00:00:28 v #3790 > > │ 00:00:28 v #3791 > > ................................................................................ 00:00:28 v #3792 > > ................................................................................ 00:00:28 v #3793 > > │ 00:00:28 v #3794 > > ................................................................................ 00:00:28 v #3795 > > ................................................................................ 00:00:28 v #3796 > > │ 00:00:28 v #3797 > > ................................................................................ 00:00:28 v #3798 > > ................................................................................ 00:00:28 v #3799 > > │ 00:00:28 v #3800 > > ................................................................................ 00:00:28 v #3801 > > ................................................................................ 00:00:28 v #3802 > > │ 00:00:28 v #3803 > > ................................................................................ 00:00:28 v #3804 > > ................................................................................ 00:00:28 v #3805 > > │ 00:00:28 v #3806 > > ................................................................................ 00:00:28 v #3807 > > ................................................................................ 00:00:28 v #3808 > > │ 00:00:28 v #3809 > > ................................................................................ 00:00:28 v #3810 > > ................................................................................ 00:00:28 v #3811 > > │ 00:00:28 v #3812 > > ................................................................................ 00:00:28 v #3813 > > ................................................................................ 00:00:28 v #3814 > > │ 00:00:28 v #3815 > > ...................;;;;;........................................................ 00:00:28 v #3816 > > ................................................................................ 00:00:28 v #3817 > > │ 00:00:28 v #3818 > > ..................>//////;;;;;;;;;;............................................. 00:00:28 v #3819 > > ................................................................................ 00:00:28 v #3820 > > │ 00:00:28 v #3821 > > ..................>//////////////;;;;/;;;;;;.................................... 00:00:28 v #3822 > > ................................................................................ 00:00:28 v #3823 > > │ 00:00:28 v #3824 > > ..................//////////////////////////;;;;;;;;;;.......................... 00:00:28 v #3825 > > ................................................................................ 00:00:28 v #3826 > > │ 00:00:28 v #3827 > > ..................//////////////////////////////////;/<<<<<<<<<................. 00:00:28 v #3828 > > ................................................................................ 00:00:28 v #3829 > > │ 00:00:28 v #3830 > > .................>///////////////////////////////////<<<<<<<<<<................. 00:00:28 v #3831 > > ................................................................................ 00:00:28 v #3832 > > │ 00:00:28 v #3833 > > .................////////////////////////////////////<<<<<<<<<<................. 00:00:28 v #3834 > > ;/;;;;;;;;;;;;;................................................................. 00:00:28 v #3835 > > │ 00:00:28 v #3836 > > .................///////////////////////////////////<<<<<<<<<<.................> 00:00:28 v #3837 > > ///////;;;;;;;;;;;;;;<.......................................................... 00:00:28 v #3838 > > │ 00:00:28 v #3839 > > ................>///////////////////////////////////<<<<<<<<<<................. 00:00:28 v #3840 > > //////////////;<<<<<<<.............;;;;;;;;..................................... 00:00:28 v #3841 > > │ 00:00:28 v #3842 > > ................>///////////////////////////////////<<<<<<<<<.................. 00:00:28 v #3843 > > ///////////////<<<<<<<............>//;;//;<<<<.................................. 00:00:28 v #3844 > > │ 00:00:28 v #3845 > > ................///////////////////////////////////<<<<<<<<<<.................> 00:00:28 v #3846 > > ///////////////<<<<<<.............>///////<<<<.................................. 00:00:28 v #3847 > > │ 00:00:28 v #3848 > > ...............>//////////////////////////////////<<<<<<<<<<.................. 00:00:28 v #3849 > > //////////////<<<<<<<.............////////<<<<.................................. 00:00:28 v #3850 > > │ 00:00:28 v #3851 > > ...............>//////////////////////////////////<<<<<<<<<<.................. 00:00:28 v #3852 > > ///////////////<<<<<.............>///////<<<<................................... 00:00:28 v #3853 > > │ 00:00:28 v #3854 > > ...............///////////////////////////////////<<<<<<<<<..................> 00:00:28 v #3855 > > /////////////<<<<<<<................/////<<<<................................... 00:00:28 v #3856 > > │ 00:00:28 v #3857 > > ...............//////////////////////////////////<<<<<<<<<<.................. 00:00:28 v #3858 > > /////////////<<<<<<............................................................. 00:00:28 v #3859 > > │ 00:00:28 v #3860 > > ..............>//////////////////////////////////<<<<<<<<<...................... 00:00:28 v #3861 > > .///////////<<<<<<<............................................................. 00:00:28 v #3862 > > │ 00:00:28 v #3863 > > ..............>/////////////////////////////////<<<<<<<<<<...................... 00:00:28 v #3864 > > ......./////<<<<................................................................ 00:00:28 v #3865 > > │ 00:00:28 v #3866 > > ..............//////////////////////////////////<<<<<<<<<....................... 00:00:28 v #3867 > > ................................................................................ 00:00:28 v #3868 > > │ 00:00:28 v #3869 > > ...............////////////////////////////////<<<<<<<<<<....................... 00:00:28 v #3870 > > ................................................................................ 00:00:28 v #3871 > > │ 00:00:28 v #3872 > > ....................///////////////////////////<<<<<<<<<........................ 00:00:28 v #3873 > > ................................................................................ 00:00:28 v #3874 > > │ 00:00:28 v #3875 > > ........................//////////////////////<<<<<<<<.......................... 00:00:28 v #3876 > > ................................................................................ 00:00:28 v #3877 > > │ 00:00:28 v #3878 > > ............................./////////////////<<<<<<............................ 00:00:28 v #3879 > > ................................................................................ 00:00:28 v #3880 > > │ 00:00:28 v #3881 > > .................................////////////<<<<<.............................. 00:00:28 v #3882 > > ................................................................................ 00:00:28 v #3883 > > │ 00:00:28 v #3884 > > ......................................///////<<<................................ 00:00:28 v #3885 > > ................................................................................ 00:00:28 v #3886 > > │ 00:00:28 v #3887 > > ..........................................//<<.................................. 00:00:28 v #3888 > > ................................................................................ 00:00:28 v #3889 > > │ 00:00:28 v #3890 > > ................................................................................ 00:00:28 v #3891 > > ................................................................................ 00:00:28 v #3892 > > │ 00:00:28 v #3893 > > ................................................................................ 00:00:28 v #3894 > > ................................................................................ 00:00:28 v #3895 > > │ 00:00:28 v #3896 > > ................................................................................ 00:00:28 v #3897 > > ................................................................................ 00:00:28 v #3898 > > │ 00:00:28 v #3899 > > ................................................................................ 00:00:28 v #3900 > > ................................................................................ 00:00:28 v #3901 > > │ 00:00:28 v #3902 > > ................................................................................ 00:00:28 v #3903 > > ................................................................................ 00:00:28 v #3904 > > │ 00:00:28 v #3905 > > ................................................................................ 00:00:28 v #3906 > > ................................................................................ 00:00:28 v #3907 > > │ 00:00:28 v #3908 > > ................................................................................ 00:00:28 v #3909 > > ................................................................................ 00:00:28 v #3910 > > │ 00:00:28 v #3911 > > ................................................................................ 00:00:28 v #3912 > > ................................................................................ 00:00:28 v #3913 > > │ 00:00:28 v #3914 > > │ 00:00:28 v #3915 > > ................................................................................ 00:00:28 v #3916 > > ................................................................................ 00:00:28 v #3917 > > │ 00:00:28 v #3918 > > ................................................................................ 00:00:28 v #3919 > > ................................................................................ 00:00:28 v #3920 > > │ 00:00:28 v #3921 > > ................................................................................ 00:00:28 v #3922 > > ................................................................................ 00:00:28 v #3923 > > │ 00:00:28 v #3924 > > ................................................................................ 00:00:28 v #3925 > > ................................................................................ 00:00:28 v #3926 > > │ 00:00:28 v #3927 > > ................................................................................ 00:00:28 v #3928 > > ................................................................................ 00:00:28 v #3929 > > │ 00:00:28 v #3930 > > ................................................................................ 00:00:28 v #3931 > > ................................................................................ 00:00:28 v #3932 > > │ 00:00:28 v #3933 > > ................................................................................ 00:00:28 v #3934 > > ................................................................................ 00:00:28 v #3935 > > │ 00:00:28 v #3936 > > ................................................................................ 00:00:28 v #3937 > > ................................................................................ 00:00:28 v #3938 > > │ 00:00:28 v #3939 > > ................................................................................ 00:00:28 v #3940 > > ................................................................................ 00:00:28 v #3941 > > │ 00:00:28 v #3942 > > ................................................................................ 00:00:28 v #3943 > > ................................................................................ 00:00:28 v #3944 > > │ 00:00:28 v #3945 > > ................................................................................ 00:00:28 v #3946 > > ................................................................................ 00:00:28 v #3947 > > │ 00:00:28 v #3948 > > ..................;;;........................................................... 00:00:28 v #3949 > > ................................................................................ 00:00:28 v #3950 > > │ 00:00:28 v #3951 > > ..................//;;;;;;/;;;;;;;;............................................. 00:00:28 v #3952 > > ................................................................................ 00:00:28 v #3953 > > │ 00:00:28 v #3954 > > ..................////////////////;;//;;;;;;;;;;;............................... 00:00:28 v #3955 > > ................................................................................ 00:00:28 v #3956 > > │ 00:00:28 v #3957 > > .................>///////////////////////////////;;;/;<<<<<..................... 00:00:28 v #3958 > > ................................................................................ 00:00:28 v #3959 > > │ 00:00:28 v #3960 > > .................>////////////////////////////////////<<<<<<<<.................. 00:00:28 v #3961 > > ................................................................................ 00:00:28 v #3962 > > │ 00:00:28 v #3963 > > ................./////////////////////////////////////<<<<<<<<.................. 00:00:28 v #3964 > > ................................................................................ 00:00:28 v #3965 > > │ 00:00:28 v #3966 > > .................////////////////////////////////////<<<<<<<<<.................> 00:00:28 v #3967 > > /;;;;;;;;;;;;;.................................................................. 00:00:28 v #3968 > > │ 00:00:28 v #3969 > > .................////////////////////////////////////<<<<<<<<..................> 00:00:28 v #3970 > > ///////;;;;;;;;/<<<<<<.......................................................... 00:00:28 v #3971 > > │ 00:00:28 v #3972 > > ................>///////////////////////////////////<<<<<<<<<.................. 00:00:28 v #3973 > > ////////////////<<<<<<.............;;;;;;;;..................................... 00:00:28 v #3974 > > │ 00:00:28 v #3975 > > ................>///////////////////////////////////<<<<<<<<................... 00:00:28 v #3976 > > ///////////////<<<<<<.............>//;;;//<<<<.................................. 00:00:28 v #3977 > > │ 00:00:28 v #3978 > > ................////////////////////////////////////<<<<<<<<..................> 00:00:28 v #3979 > > ///////////////<<<<<<.............>///////<<<<.................................. 00:00:28 v #3980 > > │ 00:00:28 v #3981 > > ................///////////////////////////////////<<<<<<<<<..................> 00:00:28 v #3982 > > //////////////<<<<<<..............////////<<<................................... 00:00:28 v #3983 > > │ 00:00:28 v #3984 > > ................///////////////////////////////////<<<<<<<<................... 00:00:28 v #3985 > > //////////////<<<<<<..............///////<<<<................................... 00:00:28 v #3986 > > │ 00:00:28 v #3987 > > ...............>///////////////////////////////////<<<<<<<<................... 00:00:28 v #3988 > > //////////////<<<<<<................/////<<<<................................... 00:00:28 v #3989 > > │ 00:00:28 v #3990 > > ...............>//////////////////////////////////<<<<<<<<...................> 00:00:28 v #3991 > > /////////////<<<<<<............................................................. 00:00:28 v #3992 > > │ 00:00:28 v #3993 > > ...............///////////////////////////////////<<<<<<<<...................... 00:00:28 v #3994 > > .////////////<<<<<<............................................................. 00:00:28 v #3995 > > │ 00:00:28 v #3996 > > ...............///////////////////////////////////<<<<<<<<...................... 00:00:28 v #3997 > > ......../////<<<................................................................ 00:00:28 v #3998 > > │ 00:00:28 v #3999 > > ..............>//////////////////////////////////<<<<<<<<....................... 00:00:28 v #4000 > > ................................................................................ 00:00:28 v #4001 > > │ 00:00:28 v #4002 > > ..............>//////////////////////////////////<<<<<<<<....................... 00:00:28 v #4003 > > ................................................................................ 00:00:28 v #4004 > > │ 00:00:28 v #4005 > > ..................//////////////////////////////<<<<<<<<........................ 00:00:28 v #4006 > > ................................................................................ 00:00:28 v #4007 > > │ 00:00:28 v #4008 > > ......................./////////////////////////<<<<<<.......................... 00:00:28 v #4009 > > ................................................................................ 00:00:28 v #4010 > > │ 00:00:28 v #4011 > > .............................///////////////////<<<<............................ 00:00:28 v #4012 > > ................................................................................ 00:00:28 v #4013 > > │ 00:00:28 v #4014 > > ...................................////////////<<<<............................. 00:00:28 v #4015 > > ................................................................................ 00:00:28 v #4016 > > │ 00:00:28 v #4017 > > .........................................//////<<............................... 00:00:28 v #4018 > > ................................................................................ 00:00:28 v #4019 > > │ 00:00:28 v #4020 > > ............................................../................................. 00:00:28 v #4021 > > ................................................................................ 00:00:28 v #4022 > > │ 00:00:28 v #4023 > > ................................................................................ 00:00:28 v #4024 > > ................................................................................ 00:00:28 v #4025 > > │ 00:00:28 v #4026 > > ................................................................................ 00:00:28 v #4027 > > ................................................................................ 00:00:28 v #4028 > > │ 00:00:28 v #4029 > > ................................................................................ 00:00:28 v #4030 > > ................................................................................ 00:00:28 v #4031 > > │ 00:00:28 v #4032 > > ................................................................................ 00:00:28 v #4033 > > ................................................................................ 00:00:28 v #4034 > > │ 00:00:28 v #4035 > > ................................................................................ 00:00:28 v #4036 > > ................................................................................ 00:00:28 v #4037 > > │ 00:00:28 v #4038 > > ................................................................................ 00:00:28 v #4039 > > ................................................................................ 00:00:28 v #4040 > > │ 00:00:28 v #4041 > > ................................................................................ 00:00:28 v #4042 > > ................................................................................ 00:00:28 v #4043 > > │ 00:00:28 v #4044 > > ................................................................................ 00:00:28 v #4045 > > ................................................................................ 00:00:28 v #4046 > > │ 00:00:28 v #4047 > > │ 00:00:28 v #4048 > > ................................................................................ 00:00:28 v #4049 > > ................................................................................ 00:00:28 v #4050 > > │ 00:00:28 v #4051 > > ................................................................................ 00:00:28 v #4052 > > ................................................................................ 00:00:28 v #4053 > > │ 00:00:28 v #4054 > > ................................................................................ 00:00:28 v #4055 > > ................................................................................ 00:00:28 v #4056 > > │ 00:00:28 v #4057 > > ................................................................................ 00:00:28 v #4058 > > ................................................................................ 00:00:28 v #4059 > > │ 00:00:28 v #4060 > > ................................................................................ 00:00:28 v #4061 > > ................................................................................ 00:00:28 v #4062 > > │ 00:00:28 v #4063 > > ................................................................................ 00:00:28 v #4064 > > ................................................................................ 00:00:28 v #4065 > > │ 00:00:28 v #4066 > > ................................................................................ 00:00:28 v #4067 > > ................................................................................ 00:00:28 v #4068 > > │ 00:00:28 v #4069 > > ................................................................................ 00:00:28 v #4070 > > ................................................................................ 00:00:28 v #4071 > > │ 00:00:28 v #4072 > > ................................................................................ 00:00:28 v #4073 > > ................................................................................ 00:00:28 v #4074 > > │ 00:00:28 v #4075 > > ................................................................................ 00:00:28 v #4076 > > ................................................................................ 00:00:28 v #4077 > > │ 00:00:28 v #4078 > > ................................................................................ 00:00:28 v #4079 > > ................................................................................ 00:00:28 v #4080 > > │ 00:00:28 v #4081 > > ................................................................................ 00:00:28 v #4082 > > ................................................................................ 00:00:28 v #4083 > > │ 00:00:28 v #4084 > > .................>;;;;;;;;;;;;/;;;;;;;;......................................... 00:00:28 v #4085 > > ................................................................................ 00:00:28 v #4086 > > │ 00:00:28 v #4087 > > .................>////////////////////;;/;;/;;/;;;;;;;;<<....................... 00:00:28 v #4088 > > ................................................................................ 00:00:28 v #4089 > > │ 00:00:28 v #4090 > > .................>////////////////////////////////////<<<<<<.................... 00:00:28 v #4091 > > ................................................................................ 00:00:28 v #4092 > > │ 00:00:28 v #4093 > > ................./////////////////////////////////////<<<<<<<................... 00:00:28 v #4094 > > ................................................................................ 00:00:28 v #4095 > > │ 00:00:28 v #4096 > > ................./////////////////////////////////////<<<<<<<................... 00:00:28 v #4097 > > ................................................................................ 00:00:28 v #4098 > > │ 00:00:28 v #4099 > > ................./////////////////////////////////////<<<<<<...................; 00:00:28 v #4100 > > ;;;;;/;;;;;;;................................................................... 00:00:28 v #4101 > > │ 00:00:28 v #4102 > > .................////////////////////////////////////<<<<<<<...................> 00:00:28 v #4103 > > ////////;;;///;;<<<<<........................................................... 00:00:28 v #4104 > > │ 00:00:28 v #4105 > > ................>////////////////////////////////////<<<<<<<................... 00:00:28 v #4106 > > ////////////////<<<<<..............;;;;;;;;..................................... 00:00:28 v #4107 > > │ 00:00:28 v #4108 > > ................>////////////////////////////////////<<<<<<.................... 00:00:28 v #4109 > > ///////////////<<<<<<.............>//;;;;;<<<<.................................. 00:00:28 v #4110 > > │ 00:00:28 v #4111 > > ................>////////////////////////////////////<<<<<<.................... 00:00:28 v #4112 > > ///////////////<<<<<..............>///////<<<<.................................. 00:00:28 v #4113 > > │ 00:00:28 v #4114 > > ................>///////////////////////////////////<<<<<<<...................> 00:00:28 v #4115 > > ///////////////<<<<<..............>///////<<<................................... 00:00:28 v #4116 > > │ 00:00:28 v #4117 > > ................////////////////////////////////////<<<<<<<...................> 00:00:28 v #4118 > > ///////////////<<<<<..............////////<<<................................... 00:00:28 v #4119 > > │ 00:00:28 v #4120 > > ................////////////////////////////////////<<<<<<....................> 00:00:28 v #4121 > > ///////////////<<<<<...............///////<<=................................... 00:00:28 v #4122 > > │ 00:00:28 v #4123 > > ................////////////////////////////////////<<<<<<.................... 00:00:28 v #4124 > > //////////////<<<<<............................................................. 00:00:28 v #4125 > > │ 00:00:28 v #4126 > > ...............>///////////////////////////////////<<<<<<<..................... 00:00:28 v #4127 > > //////////////<<<<<............................................................. 00:00:28 v #4128 > > │ 00:00:28 v #4129 > > ...............>///////////////////////////////////<<<<<<....................... 00:00:28 v #4130 > > ........./////<<................................................................ 00:00:28 v #4131 > > │ 00:00:28 v #4132 > > ...............>///////////////////////////////////<<<<<<....................... 00:00:28 v #4133 > > ................................................................................ 00:00:28 v #4134 > > │ 00:00:28 v #4135 > > ...............>///////////////////////////////////<<<<<<....................... 00:00:28 v #4136 > > ................................................................................ 00:00:28 v #4137 > > │ 00:00:28 v #4138 > > ...............///////////////////////////////////<<<<<<........................ 00:00:28 v #4139 > > ................................................................................ 00:00:28 v #4140 > > │ 00:00:28 v #4141 > > ......................////////////////////////////<<<<<......................... 00:00:28 v #4142 > > ................................................................................ 00:00:28 v #4143 > > │ 00:00:28 v #4144 > > ..............................////////////////////<<<........................... 00:00:28 v #4145 > > ................................................................................ 00:00:28 v #4146 > > │ 00:00:28 v #4147 > > ...................................../////////////<<............................ 00:00:28 v #4148 > > ................................................................................ 00:00:28 v #4149 > > │ 00:00:28 v #4150 > > .............................................////<<............................. 00:00:28 v #4151 > > ................................................................................ 00:00:28 v #4152 > > │ 00:00:28 v #4153 > > ................................................................................ 00:00:28 v #4154 > > ................................................................................ 00:00:28 v #4155 > > │ 00:00:28 v #4156 > > ................................................................................ 00:00:28 v #4157 > > ................................................................................ 00:00:28 v #4158 > > │ 00:00:28 v #4159 > > ................................................................................ 00:00:28 v #4160 > > ................................................................................ 00:00:28 v #4161 > > │ 00:00:28 v #4162 > > ................................................................................ 00:00:28 v #4163 > > ................................................................................ 00:00:28 v #4164 > > │ 00:00:28 v #4165 > > ................................................................................ 00:00:28 v #4166 > > ................................................................................ 00:00:28 v #4167 > > │ 00:00:28 v #4168 > > ................................................................................ 00:00:28 v #4169 > > ................................................................................ 00:00:28 v #4170 > > │ 00:00:28 v #4171 > > ................................................................................ 00:00:28 v #4172 > > ................................................................................ 00:00:28 v #4173 > > │ 00:00:28 v #4174 > > ................................................................................ 00:00:28 v #4175 > > ................................................................................ 00:00:28 v #4176 > > │ 00:00:28 v #4177 > > ................................................................................ 00:00:28 v #4178 > > ................................................................................ 00:00:28 v #4179 > > │ 00:00:28 v #4180 > > │ 00:00:28 v #4181 > > ................................................................................ 00:00:28 v #4182 > > ................................................................................ 00:00:28 v #4183 > > │ 00:00:28 v #4184 > > ................................................................................ 00:00:28 v #4185 > > ................................................................................ 00:00:28 v #4186 > > │ 00:00:28 v #4187 > > ................................................................................ 00:00:28 v #4188 > > ................................................................................ 00:00:28 v #4189 > > │ 00:00:28 v #4190 > > ................................................................................ 00:00:28 v #4191 > > ................................................................................ 00:00:28 v #4192 > > │ 00:00:28 v #4193 > > ................................................................................ 00:00:28 v #4194 > > ................................................................................ 00:00:28 v #4195 > > │ 00:00:28 v #4196 > > ................................................................................ 00:00:28 v #4197 > > ................................................................................ 00:00:28 v #4198 > > │ 00:00:28 v #4199 > > ................................................................................ 00:00:28 v #4200 > > ................................................................................ 00:00:28 v #4201 > > │ 00:00:28 v #4202 > > ................................................................................ 00:00:28 v #4203 > > ................................................................................ 00:00:28 v #4204 > > │ 00:00:28 v #4205 > > ................................................................................ 00:00:28 v #4206 > > ................................................................................ 00:00:28 v #4207 > > │ 00:00:28 v #4208 > > ................................................................................ 00:00:28 v #4209 > > ................................................................................ 00:00:28 v #4210 > > │ 00:00:28 v #4211 > > ................................................................................ 00:00:28 v #4212 > > ................................................................................ 00:00:28 v #4213 > > │ 00:00:28 v #4214 > > ................................................................................ 00:00:28 v #4215 > > ................................................................................ 00:00:28 v #4216 > > │ 00:00:28 v #4217 > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ 00:00:28 v #4218 > > ................................................................................ 00:00:28 v #4219 > > │ 00:00:28 v #4220 > > .................//////////////////////////////////////<<<...................... 00:00:28 v #4221 > > ................................................................................ 00:00:28 v #4222 > > │ 00:00:28 v #4223 > > .................//////////////////////////////////////<<<<..................... 00:00:28 v #4224 > > ................................................................................ 00:00:28 v #4225 > > │ 00:00:28 v #4226 > > ................./////////////////////////////////////<<<<<..................... 00:00:28 v #4227 > > ................................................................................ 00:00:28 v #4228 > > │ 00:00:28 v #4229 > > ................./////////////////////////////////////<<<<<..................... 00:00:28 v #4230 > > ................................................................................ 00:00:28 v #4231 > > │ 00:00:28 v #4232 > > ................./////////////////////////////////////<<<<<....................; 00:00:28 v #4233 > > ;/;;;;;;;;;;.................................................................... 00:00:28 v #4234 > > │ 00:00:28 v #4235 > > ................./////////////////////////////////////<<<<<.................... 00:00:28 v #4236 > > ////////////;;;;<<<<............................................................ 00:00:28 v #4237 > > │ 00:00:28 v #4238 > > ................./////////////////////////////////////<<<<<.................... 00:00:28 v #4239 > > ////////////////<<<<...............;;;;;;;;..................................... 00:00:28 v #4240 > > │ 00:00:28 v #4241 > > ................>/////////////////////////////////////<<<<<.................... 00:00:28 v #4242 > > ////////////////<<<<..............>//;;;;;<<<<.................................. 00:00:28 v #4243 > > │ 00:00:28 v #4244 > > ................>/////////////////////////////////////<<<<..................... 00:00:28 v #4245 > > ////////////////<<<<..............>///////<<<................................... 00:00:28 v #4246 > > │ 00:00:28 v #4247 > > ................>////////////////////////////////////<<<<<..................... 00:00:28 v #4248 > > ///////////////<<<<<..............>///////<<<................................... 00:00:28 v #4249 > > │ 00:00:28 v #4250 > > ................>////////////////////////////////////<<<<<..................... 00:00:28 v #4251 > > ///////////////<<<<<..............>///////<<<................................... 00:00:28 v #4252 > > │ 00:00:28 v #4253 > > ................>////////////////////////////////////<<<<<..................... 00:00:28 v #4254 > > ///////////////<<<<<..............////////<<.................................... 00:00:28 v #4255 > > │ 00:00:28 v #4256 > > ................>////////////////////////////////////<<<<<....................> 00:00:28 v #4257 > > ///////////////<<<<............................................................. 00:00:28 v #4258 > > │ 00:00:28 v #4259 > > ................>////////////////////////////////////<<<<<.................... 00:00:28 v #4260 > > ///////////////<<<<............................................................. 00:00:28 v #4261 > > │ 00:00:28 v #4262 > > ................>////////////////////////////////////<<<<....................... 00:00:28 v #4263 > > ............///<................................................................ 00:00:28 v #4264 > > │ 00:00:28 v #4265 > > ................>////////////////////////////////////<<<<....................... 00:00:28 v #4266 > > ................................................................................ 00:00:28 v #4267 > > │ 00:00:28 v #4268 > > ................////////////////////////////////////<<<<<....................... 00:00:28 v #4269 > > ................................................................................ 00:00:28 v #4270 > > │ 00:00:28 v #4271 > > ................////////////////////////////////////<<<<........................ 00:00:28 v #4272 > > ................................................................................ 00:00:28 v #4273 > > │ 00:00:28 v #4274 > > .................///////////////////////////////////<<<......................... 00:00:28 v #4275 > > ................................................................................ 00:00:28 v #4276 > > │ 00:00:28 v #4277 > > .............................///////////////////////<<.......................... 00:00:28 v #4278 > > ................................................................................ 00:00:28 v #4279 > > │ 00:00:28 v #4280 > > .........................................///////////<........................... 00:00:28 v #4281 > > ................................................................................ 00:00:28 v #4282 > > │ 00:00:28 v #4283 > > ................................................................................ 00:00:28 v #4284 > > ................................................................................ 00:00:28 v #4285 > > │ 00:00:28 v #4286 > > ................................................................................ 00:00:28 v #4287 > > ................................................................................ 00:00:28 v #4288 > > │ 00:00:28 v #4289 > > ................................................................................ 00:00:28 v #4290 > > ................................................................................ 00:00:28 v #4291 > > │ 00:00:28 v #4292 > > ................................................................................ 00:00:28 v #4293 > > ................................................................................ 00:00:28 v #4294 > > │ 00:00:28 v #4295 > > ................................................................................ 00:00:28 v #4296 > > ................................................................................ 00:00:28 v #4297 > > │ 00:00:28 v #4298 > > ................................................................................ 00:00:28 v #4299 > > ................................................................................ 00:00:28 v #4300 > > │ 00:00:28 v #4301 > > ................................................................................ 00:00:28 v #4302 > > ................................................................................ 00:00:28 v #4303 > > │ 00:00:28 v #4304 > > ................................................................................ 00:00:28 v #4305 > > ................................................................................ 00:00:28 v #4306 > > │ 00:00:28 v #4307 > > ................................................................................ 00:00:28 v #4308 > > ................................................................................ 00:00:28 v #4309 > > │ 00:00:28 v #4310 > > ................................................................................ 00:00:28 v #4311 > > ................................................................................ 00:00:28 v #4312 > > │ 00:00:28 v #4313 > > │ 00:00:28 v #4314 > > ................................................................................ 00:00:28 v #4315 > > ................................................................................ 00:00:28 v #4316 > > │ 00:00:28 v #4317 > > ................................................................................ 00:00:28 v #4318 > > ................................................................................ 00:00:28 v #4319 > > │ 00:00:28 v #4320 > > ................................................................................ 00:00:28 v #4321 > > ................................................................................ 00:00:28 v #4322 > > │ 00:00:28 v #4323 > > ................................................................................ 00:00:28 v #4324 > > ................................................................................ 00:00:28 v #4325 > > │ 00:00:28 v #4326 > > ................................................................................ 00:00:28 v #4327 > > ................................................................................ 00:00:28 v #4328 > > │ 00:00:28 v #4329 > > ................................................................................ 00:00:28 v #4330 > > ................................................................................ 00:00:28 v #4331 > > │ 00:00:28 v #4332 > > ................................................................................ 00:00:28 v #4333 > > ................................................................................ 00:00:28 v #4334 > > │ 00:00:28 v #4335 > > ................................................................................ 00:00:28 v #4336 > > ................................................................................ 00:00:28 v #4337 > > │ 00:00:28 v #4338 > > ................................................................................ 00:00:28 v #4339 > > ................................................................................ 00:00:28 v #4340 > > │ 00:00:28 v #4341 > > ................................................................................ 00:00:28 v #4342 > > ................................................................................ 00:00:28 v #4343 > > │ 00:00:28 v #4344 > > ................................................................................ 00:00:28 v #4345 > > ................................................................................ 00:00:28 v #4346 > > │ 00:00:28 v #4347 > > ................................................................................ 00:00:28 v #4348 > > ................................................................................ 00:00:28 v #4349 > > │ 00:00:28 v #4350 > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ 00:00:28 v #4351 > > ................................................................................ 00:00:28 v #4352 > > │ 00:00:28 v #4353 > > ................;//////////////////////////////////////<<....................... 00:00:28 v #4354 > > ................................................................................ 00:00:28 v #4355 > > │ 00:00:28 v #4356 > > ................>//////////////////////////////////////<<<...................... 00:00:28 v #4357 > > ................................................................................ 00:00:28 v #4358 > > │ 00:00:28 v #4359 > > ................>//////////////////////////////////////<<<...................... 00:00:28 v #4360 > > ................................................................................ 00:00:28 v #4361 > > │ 00:00:28 v #4362 > > ................>//////////////////////////////////////<<<...................... 00:00:28 v #4363 > > ................................................................................ 00:00:28 v #4364 > > │ 00:00:28 v #4365 > > ................>//////////////////////////////////////<<<.....................; 00:00:28 v #4366 > > ;;;;;;;;;;;;;;;;<<<............................................................. 00:00:28 v #4367 > > │ 00:00:28 v #4368 > > .................//////////////////////////////////////<<<..................... 00:00:28 v #4369 > > ////////////////<<<<............................................................ 00:00:28 v #4370 > > │ 00:00:28 v #4371 > > .................//////////////////////////////////////<<<..................... 00:00:28 v #4372 > > ////////////////<<<<...............;;;;;;;;;<................................... 00:00:28 v #4373 > > │ 00:00:28 v #4374 > > .................//////////////////////////////////////<<<..................... 00:00:28 v #4375 > > ////////////////<<<<..............;;;;;;;;;<<................................... 00:00:28 v #4376 > > │ 00:00:28 v #4377 > > .................//////////////////////////////////////<<<..................... 00:00:28 v #4378 > > ////////////////<<<<..............>////////<<................................... 00:00:28 v #4379 > > │ 00:00:28 v #4380 > > ................./////////////////////////////////////<<<<..................... 00:00:28 v #4381 > > ////////////////<<<<..............>////////<<................................... 00:00:28 v #4382 > > │ 00:00:28 v #4383 > > ................./////////////////////////////////////<<<<..................... 00:00:28 v #4384 > > ////////////////<<<<..............>////////<<................................... 00:00:28 v #4385 > > │ 00:00:28 v #4386 > > ................./////////////////////////////////////<<<<..................... 00:00:28 v #4387 > > ////////////////<<<<..............////////<<.................................... 00:00:28 v #4388 > > │ 00:00:28 v #4389 > > ................./////////////////////////////////////<<<<..................... 00:00:28 v #4390 > > ////////////////<<<<............................................................ 00:00:28 v #4391 > > │ 00:00:28 v #4392 > > ................./////////////////////////////////////<<<<.....................> 00:00:28 v #4393 > > ////////////////<<.............................................................. 00:00:28 v #4394 > > │ 00:00:28 v #4395 > > ................./////////////////////////////////////<<<....................... 00:00:28 v #4396 > > ................................................................................ 00:00:28 v #4397 > > │ 00:00:28 v #4398 > > ................./////////////////////////////////////<<<....................... 00:00:28 v #4399 > > ................................................................................ 00:00:28 v #4400 > > │ 00:00:28 v #4401 > > ................./////////////////////////////////////<<<....................... 00:00:28 v #4402 > > ................................................................................ 00:00:28 v #4403 > > │ 00:00:28 v #4404 > > ................./////////////////////////////////////<<<....................... 00:00:28 v #4405 > > ................................................................................ 00:00:28 v #4406 > > │ 00:00:28 v #4407 > > .................>////////////////////////////////////<<........................ 00:00:28 v #4408 > > ................................................................................ 00:00:28 v #4409 > > │ 00:00:28 v #4410 > > ..........................////////////////////////////<<........................ 00:00:28 v #4411 > > ................................................................................ 00:00:28 v #4412 > > │ 00:00:28 v #4413 > > ................................................//////<......................... 00:00:28 v #4414 > > ................................................................................ 00:00:28 v #4415 > > │ 00:00:28 v #4416 > > ................................................................................ 00:00:28 v #4417 > > ................................................................................ 00:00:28 v #4418 > > │ 00:00:28 v #4419 > > ................................................................................ 00:00:28 v #4420 > > ................................................................................ 00:00:28 v #4421 > > │ 00:00:28 v #4422 > > ................................................................................ 00:00:28 v #4423 > > ................................................................................ 00:00:28 v #4424 > > │ 00:00:28 v #4425 > > ................................................................................ 00:00:28 v #4426 > > ................................................................................ 00:00:28 v #4427 > > │ 00:00:28 v #4428 > > ................................................................................ 00:00:28 v #4429 > > ................................................................................ 00:00:28 v #4430 > > │ 00:00:28 v #4431 > > ................................................................................ 00:00:28 v #4432 > > ................................................................................ 00:00:28 v #4433 > > │ 00:00:28 v #4434 > > ................................................................................ 00:00:28 v #4435 > > ................................................................................ 00:00:28 v #4436 > > │ 00:00:28 v #4437 > > ................................................................................ 00:00:28 v #4438 > > ................................................................................ 00:00:28 v #4439 > > │ 00:00:28 v #4440 > > ................................................................................ 00:00:28 v #4441 > > ................................................................................ 00:00:28 v #4442 > > │ 00:00:28 v #4443 > > ................................................................................ 00:00:28 v #4444 > > ................................................................................ 00:00:28 v #4445 > > │ 00:00:28 v #4446 > > │ 00:00:28 v #4447 > > ................................................................................ 00:00:28 v #4448 > > ................................................................................ 00:00:28 v #4449 > > │ 00:00:28 v #4450 > > ................................................................................ 00:00:28 v #4451 > > ................................................................................ 00:00:28 v #4452 > > │ 00:00:28 v #4453 > > ................................................................................ 00:00:28 v #4454 > > ................................................................................ 00:00:28 v #4455 > > │ 00:00:28 v #4456 > > ................................................................................ 00:00:28 v #4457 > > ................................................................................ 00:00:28 v #4458 > > │ 00:00:28 v #4459 > > ................................................................................ 00:00:28 v #4460 > > ................................................................................ 00:00:28 v #4461 > > │ 00:00:28 v #4462 > > ................................................................................ 00:00:28 v #4463 > > ................................................................................ 00:00:28 v #4464 > > │ 00:00:28 v #4465 > > ................................................................................ 00:00:28 v #4466 > > ................................................................................ 00:00:28 v #4467 > > │ 00:00:28 v #4468 > > ................................................................................ 00:00:28 v #4469 > > ................................................................................ 00:00:28 v #4470 > > │ 00:00:28 v #4471 > > ................................................................................ 00:00:28 v #4472 > > ................................................................................ 00:00:28 v #4473 > > │ 00:00:28 v #4474 > > ................................................................................ 00:00:28 v #4475 > > ................................................................................ 00:00:28 v #4476 > > │ 00:00:28 v #4477 > > ................................................................................ 00:00:28 v #4478 > > ................................................................................ 00:00:28 v #4479 > > │ 00:00:28 v #4480 > > ..............................................;;;;;;;;;<........................ 00:00:28 v #4481 > > ................................................................................ 00:00:28 v #4482 > > │ 00:00:28 v #4483 > > .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................ 00:00:28 v #4484 > > ................................................................................ 00:00:28 v #4485 > > │ 00:00:28 v #4486 > > ................;;;;;;;;;//////////////////////////////<........................ 00:00:28 v #4487 > > ................................................................................ 00:00:28 v #4488 > > │ 00:00:28 v #4489 > > ................///////////////////////////////////////<........................ 00:00:28 v #4490 > > ................................................................................ 00:00:28 v #4491 > > │ 00:00:28 v #4492 > > ................>//////////////////////////////////////<<....................... 00:00:28 v #4493 > > ................................................................................ 00:00:28 v #4494 > > │ 00:00:28 v #4495 > > ................>//////////////////////////////////////<<....................... 00:00:28 v #4496 > > ................................................................................ 00:00:28 v #4497 > > │ 00:00:28 v #4498 > > ................>//////////////////////////////////////<<....................... 00:00:28 v #4499 > > ..;;;;;;;;;;;;;;<<<............................................................. 00:00:28 v #4500 > > │ 00:00:28 v #4501 > > ................>//////////////////////////////////////<<......................; 00:00:28 v #4502 > > ;;//////////////<<<............................................................. 00:00:28 v #4503 > > │ 00:00:28 v #4504 > > .................//////////////////////////////////////<<...................... 00:00:28 v #4505 > > ////////////////<<<....................;;;;<<................................... 00:00:28 v #4506 > > │ 00:00:28 v #4507 > > .................//////////////////////////////////////<<...................... 00:00:28 v #4508 > > ////////////////<<<...............;;;;;////<<................................... 00:00:28 v #4509 > > │ 00:00:28 v #4510 > > .................//////////////////////////////////////<<......................> 00:00:28 v #4511 > > ////////////////<<<...............>////////<<................................... 00:00:28 v #4512 > > │ 00:00:28 v #4513 > > .................>//////////////////////////////////////<......................> 00:00:28 v #4514 > > ////////////////<<<................////////<<................................... 00:00:28 v #4515 > > │ 00:00:28 v #4516 > > .................>//////////////////////////////////////<......................> 00:00:28 v #4517 > > /////////////////<<<...............////////<<................................... 00:00:28 v #4518 > > │ 00:00:28 v #4519 > > .................>//////////////////////////////////////<......................> 00:00:28 v #4520 > > /////////////////<<<.............../////////.................................... 00:00:28 v #4521 > > │ 00:00:28 v #4522 > > .................>//////////////////////////////////////<....................... 00:00:28 v #4523 > > /////////////////<<<............................................................ 00:00:28 v #4524 > > │ 00:00:28 v #4525 > > ..................//////////////////////////////////////<....................... 00:00:28 v #4526 > > /////////////////<<............................................................. 00:00:28 v #4527 > > │ 00:00:28 v #4528 > > ..................//////////////////////////////////////<<...................... 00:00:28 v #4529 > > ................................................................................ 00:00:28 v #4530 > > │ 00:00:28 v #4531 > > ..................//////////////////////////////////////<<...................... 00:00:28 v #4532 > > ................................................................................ 00:00:28 v #4533 > > │ 00:00:28 v #4534 > > ..................//////////////////////////////////////<<...................... 00:00:28 v #4535 > > ................................................................................ 00:00:28 v #4536 > > │ 00:00:28 v #4537 > > ..................>/////////////////////////////////////<<...................... 00:00:28 v #4538 > > ................................................................................ 00:00:28 v #4539 > > │ 00:00:28 v #4540 > > ..................>/////////////////////////////////////<....................... 00:00:28 v #4541 > > ................................................................................ 00:00:28 v #4542 > > │ 00:00:28 v #4543 > > ..................//////////////////////////////////////<....................... 00:00:28 v #4544 > > ................................................................................ 00:00:28 v #4545 > > │ 00:00:28 v #4546 > > ................................................................................ 00:00:28 v #4547 > > ................................................................................ 00:00:28 v #4548 > > │ 00:00:28 v #4549 > > ................................................................................ 00:00:28 v #4550 > > ................................................................................ 00:00:28 v #4551 > > │ 00:00:28 v #4552 > > ................................................................................ 00:00:28 v #4553 > > ................................................................................ 00:00:28 v #4554 > > │ 00:00:28 v #4555 > > ................................................................................ 00:00:28 v #4556 > > ................................................................................ 00:00:28 v #4557 > > │ 00:00:28 v #4558 > > ................................................................................ 00:00:28 v #4559 > > ................................................................................ 00:00:28 v #4560 > > │ 00:00:28 v #4561 > > ................................................................................ 00:00:28 v #4562 > > ................................................................................ 00:00:28 v #4563 > > │ 00:00:28 v #4564 > > ................................................................................ 00:00:28 v #4565 > > ................................................................................ 00:00:28 v #4566 > > │ 00:00:28 v #4567 > > ................................................................................ 00:00:28 v #4568 > > ................................................................................ 00:00:28 v #4569 > > │ 00:00:28 v #4570 > > ................................................................................ 00:00:28 v #4571 > > ................................................................................ 00:00:28 v #4572 > > │ 00:00:28 v #4573 > > ................................................................................ 00:00:28 v #4574 > > ................................................................................ 00:00:28 v #4575 > > │ 00:00:28 v #4576 > > ................................................................................ 00:00:28 v #4577 > > ................................................................................ 00:00:28 v #4578 > > │ 00:00:28 v #4579 > > │ 00:00:28 v #4580 > > ................................................................................ 00:00:28 v #4581 > > ................................................................................ 00:00:28 v #4582 > > │ 00:00:28 v #4583 > > ................................................................................ 00:00:28 v #4584 > > ................................................................................ 00:00:28 v #4585 > > │ 00:00:28 v #4586 > > ................................................................................ 00:00:28 v #4587 > > ................................................................................ 00:00:28 v #4588 > > │ 00:00:28 v #4589 > > ................................................................................ 00:00:28 v #4590 > > ................................................................................ 00:00:28 v #4591 > > │ 00:00:28 v #4592 > > ................................................................................ 00:00:28 v #4593 > > ................................................................................ 00:00:28 v #4594 > > │ 00:00:28 v #4595 > > ................................................................................ 00:00:28 v #4596 > > ................................................................................ 00:00:28 v #4597 > > │ 00:00:28 v #4598 > > ................................................................................ 00:00:28 v #4599 > > ................................................................................ 00:00:28 v #4600 > > │ 00:00:28 v #4601 > > ................................................................................ 00:00:28 v #4602 > > ................................................................................ 00:00:28 v #4603 > > │ 00:00:28 v #4604 > > ................................................................................ 00:00:28 v #4605 > > ................................................................................ 00:00:28 v #4606 > > │ 00:00:28 v #4607 > > ................................................................................ 00:00:28 v #4608 > > ................................................................................ 00:00:28 v #4609 > > │ 00:00:28 v #4610 > > ......................................................<......................... 00:00:28 v #4611 > > ................................................................................ 00:00:28 v #4612 > > │ 00:00:28 v #4613 > > .........................................;;;;;;;;;;;;;<......................... 00:00:28 v #4614 > > ................................................................................ 00:00:28 v #4615 > > │ 00:00:28 v #4616 > > ...........................;;;;;;;;;;;;;;//////////////<........................ 00:00:28 v #4617 > > ................................................................................ 00:00:28 v #4618 > > │ 00:00:28 v #4619 > > ...............;;;;;;;;;;;;;///////////////////////////<........................ 00:00:28 v #4620 > > ................................................................................ 00:00:28 v #4621 > > │ 00:00:28 v #4622 > > ...............>///////////////////////////////////////<........................ 00:00:28 v #4623 > > ................................................................................ 00:00:28 v #4624 > > │ 00:00:28 v #4625 > > ................///////////////////////////////////////<........................ 00:00:28 v #4626 > > ................................................................................ 00:00:28 v #4627 > > │ 00:00:28 v #4628 > > ................///////////////////////////////////////<<....................... 00:00:28 v #4629 > > ................................................................................ 00:00:28 v #4630 > > │ 00:00:28 v #4631 > > ................>///////////////////////////////////////<....................... 00:00:28 v #4632 > > ....;;;;;;;;;;;;<<.............................................................. 00:00:28 v #4633 > > │ 00:00:28 v #4634 > > ................>///////////////////////////////////////<......................; 00:00:28 v #4635 > > ;;;;////////////<<.............................................................. 00:00:28 v #4636 > > │ 00:00:28 v #4637 > > .................///////////////////////////////////////<...................... 00:00:28 v #4638 > > ////////////////<<<....................;;;<<.................................... 00:00:28 v #4639 > > │ 00:00:28 v #4640 > > .................///////////////////////////////////////<...................... 00:00:28 v #4641 > > /////////////////<<...............;;;;;////<<................................... 00:00:28 v #4642 > > │ 00:00:28 v #4643 > > .................>//////////////////////////////////////<<.....................> 00:00:28 v #4644 > > /////////////////<<...............>////////<<................................... 00:00:28 v #4645 > > │ 00:00:28 v #4646 > > .................>///////////////////////////////////////<.....................> 00:00:28 v #4647 > > /////////////////<<................////////<<................................... 00:00:28 v #4648 > > │ 00:00:28 v #4649 > > ..................///////////////////////////////////////<...................... 00:00:28 v #4650 > > /////////////////<<................////////<<................................... 00:00:28 v #4651 > > │ 00:00:28 v #4652 > > ..................///////////////////////////////////////<...................... 00:00:28 v #4653 > > /////////////////<<<...............>////////.................................... 00:00:28 v #4654 > > │ 00:00:28 v #4655 > > ..................>//////////////////////////////////////<...................... 00:00:28 v #4656 > > >/////////////////<<............................................................ 00:00:28 v #4657 > > │ 00:00:28 v #4658 > > ..................>///////////////////////////////////////<..................... 00:00:28 v #4659 > > >/////////////////<............................................................. 00:00:28 v #4660 > > │ 00:00:28 v #4661 > > ...................///////////////////////////////////////<..................... 00:00:28 v #4662 > > ................................................................................ 00:00:28 v #4663 > > │ 00:00:28 v #4664 > > ...................///////////////////////////////////////<..................... 00:00:28 v #4665 > > ................................................................................ 00:00:28 v #4666 > > │ 00:00:28 v #4667 > > ...................>//////////////////////////////////////<..................... 00:00:28 v #4668 > > ................................................................................ 00:00:28 v #4669 > > │ 00:00:28 v #4670 > > ...................>//////////////////////////////////////<..................... 00:00:28 v #4671 > > ................................................................................ 00:00:28 v #4672 > > │ 00:00:28 v #4673 > > ...................>///////////////////////////////////////<.................... 00:00:28 v #4674 > > ................................................................................ 00:00:28 v #4675 > > │ 00:00:28 v #4676 > > ....................////////////////////////////................................ 00:00:28 v #4677 > > ................................................................................ 00:00:28 v #4678 > > │ 00:00:28 v #4679 > > ................................................................................ 00:00:28 v #4680 > > ................................................................................ 00:00:28 v #4681 > > │ 00:00:28 v #4682 > > ................................................................................ 00:00:28 v #4683 > > ................................................................................ 00:00:28 v #4684 > > │ 00:00:28 v #4685 > > ................................................................................ 00:00:28 v #4686 > > ................................................................................ 00:00:28 v #4687 > > │ 00:00:28 v #4688 > > ................................................................................ 00:00:28 v #4689 > > ................................................................................ 00:00:28 v #4690 > > │ 00:00:28 v #4691 > > ................................................................................ 00:00:28 v #4692 > > ................................................................................ 00:00:28 v #4693 > > │ 00:00:28 v #4694 > > ................................................................................ 00:00:28 v #4695 > > ................................................................................ 00:00:28 v #4696 > > │ 00:00:28 v #4697 > > ................................................................................ 00:00:28 v #4698 > > ................................................................................ 00:00:28 v #4699 > > │ 00:00:28 v #4700 > > ................................................................................ 00:00:28 v #4701 > > ................................................................................ 00:00:28 v #4702 > > │ 00:00:28 v #4703 > > ................................................................................ 00:00:28 v #4704 > > ................................................................................ 00:00:28 v #4705 > > │ 00:00:28 v #4706 > > ................................................................................ 00:00:28 v #4707 > > ................................................................................ 00:00:28 v #4708 > > │ 00:00:28 v #4709 > > ................................................................................ 00:00:28 v #4710 > > ................................................................................ 00:00:28 v #4711 > > │ 00:00:28 v #4712 > > │ 00:00:28 v #4713 > > ................................................................................ 00:00:28 v #4714 > > ................................................................................ 00:00:28 v #4715 > > │ 00:00:28 v #4716 > > ................................................................................ 00:00:28 v #4717 > > ................................................................................ 00:00:28 v #4718 > > │ 00:00:28 v #4719 > > ................................................................................ 00:00:28 v #4720 > > ................................................................................ 00:00:28 v #4721 > > │ 00:00:28 v #4722 > > ................................................................................ 00:00:28 v #4723 > > ................................................................................ 00:00:28 v #4724 > > │ 00:00:28 v #4725 > > ................................................................................ 00:00:28 v #4726 > > ................................................................................ 00:00:28 v #4727 > > │ 00:00:28 v #4728 > > ................................................................................ 00:00:28 v #4729 > > ................................................................................ 00:00:28 v #4730 > > │ 00:00:28 v #4731 > > ................................................................................ 00:00:28 v #4732 > > ................................................................................ 00:00:28 v #4733 > > │ 00:00:28 v #4734 > > ................................................................................ 00:00:28 v #4735 > > ................................................................................ 00:00:28 v #4736 > > │ 00:00:28 v #4737 > > ................................................................................ 00:00:28 v #4738 > > ................................................................................ 00:00:28 v #4739 > > │ 00:00:28 v #4740 > > ................................................................................ 00:00:28 v #4741 > > ................................................................................ 00:00:28 v #4742 > > │ 00:00:28 v #4743 > > .................................................;;;;;<......................... 00:00:28 v #4744 > > ................................................................................ 00:00:28 v #4745 > > │ 00:00:28 v #4746 > > .......................................;;;;;;;;;;/////<......................... 00:00:28 v #4747 > > ................................................................................ 00:00:28 v #4748 > > │ 00:00:28 v #4749 > > .............................;;;;;;;;;;///////////////<<........................ 00:00:28 v #4750 > > ................................................................................ 00:00:28 v #4751 > > │ 00:00:28 v #4752 > > ...................;;;;;;;;;;//////////////////////////<........................ 00:00:28 v #4753 > > ................................................................................ 00:00:28 v #4754 > > │ 00:00:28 v #4755 > > ...............;;;;////////////////////////////////////<........................ 00:00:28 v #4756 > > ................................................................................ 00:00:28 v #4757 > > │ 00:00:28 v #4758 > > ...............>///////////////////////////////////////<<....................... 00:00:28 v #4759 > > ................................................................................ 00:00:28 v #4760 > > │ 00:00:28 v #4761 > > ...............>////////////////////////////////////////<....................... 00:00:28 v #4762 > > ................<............................................................... 00:00:28 v #4763 > > │ 00:00:28 v #4764 > > ................////////////////////////////////////////<....................... 00:00:28 v #4765 > > .....;;;;;;;;;;;<............................................................... 00:00:28 v #4766 > > │ 00:00:28 v #4767 > > ................>///////////////////////////////////////<<....................;; 00:00:28 v #4768 > > ;;;;;///////////<<.............................................................. 00:00:28 v #4769 > > │ 00:00:28 v #4770 > > .................////////////////////////////////////////<..................... 00:00:28 v #4771 > > ////////////////<<.....................;;;<<.................................... 00:00:28 v #4772 > > │ 00:00:28 v #4773 > > .................>///////////////////////////////////////<..................... 00:00:28 v #4774 > > /////////////////<................;;;;;////<.................................... 00:00:28 v #4775 > > │ 00:00:28 v #4776 > > .................>///////////////////////////////////////<<....................> 00:00:28 v #4777 > > /////////////////<<...............>////////<<................................... 00:00:28 v #4778 > > │ 00:00:28 v #4779 > > ..................////////////////////////////////////////<..................... 00:00:28 v #4780 > > /////////////////<<................////////<<................................... 00:00:28 v #4781 > > │ 00:00:28 v #4782 > > ..................>///////////////////////////////////////<..................... 00:00:28 v #4783 > > //////////////////<................>////////<................................... 00:00:28 v #4784 > > │ 00:00:28 v #4785 > > ..................>///////////////////////////////////////<<.................... 00:00:28 v #4786 > > >/////////////////<<................//////...................................... 00:00:28 v #4787 > > │ 00:00:28 v #4788 > > ...................////////////////////////////////////////<.................... 00:00:28 v #4789 > > .//////////////////<............................................................ 00:00:28 v #4790 > > │ 00:00:28 v #4791 > > ...................>///////////////////////////////////////<.................... 00:00:28 v #4792 > > .>///////////////............................................................... 00:00:28 v #4793 > > │ 00:00:28 v #4794 > > ...................>///////////////////////////////////////<<................... 00:00:28 v #4795 > > .///............................................................................ 00:00:28 v #4796 > > │ 00:00:28 v #4797 > > ....................////////////////////////////////////////<................... 00:00:28 v #4798 > > ................................................................................ 00:00:28 v #4799 > > │ 00:00:28 v #4800 > > ....................>///////////////////////////////////////<................... 00:00:28 v #4801 > > ................................................................................ 00:00:28 v #4802 > > │ 00:00:28 v #4803 > > ....................>///////////////////////////////////////<<.................. 00:00:28 v #4804 > > ................................................................................ 00:00:28 v #4805 > > │ 00:00:28 v #4806 > > ...................../////////////////////////////////////...................... 00:00:28 v #4807 > > ................................................................................ 00:00:28 v #4808 > > │ 00:00:28 v #4809 > > .....................>/////////////////////..................................... 00:00:28 v #4810 > > ................................................................................ 00:00:28 v #4811 > > │ 00:00:28 v #4812 > > ......................///////................................................... 00:00:28 v #4813 > > ................................................................................ 00:00:28 v #4814 > > │ 00:00:28 v #4815 > > ................................................................................ 00:00:28 v #4816 > > ................................................................................ 00:00:28 v #4817 > > │ 00:00:28 v #4818 > > ................................................................................ 00:00:28 v #4819 > > ................................................................................ 00:00:28 v #4820 > > │ 00:00:28 v #4821 > > ................................................................................ 00:00:28 v #4822 > > ................................................................................ 00:00:28 v #4823 > > │ 00:00:28 v #4824 > > ................................................................................ 00:00:28 v #4825 > > ................................................................................ 00:00:28 v #4826 > > │ 00:00:28 v #4827 > > ................................................................................ 00:00:28 v #4828 > > ................................................................................ 00:00:28 v #4829 > > │ 00:00:28 v #4830 > > ................................................................................ 00:00:28 v #4831 > > ................................................................................ 00:00:28 v #4832 > > │ 00:00:28 v #4833 > > ................................................................................ 00:00:28 v #4834 > > ................................................................................ 00:00:28 v #4835 > > │ 00:00:28 v #4836 > > ................................................................................ 00:00:28 v #4837 > > ................................................................................ 00:00:28 v #4838 > > │ 00:00:28 v #4839 > > ................................................................................ 00:00:28 v #4840 > > ................................................................................ 00:00:28 v #4841 > > │ 00:00:28 v #4842 > > ................................................................................ 00:00:28 v #4843 > > ................................................................................ 00:00:28 v #4844 > > │ 00:00:28 v #4845 > > │ 00:00:28 v #4846 > > ................................................................................ 00:00:28 v #4847 > > ................................................................................ 00:00:28 v #4848 > > │ 00:00:28 v #4849 > > ................................................................................ 00:00:28 v #4850 > > ................................................................................ 00:00:28 v #4851 > > │ 00:00:28 v #4852 > > ................................................................................ 00:00:28 v #4853 > > ................................................................................ 00:00:28 v #4854 > > │ 00:00:28 v #4855 > > ................................................................................ 00:00:28 v #4856 > > ................................................................................ 00:00:28 v #4857 > > │ 00:00:28 v #4858 > > ................................................................................ 00:00:28 v #4859 > > ................................................................................ 00:00:28 v #4860 > > │ 00:00:28 v #4861 > > ................................................................................ 00:00:28 v #4862 > > ................................................................................ 00:00:28 v #4863 > > │ 00:00:28 v #4864 > > ................................................................................ 00:00:28 v #4865 > > ................................................................................ 00:00:28 v #4866 > > │ 00:00:28 v #4867 > > ................................................................................ 00:00:28 v #4868 > > ................................................................................ 00:00:28 v #4869 > > │ 00:00:28 v #4870 > > ................................................................................ 00:00:28 v #4871 > > ................................................................................ 00:00:28 v #4872 > > │ 00:00:28 v #4873 > > .....................................................<.......................... 00:00:28 v #4874 > > ................................................................................ 00:00:28 v #4875 > > │ 00:00:28 v #4876 > > ..............................................;;;;;;;<<......................... 00:00:28 v #4877 > > ................................................................................ 00:00:28 v #4878 > > │ 00:00:28 v #4879 > > .....................................;;;;;;;;;////////<......................... 00:00:28 v #4880 > > ................................................................................ 00:00:28 v #4881 > > │ 00:00:28 v #4882 > > .............................;;;;;;;;;////////////////<<........................ 00:00:28 v #4883 > > ................................................................................ 00:00:28 v #4884 > > │ 00:00:28 v #4885 > > ......................;;;;;;;//////////////////////////<........................ 00:00:28 v #4886 > > ................................................................................ 00:00:28 v #4887 > > │ 00:00:28 v #4888 > > ...............;;;;;;;/////////////////////////////////<........................ 00:00:28 v #4889 > > ................................................................................ 00:00:28 v #4890 > > │ 00:00:28 v #4891 > > .............../////////////////////////////////////////<....................... 00:00:28 v #4892 > > ................................................................................ 00:00:28 v #4893 > > │ 00:00:28 v #4894 > > ...............>////////////////////////////////////////<....................... 00:00:28 v #4895 > > .............;;;<............................................................... 00:00:28 v #4896 > > │ 00:00:28 v #4897 > > ................/////////////////////////////////////////<...................... 00:00:28 v #4898 > > .....;;;;;;;;///<............................................................... 00:00:28 v #4899 > > │ 00:00:28 v #4900 > > ................>////////////////////////////////////////<....................;; 00:00:28 v #4901 > > ;;;;;///////////<<.............................................................. 00:00:28 v #4902 > > │ 00:00:28 v #4903 > > ................./////////////////////////////////////////<...................> 00:00:28 v #4904 > > /////////////////<.....................;;;<<.................................... 00:00:28 v #4905 > > │ 00:00:28 v #4906 > > .................>////////////////////////////////////////<.................... 00:00:28 v #4907 > > /////////////////<<...............;;;;;////<.................................... 00:00:28 v #4908 > > │ 00:00:28 v #4909 > > ................../////////////////////////////////////////<...................> 00:00:28 v #4910 > > //////////////////<...............>////////<<................................... 00:00:28 v #4911 > > │ 00:00:28 v #4912 > > ..................>////////////////////////////////////////<.................... 00:00:28 v #4913 > > //////////////////<................/////////<................................... 00:00:28 v #4914 > > │ 00:00:28 v #4915 > > ..................>////////////////////////////////////////<<................... 00:00:28 v #4916 > > >//////////////////<...............>////////<................................... 00:00:28 v #4917 > > │ 00:00:28 v #4918 > > ...................>////////////////////////////////////////<................... 00:00:28 v #4919 > > .//////////////////<................/////=...................................... 00:00:28 v #4920 > > │ 00:00:28 v #4921 > > ...................>////////////////////////////////////////<<.................. 00:00:28 v #4922 > > .>/////////////////<<........................................................... 00:00:28 v #4923 > > │ 00:00:28 v #4924 > > ....................>////////////////////////////////////////<.................. 00:00:28 v #4925 > > ../////////////................................................................. 00:00:28 v #4926 > > │ 00:00:28 v #4927 > > ....................>////////////////////////////////////////<<................. 00:00:28 v #4928 > > ..>///.......................................................................... 00:00:28 v #4929 > > │ 00:00:28 v #4930 > > ...................../////////////////////////////////////////<................. 00:00:28 v #4931 > > ................................................................................ 00:00:28 v #4932 > > │ 00:00:28 v #4933 > > .....................>////////////////////////////////////////<................. 00:00:28 v #4934 > > ................................................................................ 00:00:28 v #4935 > > │ 00:00:28 v #4936 > > ......................///////////////////////////////////////................... 00:00:28 v #4937 > > ................................................................................ 00:00:28 v #4938 > > │ 00:00:28 v #4939 > > ......................>/////////////////////////////............................ 00:00:28 v #4940 > > ................................................................................ 00:00:28 v #4941 > > │ 00:00:28 v #4942 > > .......................////////////////////..................................... 00:00:28 v #4943 > > ................................................................................ 00:00:28 v #4944 > > │ 00:00:28 v #4945 > > .......................>//////////.............................................. 00:00:28 v #4946 > > ................................................................................ 00:00:28 v #4947 > > │ 00:00:28 v #4948 > > ................................................................................ 00:00:28 v #4949 > > ................................................................................ 00:00:28 v #4950 > > │ 00:00:28 v #4951 > > ................................................................................ 00:00:28 v #4952 > > ................................................................................ 00:00:28 v #4953 > > │ 00:00:28 v #4954 > > ................................................................................ 00:00:28 v #4955 > > ................................................................................ 00:00:28 v #4956 > > │ 00:00:28 v #4957 > > ................................................................................ 00:00:28 v #4958 > > ................................................................................ 00:00:28 v #4959 > > │ 00:00:28 v #4960 > > ................................................................................ 00:00:28 v #4961 > > ................................................................................ 00:00:28 v #4962 > > │ 00:00:28 v #4963 > > ................................................................................ 00:00:28 v #4964 > > ................................................................................ 00:00:28 v #4965 > > │ 00:00:28 v #4966 > > ................................................................................ 00:00:28 v #4967 > > ................................................................................ 00:00:28 v #4968 > > │ 00:00:28 v #4969 > > ................................................................................ 00:00:28 v #4970 > > ................................................................................ 00:00:28 v #4971 > > │ 00:00:28 v #4972 > > ................................................................................ 00:00:28 v #4973 > > ................................................................................ 00:00:28 v #4974 > > │ 00:00:28 v #4975 > > ................................................................................ 00:00:28 v #4976 > > ................................................................................ 00:00:28 v #4977 > > │ 00:00:28 v #4978 > > │ 00:00:28 v #4979 > > ................................................................................ 00:00:28 v #4980 > > ................................................................................ 00:00:28 v #4981 > > │ 00:00:28 v #4982 > > ................................................................................ 00:00:28 v #4983 > > ................................................................................ 00:00:28 v #4984 > > │ 00:00:28 v #4985 > > ................................................................................ 00:00:28 v #4986 > > ................................................................................ 00:00:28 v #4987 > > │ 00:00:28 v #4988 > > ................................................................................ 00:00:28 v #4989 > > ................................................................................ 00:00:28 v #4990 > > │ 00:00:28 v #4991 > > ................................................................................ 00:00:28 v #4992 > > ................................................................................ 00:00:28 v #4993 > > │ 00:00:28 v #4994 > > ................................................................................ 00:00:28 v #4995 > > ................................................................................ 00:00:28 v #4996 > > │ 00:00:28 v #4997 > > ................................................................................ 00:00:28 v #4998 > > ................................................................................ 00:00:28 v #4999 > > │ 00:00:28 v #5000 > > ................................................................................ 00:00:28 v #5001 > > ................................................................................ 00:00:28 v #5002 > > │ 00:00:28 v #5003 > > ................................................................................ 00:00:28 v #5004 > > ................................................................................ 00:00:28 v #5005 > > │ 00:00:28 v #5006 > > ..................................................;;;<.......................... 00:00:28 v #5007 > > ................................................................................ 00:00:28 v #5008 > > │ 00:00:28 v #5009 > > ............................................;;;;;;///<.......................... 00:00:28 v #5010 > > ................................................................................ 00:00:28 v #5011 > > │ 00:00:28 v #5012 > > .....................................;;;;;;;/////////<<......................... 00:00:28 v #5013 > > ................................................................................ 00:00:28 v #5014 > > │ 00:00:28 v #5015 > > ..............................;;;;;;;/////////////////<<........................ 00:00:28 v #5016 > > ................................................................................ 00:00:28 v #5017 > > │ 00:00:28 v #5018 > > .......................;;;;;;;/////////////////////////<........................ 00:00:28 v #5019 > > ................................................................................ 00:00:28 v #5020 > > │ 00:00:28 v #5021 > > .................;;;;;;;///////////////////////////////<<....................... 00:00:28 v #5022 > > ................................................................................ 00:00:28 v #5023 > > │ 00:00:28 v #5024 > > ..............;;;///////////////////////////////////////<....................... 00:00:28 v #5025 > > ................................................................................ 00:00:28 v #5026 > > │ 00:00:28 v #5027 > > ...............//////////////////////////////////////////<...................... 00:00:28 v #5028 > > ............;;;<................................................................ 00:00:28 v #5029 > > │ 00:00:28 v #5030 > > ...............>/////////////////////////////////////////<<..................... 00:00:28 v #5031 > > .....;;;;;;;////<............................................................... 00:00:28 v #5032 > > │ 00:00:28 v #5033 > > ................>/////////////////////////////////////////<....................; 00:00:28 v #5034 > > ;;;;;///////////<<.............................................................. 00:00:28 v #5035 > > │ 00:00:28 v #5036 > > ................./////////////////////////////////////////<<..................; 00:00:28 v #5037 > > /////////////////<.....................;;;<<.................................... 00:00:28 v #5038 > > │ 00:00:28 v #5039 > > .................>/////////////////////////////////////////<................... 00:00:28 v #5040 > > /////////////////<<...............;;;;;////<.................................... 00:00:28 v #5041 > > │ 00:00:28 v #5042 > > ..................//////////////////////////////////////////<................... 00:00:28 v #5043 > > //////////////////<<..............>////////<<................................... 00:00:28 v #5044 > > │ 00:00:28 v #5045 > > ..................>/////////////////////////////////////////<<.................. 00:00:28 v #5046 > > >//////////////////<...............>////////<................................... 00:00:28 v #5047 > > │ 00:00:28 v #5048 > > ...................>/////////////////////////////////////////<.................. 00:00:28 v #5049 > > .//////////////////<<...............////////<<.................................. 00:00:28 v #5050 > > │ 00:00:28 v #5051 > > ..................../////////////////////////////////////////<<................. 00:00:28 v #5052 > > .>//////////////////<...............>////....................................... 00:00:28 v #5053 > > │ 00:00:28 v #5054 > > ....................>/////////////////////////////////////////<................. 00:00:28 v #5055 > > ..///////////////////........................................................... 00:00:28 v #5056 > > │ 00:00:28 v #5057 > > ...................../////////////////////////////////////////<<................ 00:00:28 v #5058 > > ..>////////////................................................................. 00:00:28 v #5059 > > │ 00:00:28 v #5060 > > .....................>/////////////////////////////////////////<................ 00:00:28 v #5061 > > ...>////........................................................................ 00:00:28 v #5062 > > │ 00:00:28 v #5063 > > ......................>/////////////////////////////////////////<............... 00:00:28 v #5064 > > ................................................................................ 00:00:28 v #5065 > > │ 00:00:28 v #5066 > > ......................./////////////////////////////////////////................ 00:00:28 v #5067 > > ................................................................................ 00:00:28 v #5068 > > │ 00:00:28 v #5069 > > .......................>/////////////////////////////////....................... 00:00:28 v #5070 > > ................................................................................ 00:00:28 v #5071 > > │ 00:00:28 v #5072 > > ........................//////////////////////////.............................. 00:00:28 v #5073 > > ................................................................................ 00:00:28 v #5074 > > │ 00:00:28 v #5075 > > ........................>//////////////////..................................... 00:00:28 v #5076 > > ................................................................................ 00:00:28 v #5077 > > │ 00:00:28 v #5078 > > .........................>//////////............................................ 00:00:28 v #5079 > > ................................................................................ 00:00:28 v #5080 > > │ 00:00:28 v #5081 > > ..........................////.................................................. 00:00:28 v #5082 > > ................................................................................ 00:00:28 v #5083 > > │ 00:00:28 v #5084 > > ................................................................................ 00:00:28 v #5085 > > ................................................................................ 00:00:28 v #5086 > > │ 00:00:28 v #5087 > > ................................................................................ 00:00:28 v #5088 > > ................................................................................ 00:00:28 v #5089 > > │ 00:00:28 v #5090 > > ................................................................................ 00:00:28 v #5091 > > ................................................................................ 00:00:28 v #5092 > > │ 00:00:28 v #5093 > > ................................................................................ 00:00:28 v #5094 > > ................................................................................ 00:00:28 v #5095 > > │ 00:00:28 v #5096 > > ................................................................................ 00:00:28 v #5097 > > ................................................................................ 00:00:28 v #5098 > > │ 00:00:28 v #5099 > > ................................................................................ 00:00:28 v #5100 > > ................................................................................ 00:00:28 v #5101 > > │ 00:00:28 v #5102 > > ................................................................................ 00:00:28 v #5103 > > ................................................................................ 00:00:28 v #5104 > > │ 00:00:28 v #5105 > > ................................................................................ 00:00:28 v #5106 > > ................................................................................ 00:00:28 v #5107 > > │ 00:00:28 v #5108 > > ................................................................................ 00:00:28 v #5109 > > ................................................................................ 00:00:28 v #5110 > > │ 00:00:28 v #5111 > > │ 00:00:28 v #5112 > > ................................................................................ 00:00:28 v #5113 > > ................................................................................ 00:00:28 v #5114 > > │ 00:00:28 v #5115 > > ................................................................................ 00:00:28 v #5116 > > ................................................................................ 00:00:28 v #5117 > > │ 00:00:28 v #5118 > > ................................................................................ 00:00:28 v #5119 > > ................................................................................ 00:00:28 v #5120 > > │ 00:00:28 v #5121 > > ................................................................................ 00:00:28 v #5122 > > ................................................................................ 00:00:28 v #5123 > > │ 00:00:28 v #5124 > > ................................................................................ 00:00:28 v #5125 > > ................................................................................ 00:00:28 v #5126 > > │ 00:00:28 v #5127 > > ................................................................................ 00:00:28 v #5128 > > ................................................................................ 00:00:28 v #5129 > > │ 00:00:28 v #5130 > > ................................................................................ 00:00:28 v #5131 > > ................................................................................ 00:00:28 v #5132 > > │ 00:00:28 v #5133 > > ................................................................................ 00:00:28 v #5134 > > ................................................................................ 00:00:28 v #5135 > > │ 00:00:28 v #5136 > > ................................................................................ 00:00:28 v #5137 > > ................................................................................ 00:00:28 v #5138 > > │ 00:00:28 v #5139 > > ................................................;;;/;........................... 00:00:28 v #5140 > > ................................................................................ 00:00:28 v #5141 > > │ 00:00:28 v #5142 > > ..........................................;;;;/;//////.......................... 00:00:28 v #5143 > > ................................................................................ 00:00:28 v #5144 > > │ 00:00:28 v #5145 > > ....................................;;;;///////////////......................... 00:00:28 v #5146 > > ................................................................................ 00:00:28 v #5147 > > │ 00:00:28 v #5148 > > ...............................;;/;;///////////////////<........................ 00:00:28 v #5149 > > ................................................................................ 00:00:28 v #5150 > > │ 00:00:28 v #5151 > > .........................;;;;/;/////////////////////////........................ 00:00:28 v #5152 > > ................................................................................ 00:00:28 v #5153 > > │ 00:00:28 v #5154 > > ...................;;;;//;///////////////////////////////....................... 00:00:28 v #5155 > > ................................................................................ 00:00:28 v #5156 > > │ 00:00:28 v #5157 > > ..............;;/;;//////////////////////////////////////<...................... 00:00:28 v #5158 > > ................................................................................ 00:00:28 v #5159 > > │ 00:00:28 v #5160 > > ..............>>//////////////////////////////////////////...................... 00:00:28 v #5161 > > ...........;;;//................................................................ 00:00:28 v #5162 > > │ 00:00:28 v #5163 > > ...............>>//////////////////////////////////////////..................... 00:00:28 v #5164 > > ......;;/////////............................................................... 00:00:28 v #5165 > > │ 00:00:28 v #5166 > > ................>///////////////////////////////////////////.................... 00:00:28 v #5167 > > ;;;///////////////.............................................................. 00:00:28 v #5168 > > │ 00:00:28 v #5169 > > .................>//////////////////////////////////////////<.................;> 00:00:28 v #5170 > > //////////////////<...................;;///<.................................... 00:00:28 v #5171 > > │ 00:00:28 v #5172 > > .................>>//////////////////////////////////////////..................> 00:00:28 v #5173 > > ///////////////////...............;;;;//////.................................... 00:00:28 v #5174 > > │ 00:00:28 v #5175 > > ..................>>//////////////////////////////////////////.................. 00:00:28 v #5176 > > >///////////////////...............>/////////................................... 00:00:28 v #5177 > > │ 00:00:28 v #5178 > > ...................>//////////////////////////////////////////<................. 00:00:28 v #5179 > > >>///////////////////..............>>////////<.................................. 00:00:28 v #5180 > > │ 00:00:28 v #5181 > > ....................>//////////////////////////////////////////................. 00:00:28 v #5182 > > .>>//////////////////...............>>////////.................................. 00:00:28 v #5183 > > │ 00:00:28 v #5184 > > ....................>>//////////////////////////////////////////................ 00:00:28 v #5185 > > ..>///////////////////...............>///....................................... 00:00:28 v #5186 > > │ 00:00:28 v #5187 > > .....................>///////////////////////////////////////////............... 00:00:28 v #5188 > > ...>////////////////............................................................ 00:00:28 v #5189 > > │ 00:00:28 v #5190 > > ......................>//////////////////////////////////////////<.............. 00:00:28 v #5191 > > ...>>/////////.................................................................. 00:00:28 v #5192 > > │ 00:00:28 v #5193 > > ......................>>//////////////////////////////////////////.............. 00:00:28 v #5194 > > ....>////....................................................................... 00:00:28 v #5195 > > │ 00:00:28 v #5196 > > .......................>>/////////////////////////////////////////.............. 00:00:28 v #5197 > > ................................................................................ 00:00:28 v #5198 > > │ 00:00:28 v #5199 > > ........................>>//////////////////////////////////.................... 00:00:28 v #5200 > > ................................................................................ 00:00:28 v #5201 > > │ 00:00:28 v #5202 > > .........................>////////////////////////////.......................... 00:00:28 v #5203 > > ................................................................................ 00:00:28 v #5204 > > │ 00:00:28 v #5205 > > .........................>>//////////////////////............................... 00:00:28 v #5206 > > ................................................................................ 00:00:28 v #5207 > > │ 00:00:28 v #5208 > > ..........................>>////////////////.................................... 00:00:28 v #5209 > > ................................................................................ 00:00:28 v #5210 > > │ 00:00:28 v #5211 > > ...........................>///////////......................................... 00:00:28 v #5212 > > ................................................................................ 00:00:28 v #5213 > > │ 00:00:28 v #5214 > > ............................>////............................................... 00:00:28 v #5215 > > ................................................................................ 00:00:28 v #5216 > > │ 00:00:28 v #5217 > > ................................................................................ 00:00:28 v #5218 > > ................................................................................ 00:00:28 v #5219 > > │ 00:00:28 v #5220 > > ................................................................................ 00:00:28 v #5221 > > ................................................................................ 00:00:28 v #5222 > > │ 00:00:28 v #5223 > > ................................................................................ 00:00:28 v #5224 > > ................................................................................ 00:00:28 v #5225 > > │ 00:00:28 v #5226 > > ................................................................................ 00:00:28 v #5227 > > ................................................................................ 00:00:28 v #5228 > > │ 00:00:28 v #5229 > > ................................................................................ 00:00:28 v #5230 > > ................................................................................ 00:00:28 v #5231 > > │ 00:00:28 v #5232 > > ................................................................................ 00:00:28 v #5233 > > ................................................................................ 00:00:28 v #5234 > > │ 00:00:28 v #5235 > > ................................................................................ 00:00:28 v #5236 > > ................................................................................ 00:00:28 v #5237 > > │ 00:00:28 v #5238 > > ................................................................................ 00:00:28 v #5239 > > ................................................................................ 00:00:28 v #5240 > > │ 00:00:28 v #5241 > > ................................................................................ 00:00:28 v #5242 > > ................................................................................ 00:00:28 v #5243 > > │ 00:00:28 v #5244 > > │ 00:00:28 v #5245 > > ................................................................................ 00:00:28 v #5246 > > ................................................................................ 00:00:28 v #5247 > > │ 00:00:28 v #5248 > > ................................................................................ 00:00:28 v #5249 > > ................................................................................ 00:00:28 v #5250 > > │ 00:00:28 v #5251 > > ................................................................................ 00:00:28 v #5252 > > ................................................................................ 00:00:28 v #5253 > > │ 00:00:28 v #5254 > > ................................................................................ 00:00:28 v #5255 > > ................................................................................ 00:00:28 v #5256 > > │ 00:00:28 v #5257 > > ................................................................................ 00:00:28 v #5258 > > ................................................................................ 00:00:28 v #5259 > > │ 00:00:28 v #5260 > > ................................................................................ 00:00:28 v #5261 > > ................................................................................ 00:00:28 v #5262 > > │ 00:00:28 v #5263 > > ................................................................................ 00:00:28 v #5264 > > ................................................................................ 00:00:28 v #5265 > > │ 00:00:28 v #5266 > > ................................................................................ 00:00:28 v #5267 > > ................................................................................ 00:00:28 v #5268 > > │ 00:00:28 v #5269 > > ...................................................;............................ 00:00:28 v #5270 > > ................................................................................ 00:00:28 v #5271 > > │ 00:00:28 v #5272 > > ..............................................;/;;///........................... 00:00:28 v #5273 > > ................................................................................ 00:00:28 v #5274 > > │ 00:00:28 v #5275 > > .........................................;;;//////////.......................... 00:00:28 v #5276 > > ................................................................................ 00:00:28 v #5277 > > │ 00:00:28 v #5278 > > ....................................;;;///////////////<......................... 00:00:28 v #5279 > > ................................................................................ 00:00:28 v #5280 > > │ 00:00:28 v #5281 > > ...............................;;;/;///////////////////<........................ 00:00:28 v #5282 > > ................................................................................ 00:00:28 v #5283 > > │ 00:00:28 v #5284 > > ..........................;;;/;/////////////////////////<....................... 00:00:28 v #5285 > > ................................................................................ 00:00:28 v #5286 > > │ 00:00:28 v #5287 > > ......................;;/////////////////////////////////....................... 00:00:28 v #5288 > > ................................................................................ 00:00:28 v #5289 > > │ 00:00:28 v #5290 > > .................;;;//////////////////////////////////////...................... 00:00:28 v #5291 > > ................................................................................ 00:00:28 v #5292 > > │ 00:00:28 v #5293 > > ..............;>///////////////////////////////////////////..................... 00:00:28 v #5294 > > ...........;;;;/................................................................ 00:00:28 v #5295 > > │ 00:00:28 v #5296 > > ...............>///////////////////////////////////////////<.................... 00:00:28 v #5297 > > ......;;/////////............................................................... 00:00:28 v #5298 > > │ 00:00:28 v #5299 > > ................>///////////////////////////////////////////<................... 00:00:28 v #5300 > > .;;;//////////////.............................................................. 00:00:28 v #5301 > > │ 00:00:28 v #5302 > > .................>///////////////////////////////////////////<................;> 00:00:28 v #5303 > > ///////////////////...................;;///<.................................... 00:00:28 v #5304 > > │ 00:00:28 v #5305 > > .................>>///////////////////////////////////////////.................> 00:00:28 v #5306 > > >///////////////////..............;;;;//////.................................... 00:00:28 v #5307 > > │ 00:00:28 v #5308 > > ..................>>///////////////////////////////////////////................. 00:00:28 v #5309 > > >///////////////////<.............>>/////////................................... 00:00:28 v #5310 > > │ 00:00:28 v #5311 > > ...................>>///////////////////////////////////////////................ 00:00:28 v #5312 > > .>///////////////////<.............>>/////////.................................. 00:00:28 v #5313 > > │ 00:00:28 v #5314 > > ....................>>///////////////////////////////////////////............... 00:00:28 v #5315 > > .>>///////////////////..............>>////////.................................. 00:00:28 v #5316 > > │ 00:00:28 v #5317 > > .....................>///////////////////////////////////////////<.............. 00:00:28 v #5318 > > ..>>///////////////////..............>////...................................... 00:00:28 v #5319 > > │ 00:00:28 v #5320 > > ......................>///////////////////////////////////////////<............. 00:00:28 v #5321 > > ...>>//////////////............................................................. 00:00:28 v #5322 > > │ 00:00:28 v #5323 > > .......................>///////////////////////////////////////////............. 00:00:28 v #5324 > > ....>>////////.................................................................. 00:00:28 v #5325 > > │ 00:00:28 v #5326 > > ........................>//////////////////////////////////////////............. 00:00:28 v #5327 > > .....>////...................................................................... 00:00:28 v #5328 > > │ 00:00:28 v #5329 > > ........................>>/////////////////////////////////////................. 00:00:28 v #5330 > > ................................................................................ 00:00:28 v #5331 > > │ 00:00:28 v #5332 > > .........................>>///////////////////////////////...................... 00:00:28 v #5333 > > ................................................................................ 00:00:28 v #5334 > > │ 00:00:28 v #5335 > > ..........................>>//////////////////////////.......................... 00:00:28 v #5336 > > ................................................................................ 00:00:28 v #5337 > > │ 00:00:28 v #5338 > > ...........................>>////////////////////............................... 00:00:28 v #5339 > > ................................................................................ 00:00:28 v #5340 > > │ 00:00:28 v #5341 > > ............................>>///////////////................................... 00:00:28 v #5342 > > ................................................................................ 00:00:28 v #5343 > > │ 00:00:28 v #5344 > > .............................>>/////////........................................ 00:00:28 v #5345 > > ................................................................................ 00:00:28 v #5346 > > │ 00:00:28 v #5347 > > ..............................>/////............................................ 00:00:28 v #5348 > > ................................................................................ 00:00:28 v #5349 > > │ 00:00:28 v #5350 > > .............................../................................................ 00:00:28 v #5351 > > ................................................................................ 00:00:28 v #5352 > > │ 00:00:28 v #5353 > > ................................................................................ 00:00:28 v #5354 > > ................................................................................ 00:00:28 v #5355 > > │ 00:00:28 v #5356 > > ................................................................................ 00:00:28 v #5357 > > ................................................................................ 00:00:28 v #5358 > > │ 00:00:28 v #5359 > > ................................................................................ 00:00:28 v #5360 > > ................................................................................ 00:00:28 v #5361 > > │ 00:00:28 v #5362 > > ................................................................................ 00:00:28 v #5363 > > ................................................................................ 00:00:28 v #5364 > > │ 00:00:28 v #5365 > > ................................................................................ 00:00:28 v #5366 > > ................................................................................ 00:00:28 v #5367 > > │ 00:00:28 v #5368 > > ................................................................................ 00:00:28 v #5369 > > ................................................................................ 00:00:28 v #5370 > > │ 00:00:28 v #5371 > > ................................................................................ 00:00:28 v #5372 > > ................................................................................ 00:00:28 v #5373 > > │ 00:00:28 v #5374 > > ................................................................................ 00:00:28 v #5375 > > ................................................................................ 00:00:28 v #5376 > > │ 00:00:28 v #5377 > > │ 00:00:28 v #5378 > > ................................................................................ 00:00:28 v #5379 > > ................................................................................ 00:00:28 v #5380 > > │ 00:00:28 v #5381 > > ................................................................................ 00:00:28 v #5382 > > ................................................................................ 00:00:28 v #5383 > > │ 00:00:28 v #5384 > > ................................................................................ 00:00:28 v #5385 > > ................................................................................ 00:00:28 v #5386 > > │ 00:00:28 v #5387 > > ................................................................................ 00:00:28 v #5388 > > ................................................................................ 00:00:28 v #5389 > > │ 00:00:28 v #5390 > > ................................................................................ 00:00:28 v #5391 > > ................................................................................ 00:00:28 v #5392 > > │ 00:00:28 v #5393 > > ................................................................................ 00:00:28 v #5394 > > ................................................................................ 00:00:28 v #5395 > > │ 00:00:28 v #5396 > > ................................................................................ 00:00:28 v #5397 > > ................................................................................ 00:00:28 v #5398 > > │ 00:00:28 v #5399 > > ................................................................................ 00:00:28 v #5400 > > ................................................................................ 00:00:28 v #5401 > > │ 00:00:28 v #5402 > > ................................................;;/<............................ 00:00:28 v #5403 > > ................................................................................ 00:00:28 v #5404 > > │ 00:00:28 v #5405 > > ............................................;;//////<........................... 00:00:28 v #5406 > > ................................................................................ 00:00:28 v #5407 > > │ 00:00:28 v #5408 > > ........................................;;;//////////<.......................... 00:00:28 v #5409 > > ................................................................................ 00:00:28 v #5410 > > │ 00:00:28 v #5411 > > ....................................;/;;//////////////<......................... 00:00:28 v #5412 > > ................................................................................ 00:00:28 v #5413 > > │ 00:00:28 v #5414 > > ................................;;/////////////////////<........................ 00:00:28 v #5415 > > ................................................................................ 00:00:28 v #5416 > > │ 00:00:28 v #5417 > > ...........................;;//;////////////////////////........................ 00:00:28 v #5418 > > ................................................................................ 00:00:28 v #5419 > > │ 00:00:28 v #5420 > > .......................;;;///////////////////////////////<...................... 00:00:28 v #5421 > > ................................................................................ 00:00:28 v #5422 > > │ 00:00:28 v #5423 > > ...................;/;////////////////////////////////////<..................... 00:00:28 v #5424 > > ..............;................................................................. 00:00:28 v #5425 > > │ 00:00:28 v #5426 > > ..............;;;;/////////////////////////////////////////<.................... 00:00:28 v #5427 > > ..........;/////................................................................ 00:00:28 v #5428 > > │ 00:00:28 v #5429 > > ..............;>////////////////////////////////////////////<................... 00:00:28 v #5430 > > ......;;;;///////............................................................... 00:00:28 v #5431 > > │ 00:00:28 v #5432 > > ................>////////////////////////////////////////////<.................. 00:00:28 v #5433 > > ..;///////////////.............................................................. 00:00:28 v #5434 > > │ 00:00:28 v #5435 > > .................>////////////////////////////////////////////.................; 00:00:28 v #5436 > > ;//////////////////...................;;;//<.................................... 00:00:28 v #5437 > > │ 00:00:28 v #5438 > > ..................>////////////////////////////////////////////................> 00:00:28 v #5439 > > >///////////////////..............;;;///////<................................... 00:00:28 v #5440 > > │ 00:00:28 v #5441 > > ...................>////////////////////////////////////////////<..............> 00:00:28 v #5442 > > >>///////////////////.............>>/////////<.................................. 00:00:28 v #5443 > > │ 00:00:28 v #5444 > > ....................>////////////////////////////////////////////<.............. 00:00:28 v #5445 > > >>>///////////////////.............>>/////////.................................. 00:00:28 v #5446 > > │ 00:00:28 v #5447 > > .....................>////////////////////////////////////////////<............. 00:00:28 v #5448 > > .>>>///////////////////.............>>////////.................................. 00:00:28 v #5449 > > │ 00:00:28 v #5450 > > ......................>////////////////////////////////////////////<............ 00:00:28 v #5451 > > ..>>>/////////////////...............>>///...................................... 00:00:28 v #5452 > > │ 00:00:28 v #5453 > > .......................>////////////////////////////////////////////............ 00:00:28 v #5454 > > ...>>>////////////.............................................................. 00:00:28 v #5455 > > │ 00:00:28 v #5456 > > ........................>///////////////////////////////////////////............ 00:00:28 v #5457 > > ....>>>///////.................................................................. 00:00:28 v #5458 > > │ 00:00:28 v #5459 > > .........................>>/////////////////////////////////////................ 00:00:28 v #5460 > > .....>>////..................................................................... 00:00:28 v #5461 > > │ 00:00:28 v #5462 > > ..........................>/////////////////////////////////.................... 00:00:28 v #5463 > > ................................................................................ 00:00:28 v #5464 > > │ 00:00:28 v #5465 > > ...........................>>////////////////////////////....................... 00:00:28 v #5466 > > ................................................................................ 00:00:28 v #5467 > > │ 00:00:28 v #5468 > > ............................>>///////////////////////........................... 00:00:28 v #5469 > > ................................................................................ 00:00:28 v #5470 > > │ 00:00:28 v #5471 > > .............................>////////////////////.............................. 00:00:28 v #5472 > > ................................................................................ 00:00:28 v #5473 > > │ 00:00:28 v #5474 > > ..............................>>//////////////.................................. 00:00:28 v #5475 > > ................................................................................ 00:00:28 v #5476 > > │ 00:00:28 v #5477 > > ...............................>>/////////...................................... 00:00:28 v #5478 > > ................................................................................ 00:00:28 v #5479 > > │ 00:00:28 v #5480 > > ................................>>////.......................................... 00:00:28 v #5481 > > ................................................................................ 00:00:28 v #5482 > > │ 00:00:28 v #5483 > > .................................>/............................................. 00:00:28 v #5484 > > ................................................................................ 00:00:28 v #5485 > > │ 00:00:28 v #5486 > > ................................................................................ 00:00:28 v #5487 > > ................................................................................ 00:00:28 v #5488 > > │ 00:00:28 v #5489 > > ................................................................................ 00:00:28 v #5490 > > ................................................................................ 00:00:28 v #5491 > > │ 00:00:28 v #5492 > > ................................................................................ 00:00:28 v #5493 > > ................................................................................ 00:00:28 v #5494 > > │ 00:00:28 v #5495 > > ................................................................................ 00:00:28 v #5496 > > ................................................................................ 00:00:28 v #5497 > > │ 00:00:28 v #5498 > > ................................................................................ 00:00:28 v #5499 > > ................................................................................ 00:00:28 v #5500 > > │ 00:00:28 v #5501 > > ................................................................................ 00:00:28 v #5502 > > ................................................................................ 00:00:28 v #5503 > > │ 00:00:28 v #5504 > > ................................................................................ 00:00:28 v #5505 > > ................................................................................ 00:00:28 v #5506 > > │ 00:00:28 v #5507 > > ................................................................................ 00:00:28 v #5508 > > ................................................................................ 00:00:28 v #5509 > > │ 00:00:28 v #5510 > > │ 00:00:28 v #5511 > > ................................................................................ 00:00:28 v #5512 > > ................................................................................ 00:00:28 v #5513 > > │ 00:00:28 v #5514 > > ................................................................................ 00:00:28 v #5515 > > ................................................................................ 00:00:28 v #5516 > > │ 00:00:28 v #5517 > > ................................................................................ 00:00:28 v #5518 > > ................................................................................ 00:00:28 v #5519 > > │ 00:00:28 v #5520 > > ................................................................................ 00:00:28 v #5521 > > ................................................................................ 00:00:28 v #5522 > > │ 00:00:28 v #5523 > > ................................................................................ 00:00:28 v #5524 > > ................................................................................ 00:00:28 v #5525 > > │ 00:00:28 v #5526 > > ................................................................................ 00:00:28 v #5527 > > ................................................................................ 00:00:28 v #5528 > > │ 00:00:28 v #5529 > > ................................................................................ 00:00:28 v #5530 > > ................................................................................ 00:00:28 v #5531 > > │ 00:00:28 v #5532 > > ................................................................................ 00:00:28 v #5533 > > ................................................................................ 00:00:28 v #5534 > > │ 00:00:28 v #5535 > > ...............................................;;;/............................. 00:00:28 v #5536 > > ................................................................................ 00:00:28 v #5537 > > │ 00:00:28 v #5538 > > ...........................................;;;//////............................ 00:00:28 v #5539 > > ................................................................................ 00:00:28 v #5540 > > │ 00:00:28 v #5541 > > .......................................;;;///////////........................... 00:00:28 v #5542 > > ................................................................................ 00:00:28 v #5543 > > │ 00:00:28 v #5544 > > ....................................;;////////////////.......................... 00:00:28 v #5545 > > ................................................................................ 00:00:28 v #5546 > > │ 00:00:28 v #5547 > > ................................;;;////////////////////<........................ 00:00:28 v #5548 > > ................................................................................ 00:00:28 v #5549 > > │ 00:00:28 v #5550 > > ............................;;/;////////////////////////<....................... 00:00:28 v #5551 > > ................................................................................ 00:00:28 v #5552 > > │ 00:00:28 v #5553 > > .........................;;//////////////////////////////<...................... 00:00:28 v #5554 > > ................................................................................ 00:00:28 v #5555 > > │ 00:00:28 v #5556 > > .....................;/////////////////////////////////////..................... 00:00:28 v #5557 > > .............;;................................................................. 00:00:28 v #5558 > > │ 00:00:28 v #5559 > > .................;/;////////////////////////////////////////.................... 00:00:28 v #5560 > > ..........;;////................................................................ 00:00:28 v #5561 > > │ 00:00:28 v #5562 > > ...............;/////////////////////////////////////////////................... 00:00:28 v #5563 > > ......;;;////////............................................................... 00:00:28 v #5564 > > │ 00:00:28 v #5565 > > ...............>>/////////////////////////////////////////////.................. 00:00:28 v #5566 > > ...;//////////////<............................................................. 00:00:28 v #5567 > > │ 00:00:28 v #5568 > > ................>>/////////////////////////////////////////////................; 00:00:28 v #5569 > > ;///////////////////..................;;;//<.................................... 00:00:28 v #5570 > > │ 00:00:28 v #5571 > > ..................>>////////////////////////////////////////////<.............;; 00:00:28 v #5572 > > >////////////////////..............;/////////................................... 00:00:28 v #5573 > > │ 00:00:28 v #5574 > > ...................>>////////////////////////////////////////////<............\> 00:00:28 v #5575 > > >>////////////////////............;>//////////.................................. 00:00:28 v #5576 > > │ 00:00:28 v #5577 > > ....................>>////////////////////////////////////////////<............. 00:00:28 v #5578 > > >>>////////////////////...........\>>//////////................................. 00:00:28 v #5579 > > │ 00:00:28 v #5580 > > .....................>>/////////////////////////////////////////////............ 00:00:28 v #5581 > > .>>>////////////////////............>>>//////................................... 00:00:28 v #5582 > > │ 00:00:28 v #5583 > > .......................>/////////////////////////////////////////////........... 00:00:28 v #5584 > > ..>>>////////////////................>>///...................................... 00:00:28 v #5585 > > │ 00:00:28 v #5586 > > ........................>////////////////////////////////////////////........... 00:00:28 v #5587 > > ...>>>////////////.............................................................. 00:00:28 v #5588 > > │ 00:00:28 v #5589 > > .........................>>///////////////////////////////////////.............. 00:00:28 v #5590 > > ....>>>>///////................................................................. 00:00:28 v #5591 > > │ 00:00:28 v #5592 > > ..........................>>///////////////////////////////////................. 00:00:28 v #5593 > > .....\>>>///.................................................................... 00:00:28 v #5594 > > │ 00:00:28 v #5595 > > ...........................>>//////////////////////////////..................... 00:00:28 v #5596 > > ................................................................................ 00:00:28 v #5597 > > │ 00:00:28 v #5598 > > ............................>>//////////////////////////........................ 00:00:28 v #5599 > > ................................................................................ 00:00:28 v #5600 > > │ 00:00:28 v #5601 > > .............................>>//////////////////////........................... 00:00:28 v #5602 > > ................................................................................ 00:00:28 v #5603 > > │ 00:00:28 v #5604 > > ...............................>//////////////////.............................. 00:00:28 v #5605 > > ................................................................................ 00:00:28 v #5606 > > │ 00:00:28 v #5607 > > ................................>>/////////////................................. 00:00:28 v #5608 > > ................................................................................ 00:00:28 v #5609 > > │ 00:00:28 v #5610 > > .................................>>/////////.................................... 00:00:28 v #5611 > > ................................................................................ 00:00:28 v #5612 > > │ 00:00:28 v #5613 > > ..................................>>/////....................................... 00:00:28 v #5614 > > ................................................................................ 00:00:28 v #5615 > > │ 00:00:28 v #5616 > > ...................................>//.......................................... 00:00:28 v #5617 > > ................................................................................ 00:00:28 v #5618 > > │ 00:00:28 v #5619 > > ................................................................................ 00:00:28 v #5620 > > ................................................................................ 00:00:28 v #5621 > > │ 00:00:28 v #5622 > > ................................................................................ 00:00:28 v #5623 > > ................................................................................ 00:00:28 v #5624 > > │ 00:00:28 v #5625 > > ................................................................................ 00:00:28 v #5626 > > ................................................................................ 00:00:28 v #5627 > > │ 00:00:28 v #5628 > > ................................................................................ 00:00:28 v #5629 > > ................................................................................ 00:00:28 v #5630 > > │ 00:00:28 v #5631 > > ................................................................................ 00:00:28 v #5632 > > ................................................................................ 00:00:28 v #5633 > > │ 00:00:28 v #5634 > > ................................................................................ 00:00:28 v #5635 > > ................................................................................ 00:00:28 v #5636 > > │ 00:00:28 v #5637 > > ................................................................................ 00:00:28 v #5638 > > ................................................................................ 00:00:28 v #5639 > > │ 00:00:28 v #5640 > > ................................................................................ 00:00:28 v #5641 > > ................................................................................ 00:00:28 v #5642 > > │ 00:00:28 v #5643 > > │ 00:00:28 v #5644 > > ................................................................................ 00:00:28 v #5645 > > ................................................................................ 00:00:28 v #5646 > > │ 00:00:28 v #5647 > > ................................................................................ 00:00:28 v #5648 > > ................................................................................ 00:00:28 v #5649 > > │ 00:00:28 v #5650 > > ................................................................................ 00:00:28 v #5651 > > ................................................................................ 00:00:28 v #5652 > > │ 00:00:28 v #5653 > > ................................................................................ 00:00:28 v #5654 > > ................................................................................ 00:00:28 v #5655 > > │ 00:00:28 v #5656 > > ................................................................................ 00:00:28 v #5657 > > ................................................................................ 00:00:28 v #5658 > > │ 00:00:28 v #5659 > > ................................................................................ 00:00:28 v #5660 > > ................................................................................ 00:00:28 v #5661 > > │ 00:00:28 v #5662 > > ................................................................................ 00:00:28 v #5663 > > ................................................................................ 00:00:28 v #5664 > > │ 00:00:28 v #5665 > > ................................................................................ 00:00:28 v #5666 > > ................................................................................ 00:00:28 v #5667 > > │ 00:00:28 v #5668 > > .............................................;;///.............................. 00:00:28 v #5669 > > ................................................................................ 00:00:28 v #5670 > > │ 00:00:28 v #5671 > > ..........................................;;;//////<............................ 00:00:28 v #5672 > > ................................................................................ 00:00:28 v #5673 > > │ 00:00:28 v #5674 > > .......................................;////////////<........................... 00:00:28 v #5675 > > ................................................................................ 00:00:28 v #5676 > > │ 00:00:28 v #5677 > > ....................................;/////////////////.......................... 00:00:28 v #5678 > > ................................................................................ 00:00:28 v #5679 > > │ 00:00:28 v #5680 > > ................................;;;////////////////////<........................ 00:00:28 v #5681 > > ................................................................................ 00:00:28 v #5682 > > │ 00:00:28 v #5683 > > .............................;;;////////////////////////<....................... 00:00:28 v #5684 > > ................................................................................ 00:00:28 v #5685 > > │ 00:00:28 v #5686 > > ..........................;///////////////////////////////...................... 00:00:28 v #5687 > > ................................................................................ 00:00:28 v #5688 > > │ 00:00:28 v #5689 > > ......................;;///////////////////////////////////..................... 00:00:28 v #5690 > > .............;/................................................................. 00:00:28 v #5691 > > │ 00:00:28 v #5692 > > ...................;;;//////////////////////////////////////<................... 00:00:28 v #5693 > > ..........;;////................................................................ 00:00:28 v #5694 > > │ 00:00:28 v #5695 > > ................;;////////////////////////////////////////////.................. 00:00:28 v #5696 > > ......;;;////////............................................................... 00:00:28 v #5697 > > │ 00:00:28 v #5698 > > ...............;>//////////////////////////////////////////////................. 00:00:28 v #5699 > > ...;;//////////////......................<...................................... 00:00:28 v #5700 > > │ 00:00:28 v #5701 > > ................>>//////////////////////////////////////////////................ 00:00:28 v #5702 > > ;///////////////////..................;;;//<.................................... 00:00:28 v #5703 > > │ 00:00:28 v #5704 > > .................>>>//////////////////////////////////////////////............;; 00:00:28 v #5705 > > >////////////////////..............;;;///////................................... 00:00:28 v #5706 > > │ 00:00:28 v #5707 > > ..................>>>//////////////////////////////////////////////...........>> 00:00:28 v #5708 > > >>////////////////////<..........;;;>/////////.................................. 00:00:28 v #5709 > > │ 00:00:28 v #5710 > > ...................>>>//////////////////////////////////////////////...........> 00:00:28 v #5711 > > >>>/////////////////////..........>>>>/////////................................. 00:00:28 v #5712 > > │ 00:00:28 v #5713 > > .....................>>>/////////////////////////////////////////////<.......... 00:00:28 v #5714 > > >>>>>//////////////////............>>>>//////................................... 00:00:28 v #5715 > > │ 00:00:28 v #5716 > > ......................>>>////////////////////////////////////////////........... 00:00:28 v #5717 > > .\>>>>///////////////................>>>//...................................... 00:00:28 v #5718 > > │ 00:00:28 v #5719 > > ........................>>>////////////////////////////////////////............. 00:00:28 v #5720 > > ...>>>>///////////.............................................................. 00:00:28 v #5721 > > │ 00:00:28 v #5722 > > .........................>>>////////////////////////////////////................ 00:00:28 v #5723 > > ....>>>>>//////................................................................. 00:00:28 v #5724 > > │ 00:00:28 v #5725 > > ..........................>>>////////////////////////////////................... 00:00:28 v #5726 > > ......>>>>//.................................................................... 00:00:28 v #5727 > > │ 00:00:28 v #5728 > > ............................>>>////////////////////////////..................... 00:00:28 v #5729 > > ................................................................................ 00:00:28 v #5730 > > │ 00:00:28 v #5731 > > .............................>>>////////////////////////........................ 00:00:28 v #5732 > > ................................................................................ 00:00:28 v #5733 > > │ 00:00:28 v #5734 > > ..............................>>>////////////////////........................... 00:00:28 v #5735 > > ................................................................................ 00:00:28 v #5736 > > │ 00:00:28 v #5737 > > ................................>>>////////////////............................. 00:00:28 v #5738 > > ................................................................................ 00:00:28 v #5739 > > │ 00:00:28 v #5740 > > .................................>>>////////////................................ 00:00:28 v #5741 > > ................................................................................ 00:00:28 v #5742 > > │ 00:00:28 v #5743 > > ...................................>>>////////.................................. 00:00:28 v #5744 > > ................................................................................ 00:00:28 v #5745 > > │ 00:00:28 v #5746 > > ....................................>>>////..................................... 00:00:28 v #5747 > > ................................................................................ 00:00:28 v #5748 > > │ 00:00:28 v #5749 > > ......................................>//....................................... 00:00:28 v #5750 > > ................................................................................ 00:00:28 v #5751 > > │ 00:00:28 v #5752 > > ................................................................................ 00:00:28 v #5753 > > ................................................................................ 00:00:28 v #5754 > > │ 00:00:28 v #5755 > > ................................................................................ 00:00:28 v #5756 > > ................................................................................ 00:00:28 v #5757 > > │ 00:00:28 v #5758 > > ................................................................................ 00:00:28 v #5759 > > ................................................................................ 00:00:28 v #5760 > > │ 00:00:28 v #5761 > > ................................................................................ 00:00:28 v #5762 > > ................................................................................ 00:00:28 v #5763 > > │ 00:00:28 v #5764 > > ................................................................................ 00:00:28 v #5765 > > ................................................................................ 00:00:28 v #5766 > > │ 00:00:28 v #5767 > > ................................................................................ 00:00:28 v #5768 > > ................................................................................ 00:00:28 v #5769 > > │ 00:00:28 v #5770 > > ................................................................................ 00:00:28 v #5771 > > ................................................................................ 00:00:28 v #5772 > > │ 00:00:28 v #5773 > > ................................................................................ 00:00:28 v #5774 > > ................................................................................ 00:00:28 v #5775 > > │ 00:00:28 v #5776 > > │ 00:00:28 v #5777 > > ................................................................................ 00:00:28 v #5778 > > ................................................................................ 00:00:28 v #5779 > > │ 00:00:28 v #5780 > > ................................................................................ 00:00:28 v #5781 > > ................................................................................ 00:00:28 v #5782 > > │ 00:00:28 v #5783 > > ................................................................................ 00:00:28 v #5784 > > ................................................................................ 00:00:28 v #5785 > > │ 00:00:28 v #5786 > > ................................................................................ 00:00:28 v #5787 > > ................................................................................ 00:00:28 v #5788 > > │ 00:00:28 v #5789 > > ................................................................................ 00:00:28 v #5790 > > ................................................................................ 00:00:28 v #5791 > > │ 00:00:28 v #5792 > > ................................................................................ 00:00:28 v #5793 > > ................................................................................ 00:00:28 v #5794 > > │ 00:00:28 v #5795 > > ................................................................................ 00:00:28 v #5796 > > ................................................................................ 00:00:28 v #5797 > > │ 00:00:28 v #5798 > > ...............................................;<............................... 00:00:28 v #5799 > > ................................................................................ 00:00:28 v #5800 > > │ 00:00:28 v #5801 > > ............................................;;;//<.............................. 00:00:28 v #5802 > > ................................................................................ 00:00:28 v #5803 > > │ 00:00:28 v #5804 > > ..........................................;;///////<............................ 00:00:28 v #5805 > > ................................................................................ 00:00:28 v #5806 > > │ 00:00:28 v #5807 > > .......................................;////////////<........................... 00:00:28 v #5808 > > ................................................................................ 00:00:28 v #5809 > > │ 00:00:28 v #5810 > > ....................................;/////////////////.......................... 00:00:28 v #5811 > > ................................................................................ 00:00:28 v #5812 > > │ 00:00:28 v #5813 > > .................................;/////////////////////<........................ 00:00:28 v #5814 > > ................................................................................ 00:00:28 v #5815 > > │ 00:00:28 v #5816 > > ..............................;;/////////////////////////....................... 00:00:28 v #5817 > > ................................................................................ 00:00:28 v #5818 > > │ 00:00:28 v #5819 > > ...........................;;/////////////////////////////...................... 00:00:28 v #5820 > > ................................................................................ 00:00:28 v #5821 > > │ 00:00:28 v #5822 > > ........................;;//////////////////////////////////.................... 00:00:28 v #5823 > > ............;;<................................................................. 00:00:28 v #5824 > > │ 00:00:28 v #5825 > > .....................;;//////////////////////////////////////................... 00:00:28 v #5826 > > .........;//////................................................................ 00:00:28 v #5827 > > │ 00:00:28 v #5828 > > ..................;///////////////////////////////////////////<................. 00:00:28 v #5829 > > .......;//////////.............................................................. 00:00:28 v #5830 > > │ 00:00:28 v #5831 > > ................;///////////////////////////////////////////////................ 00:00:28 v #5832 > > ....;;/////////////......................;...................................... 00:00:28 v #5833 > > │ 00:00:28 v #5834 > > ................>>>//////////////////////////////////////////////<.............. 00:00:28 v #5835 > > .;;/////////////////<.................;;///<.................................... 00:00:28 v #5836 > > │ 00:00:28 v #5837 > > ................>>>>///////////////////////////////////////////////............; 00:00:28 v #5838 > > >/////////////////////.............;;////////................................... 00:00:28 v #5839 > > │ 00:00:28 v #5840 > > ................;>>>>>//////////////////////////////////////////////<........;;> 00:00:28 v #5841 > > >>/////////////////////<.........;;;>/////////<................................. 00:00:28 v #5842 > > │ 00:00:28 v #5843 > > ..................>>>>>//////////////////////////////////////////////<........>> 00:00:28 v #5844 > > >>>>////////////////////..........>>>>/////////................................. 00:00:28 v #5845 > > │ 00:00:28 v #5846 > > ...................>>>>>//////////////////////////////////////////////.......... 00:00:28 v #5847 > > >>>>>//////////////////............>>>>>/////................................... 00:00:28 v #5848 > > │ 00:00:28 v #5849 > > .....................>>>>>//////////////////////////////////////////............ 00:00:28 v #5850 > > .>>>>>>/////////////.................>>>>/...................................... 00:00:28 v #5851 > > │ 00:00:28 v #5852 > > ......................>>>>>>/////////////////////////////////////............... 00:00:28 v #5853 > > ...>>>>>//////////.............................................................. 00:00:28 v #5854 > > │ 00:00:28 v #5855 > > ........................>>>>>//////////////////////////////////................. 00:00:28 v #5856 > > ....>>>>>>/////................................................................. 00:00:28 v #5857 > > │ 00:00:28 v #5858 > > ..........................>>>>>//////////////////////////////................... 00:00:28 v #5859 > > ......>>>>>//................................................................... 00:00:28 v #5860 > > │ 00:00:28 v #5861 > > ...........................>>>>>///////////////////////////..................... 00:00:28 v #5862 > > ................................................................................ 00:00:28 v #5863 > > │ 00:00:28 v #5864 > > .............................>>>>>///////////////////////....................... 00:00:28 v #5865 > > ................................................................................ 00:00:28 v #5866 > > │ 00:00:28 v #5867 > > ..............................>>>>>///////////////////.......................... 00:00:28 v #5868 > > ................................................................................ 00:00:28 v #5869 > > │ 00:00:28 v #5870 > > ................................>>>>>///////////////............................ 00:00:28 v #5871 > > ................................................................................ 00:00:28 v #5872 > > │ 00:00:28 v #5873 > > .................................>>>>>>///////////.............................. 00:00:28 v #5874 > > ................................................................................ 00:00:28 v #5875 > > │ 00:00:28 v #5876 > > ...................................=>>>>///////................................. 00:00:28 v #5877 > > ................................................................................ 00:00:28 v #5878 > > │ 00:00:28 v #5879 > > ......................................>>>>///................................... 00:00:28 v #5880 > > ................................................................................ 00:00:28 v #5881 > > │ 00:00:28 v #5882 > > ........................................=>/..................................... 00:00:28 v #5883 > > ................................................................................ 00:00:28 v #5884 > > │ 00:00:28 v #5885 > > ................................................................................ 00:00:28 v #5886 > > ................................................................................ 00:00:28 v #5887 > > │ 00:00:28 v #5888 > > ................................................................................ 00:00:28 v #5889 > > ................................................................................ 00:00:28 v #5890 > > │ 00:00:28 v #5891 > > ................................................................................ 00:00:28 v #5892 > > ................................................................................ 00:00:28 v #5893 > > │ 00:00:28 v #5894 > > ................................................................................ 00:00:28 v #5895 > > ................................................................................ 00:00:28 v #5896 > > │ 00:00:28 v #5897 > > ................................................................................ 00:00:28 v #5898 > > ................................................................................ 00:00:28 v #5899 > > │ 00:00:28 v #5900 > > ................................................................................ 00:00:28 v #5901 > > ................................................................................ 00:00:28 v #5902 > > │ 00:00:28 v #5903 > > ................................................................................ 00:00:28 v #5904 > > ................................................................................ 00:00:28 v #5905 > > │ 00:00:28 v #5906 > > ................................................................................ 00:00:28 v #5907 > > ................................................................................ 00:00:28 v #5908 > > │ 00:00:28 v #5909 > > │ 00:00:28 v #5910 > > ................................................................................ 00:00:28 v #5911 > > ................................................................................ 00:00:28 v #5912 > > │ 00:00:28 v #5913 > > ................................................................................ 00:00:28 v #5914 > > ................................................................................ 00:00:28 v #5915 > > │ 00:00:28 v #5916 > > ................................................................................ 00:00:28 v #5917 > > ................................................................................ 00:00:28 v #5918 > > │ 00:00:28 v #5919 > > ................................................................................ 00:00:28 v #5920 > > ................................................................................ 00:00:28 v #5921 > > │ 00:00:28 v #5922 > > ................................................................................ 00:00:28 v #5923 > > ................................................................................ 00:00:28 v #5924 > > │ 00:00:28 v #5925 > > ................................................................................ 00:00:28 v #5926 > > ................................................................................ 00:00:28 v #5927 > > │ 00:00:28 v #5928 > > ................................................................................ 00:00:28 v #5929 > > ................................................................................ 00:00:28 v #5930 > > │ 00:00:28 v #5931 > > ..............................................;/................................ 00:00:28 v #5932 > > ................................................................................ 00:00:28 v #5933 > > │ 00:00:28 v #5934 > > ............................................;////............................... 00:00:28 v #5935 > > ................................................................................ 00:00:28 v #5936 > > │ 00:00:28 v #5937 > > .........................................;;///////<............................. 00:00:28 v #5938 > > ................................................................................ 00:00:28 v #5939 > > │ 00:00:28 v #5940 > > ......................................;;////////////............................ 00:00:28 v #5941 > > ................................................................................ 00:00:28 v #5942 > > │ 00:00:28 v #5943 > > ....................................;;///////////////<.......................... 00:00:28 v #5944 > > ................................................................................ 00:00:28 v #5945 > > │ 00:00:28 v #5946 > > .................................;/////////////////////<........................ 00:00:28 v #5947 > > ................................................................................ 00:00:28 v #5948 > > │ 00:00:28 v #5949 > > ..............................;;;////////////////////////....................... 00:00:28 v #5950 > > ................................................................................ 00:00:28 v #5951 > > │ 00:00:28 v #5952 > > ............................;/////////////////////////////<..................... 00:00:28 v #5953 > > ................................................................................ 00:00:28 v #5954 > > │ 00:00:28 v #5955 > > .........................;;/////////////////////////////////.................... 00:00:28 v #5956 > > ...........;;/.................................................................. 00:00:28 v #5957 > > │ 00:00:28 v #5958 > > .......................;;/////////////////////////////////////.................. 00:00:28 v #5959 > > .........;;/////................................................................ 00:00:28 v #5960 > > │ 00:00:28 v #5961 > > ....................;;/////////////////////////////////////////................. 00:00:28 v #5962 > > .......;//////////.............................................................. 00:00:28 v #5963 > > │ 00:00:28 v #5964 > > ..................;;/////////////////////////////////////////////............... 00:00:28 v #5965 > > ....;;/////////////......................;...................................... 00:00:28 v #5966 > > │ 00:00:28 v #5967 > > ................;;>///////////////////////////////////////////////<............. 00:00:28 v #5968 > > ..;;/////////////////.................;;///<.................................... 00:00:28 v #5969 > > │ 00:00:28 v #5970 > > ................;>>>////////////////////////////////////////////////...........; 00:00:28 v #5971 > > ;/////////////////////.............\;////////<.................................. 00:00:28 v #5972 > > │ 00:00:28 v #5973 > > ................>>>>>>///////////////////////////////////////////////<.......;;; 00:00:28 v #5974 > > >>>/////////////////////.........;;;>//////////................................. 00:00:28 v #5975 > > │ 00:00:28 v #5976 > > ................>>>>>>>>//////////////////////////////////////////////.......>>> 00:00:28 v #5977 > > >>>>////////////////////.........>>>>>>////////................................. 00:00:28 v #5978 > > │ 00:00:28 v #5979 > > ..................>>>>>>>>//////////////////////////////////////////...........> 00:00:28 v #5980 > > >>>>>>////////////////.............>>>>>/////................................... 00:00:28 v #5981 > > │ 00:00:28 v #5982 > > ...................\>>>>>>>///////////////////////////////////////.............. 00:00:28 v #5983 > > .>>>>>>>////////////.................>>>>//..................................... 00:00:28 v #5984 > > │ 00:00:28 v #5985 > > .....................>>>>>>>>///////////////////////////////////................ 00:00:28 v #5986 > > ..>>>>>>>/////////.............................................................. 00:00:28 v #5987 > > │ 00:00:28 v #5988 > > .......................>>>>>>>>///////////////////////////////.................. 00:00:28 v #5989 > > ....>>>>>>>/////................................................................ 00:00:28 v #5990 > > │ 00:00:28 v #5991 > > .........................>>>>>>>/////////////////////////////................... 00:00:28 v #5992 > > ......>>>>>>//.................................................................. 00:00:28 v #5993 > > │ 00:00:28 v #5994 > > ..........................>>>>>>>>/////////////////////////..................... 00:00:28 v #5995 > > ................................................................................ 00:00:28 v #5996 > > │ 00:00:28 v #5997 > > ............................>>>>>>>>/////////////////////....................... 00:00:28 v #5998 > > ................................................................................ 00:00:28 v #5999 > > │ 00:00:28 v #6000 > > ..............................>>>>>>>>/////////////////......................... 00:00:28 v #6001 > > ................................................................................ 00:00:28 v #6002 > > │ 00:00:28 v #6003 > > ................................>>>>>>>//////////////........................... 00:00:28 v #6004 > > ................................................................................ 00:00:28 v #6005 > > │ 00:00:28 v #6006 > > .................................>>>>>>>>//////////............................. 00:00:28 v #6007 > > ................................................................................ 00:00:28 v #6008 > > │ 00:00:28 v #6009 > > ....................................>>>>>>>//////............................... 00:00:28 v #6010 > > ................................................................................ 00:00:28 v #6011 > > │ 00:00:28 v #6012 > > ........................................>>>>///................................. 00:00:28 v #6013 > > ................................................................................ 00:00:28 v #6014 > > │ 00:00:28 v #6015 > > ...........................................>>/.................................. 00:00:28 v #6016 > > ................................................................................ 00:00:28 v #6017 > > │ 00:00:28 v #6018 > > ................................................................................ 00:00:28 v #6019 > > ................................................................................ 00:00:28 v #6020 > > │ 00:00:28 v #6021 > > ................................................................................ 00:00:28 v #6022 > > ................................................................................ 00:00:28 v #6023 > > │ 00:00:28 v #6024 > > ................................................................................ 00:00:28 v #6025 > > ................................................................................ 00:00:28 v #6026 > > │ 00:00:28 v #6027 > > ................................................................................ 00:00:28 v #6028 > > ................................................................................ 00:00:28 v #6029 > > │ 00:00:28 v #6030 > > ................................................................................ 00:00:28 v #6031 > > ................................................................................ 00:00:28 v #6032 > > │ 00:00:28 v #6033 > > ................................................................................ 00:00:28 v #6034 > > ................................................................................ 00:00:28 v #6035 > > │ 00:00:28 v #6036 > > ................................................................................ 00:00:28 v #6037 > > ................................................................................ 00:00:28 v #6038 > > │ 00:00:28 v #6039 > > ................................................................................ 00:00:28 v #6040 > > ................................................................................ 00:00:28 v #6041 > > │ 00:00:28 v #6042 > > │ 00:00:28 v #6043 > > ................................................................................ 00:00:28 v #6044 > > ................................................................................ 00:00:28 v #6045 > > │ 00:00:28 v #6046 > > ................................................................................ 00:00:28 v #6047 > > ................................................................................ 00:00:28 v #6048 > > │ 00:00:28 v #6049 > > ................................................................................ 00:00:28 v #6050 > > ................................................................................ 00:00:28 v #6051 > > │ 00:00:28 v #6052 > > ................................................................................ 00:00:28 v #6053 > > ................................................................................ 00:00:28 v #6054 > > │ 00:00:28 v #6055 > > ................................................................................ 00:00:28 v #6056 > > ................................................................................ 00:00:28 v #6057 > > │ 00:00:28 v #6058 > > ................................................................................ 00:00:28 v #6059 > > ................................................................................ 00:00:28 v #6060 > > │ 00:00:28 v #6061 > > ................................................................................ 00:00:28 v #6062 > > ................................................................................ 00:00:28 v #6063 > > │ 00:00:28 v #6064 > > .............................................;/................................. 00:00:28 v #6065 > > ................................................................................ 00:00:28 v #6066 > > │ 00:00:28 v #6067 > > ...........................................;;////............................... 00:00:28 v #6068 > > ................................................................................ 00:00:28 v #6069 > > │ 00:00:28 v #6070 > > ........................................;;////////<............................. 00:00:28 v #6071 > > ................................................................................ 00:00:28 v #6072 > > │ 00:00:28 v #6073 > > ......................................;/////////////............................ 00:00:28 v #6074 > > ................................................................................ 00:00:28 v #6075 > > │ 00:00:28 v #6076 > > ....................................;/////////////////.......................... 00:00:28 v #6077 > > ................................................................................ 00:00:28 v #6078 > > │ 00:00:28 v #6079 > > .................................;;////////////////////<........................ 00:00:28 v #6080 > > ................................................................................ 00:00:28 v #6081 > > │ 00:00:28 v #6082 > > ...............................;/////////////////////////....................... 00:00:28 v #6083 > > ................................................................................ 00:00:28 v #6084 > > │ 00:00:28 v #6085 > > .............................;/////////////////////////////..................... 00:00:28 v #6086 > > ................................................................................ 00:00:28 v #6087 > > │ 00:00:28 v #6088 > > ..........................;;////////////////////////////////<................... 00:00:28 v #6089 > > ...........;;/.................................................................. 00:00:28 v #6090 > > │ 00:00:28 v #6091 > > ........................;;////////////////////////////////////.................. 00:00:28 v #6092 > > ........;;//////................................................................ 00:00:28 v #6093 > > │ 00:00:28 v #6094 > > ......................;/////////////////////////////////////////................ 00:00:28 v #6095 > > ......;;//////////.............................................................. 00:00:28 v #6096 > > │ 00:00:28 v #6097 > > ...................;;////////////////////////////////////////////<.............. 00:00:28 v #6098 > > ....;;;////////////<....................;;...................................... 00:00:28 v #6099 > > │ 00:00:28 v #6100 > > .................;;////////////////////////////////////////////////<............ 00:00:28 v #6101 > > ..;;/////////////////................;;;////.................................... 00:00:28 v #6102 > > │ 00:00:28 v #6103 > > ................;;>>>////////////////////////////////////////////////........... 00:00:28 v #6104 > > ;;/////////////////////............\;;///////<.................................. 00:00:28 v #6105 > > │ 00:00:28 v #6106 > > ................;>>>>>>///////////////////////////////////////////////.......;;; 00:00:28 v #6107 > > ;>>/////////////////////.........;;;>//////////................................. 00:00:28 v #6108 > > │ 00:00:28 v #6109 > > ...............;>>>>>>>>/////////////////////////////////////////////........;>> 00:00:28 v #6110 > > >>>>>///////////////////.........;>>>>>////////................................. 00:00:28 v #6111 > > │ 00:00:28 v #6112 > > ................>>>>>>>>>>/////////////////////////////////////////...........>> 00:00:28 v #6113 > > >>>>>>>///////////////.............>>>>>>////................................... 00:00:28 v #6114 > > │ 00:00:28 v #6115 > > ..................>>>>>>>>>>>////////////////////////////////////............... 00:00:28 v #6116 > > >>>>>>>>>///////////................\>>>>>/..................................... 00:00:28 v #6117 > > │ 00:00:28 v #6118 > > ....................>>>>>>>>>>//////////////////////////////////................ 00:00:28 v #6119 > > ..>>>>>>>>////////.............................................................. 00:00:28 v #6120 > > │ 00:00:28 v #6121 > > ......................>>>>>>>>>>//////////////////////////////.................. 00:00:28 v #6122 > > ....>>>>>>>>////................................................................ 00:00:28 v #6123 > > │ 00:00:28 v #6124 > > ........................>>>>>>>>>>///////////////////////////................... 00:00:28 v #6125 > > ......>>>>>>>//................................................................. 00:00:28 v #6126 > > │ 00:00:28 v #6127 > > ..........................>>>>>>>>>>///////////////////////..................... 00:00:28 v #6128 > > ................................................................................ 00:00:28 v #6129 > > │ 00:00:28 v #6130 > > ............................>>>>>>>>>>///////////////////....................... 00:00:28 v #6131 > > ................................................................................ 00:00:28 v #6132 > > │ 00:00:28 v #6133 > > ..............................>>>>>>>>>>////////////////........................ 00:00:28 v #6134 > > ................................................................................ 00:00:28 v #6135 > > │ 00:00:28 v #6136 > > ................................>>>>>>>>>>////////////.......................... 00:00:28 v #6137 > > ................................................................................ 00:00:28 v #6138 > > │ 00:00:28 v #6139 > > ..................................>>>>>>>>>>////////............................ 00:00:28 v #6140 > > ................................................................................ 00:00:28 v #6141 > > │ 00:00:28 v #6142 > > ....................................=>>>>>>>>>/////............................. 00:00:28 v #6143 > > ................................................................................ 00:00:28 v #6144 > > │ 00:00:28 v #6145 > > ..........................................>>>>>//............................... 00:00:28 v #6146 > > ................................................................................ 00:00:28 v #6147 > > │ 00:00:28 v #6148 > > .............................................../................................ 00:00:28 v #6149 > > ................................................................................ 00:00:28 v #6150 > > │ 00:00:28 v #6151 > > ................................................................................ 00:00:28 v #6152 > > ................................................................................ 00:00:28 v #6153 > > │ 00:00:28 v #6154 > > ................................................................................ 00:00:28 v #6155 > > ................................................................................ 00:00:28 v #6156 > > │ 00:00:28 v #6157 > > ................................................................................ 00:00:28 v #6158 > > ................................................................................ 00:00:28 v #6159 > > │ 00:00:28 v #6160 > > ................................................................................ 00:00:28 v #6161 > > ................................................................................ 00:00:28 v #6162 > > │ 00:00:28 v #6163 > > ................................................................................ 00:00:28 v #6164 > > ................................................................................ 00:00:28 v #6165 > > │ 00:00:28 v #6166 > > ................................................................................ 00:00:28 v #6167 > > ................................................................................ 00:00:28 v #6168 > > │ 00:00:28 v #6169 > > ................................................................................ 00:00:28 v #6170 > > ................................................................................ 00:00:28 v #6171 > > │ 00:00:28 v #6172 > > ................................................................................ 00:00:28 v #6173 > > ................................................................................ 00:00:28 v #6174 > > │ 00:00:28 v #6175 > > │ 00:00:28 v #6176 > > ................................................................................ 00:00:28 v #6177 > > ................................................................................ 00:00:28 v #6178 > > │ 00:00:28 v #6179 > > ................................................................................ 00:00:28 v #6180 > > ................................................................................ 00:00:28 v #6181 > > │ 00:00:28 v #6182 > > ................................................................................ 00:00:28 v #6183 > > ................................................................................ 00:00:28 v #6184 > > │ 00:00:28 v #6185 > > ................................................................................ 00:00:28 v #6186 > > ................................................................................ 00:00:28 v #6187 > > │ 00:00:28 v #6188 > > ................................................................................ 00:00:28 v #6189 > > ................................................................................ 00:00:28 v #6190 > > │ 00:00:28 v #6191 > > ................................................................................ 00:00:28 v #6192 > > ................................................................................ 00:00:28 v #6193 > > │ 00:00:28 v #6194 > > ................................................................................ 00:00:28 v #6195 > > ................................................................................ 00:00:28 v #6196 > > │ 00:00:28 v #6197 > > ............................................;;.................................. 00:00:28 v #6198 > > ................................................................................ 00:00:28 v #6199 > > │ 00:00:28 v #6200 > > ..........................................;;////................................ 00:00:28 v #6201 > > ................................................................................ 00:00:28 v #6202 > > │ 00:00:28 v #6203 > > ........................................;;////////.............................. 00:00:28 v #6204 > > ................................................................................ 00:00:28 v #6205 > > │ 00:00:28 v #6206 > > ......................................;////////////<............................ 00:00:28 v #6207 > > ................................................................................ 00:00:28 v #6208 > > │ 00:00:28 v #6209 > > ....................................;////////////////<.......................... 00:00:28 v #6210 > > ................................................................................ 00:00:28 v #6211 > > │ 00:00:28 v #6212 > > ..................................;////////////////////<........................ 00:00:28 v #6213 > > ................................................................................ 00:00:28 v #6214 > > │ 00:00:28 v #6215 > > ................................;////////////////////////<...................... 00:00:28 v #6216 > > ................................................................................ 00:00:28 v #6217 > > │ 00:00:28 v #6218 > > ..............................;////////////////////////////..................... 00:00:28 v #6219 > > ................................................................................ 00:00:28 v #6220 > > │ 00:00:28 v #6221 > > ............................;////////////////////////////////................... 00:00:28 v #6222 > > ..........;;//.................................................................. 00:00:28 v #6223 > > │ 00:00:28 v #6224 > > ..........................;////////////////////////////////////................. 00:00:28 v #6225 > > ........;;//////................................................................ 00:00:28 v #6226 > > │ 00:00:28 v #6227 > > ........................;///////////////////////////////////////<............... 00:00:28 v #6228 > > .....;;;//////////.............................................................. 00:00:28 v #6229 > > │ 00:00:28 v #6230 > > ......................;///////////////////////////////////////////<............. 00:00:28 v #6231 > > ...\;;//////////////....................;<...................................... 00:00:28 v #6232 > > │ 00:00:28 v #6233 > > ....................;;//////////////////////////////////////////////<........... 00:00:28 v #6234 > > ..;;;/////////////////...............;;;///<.................................... 00:00:28 v #6235 > > │ 00:00:28 v #6236 > > ..................;;>////////////////////////////////////////////////........... 00:00:28 v #6237 > > ;;;/////////////////////...........;;;///////<.................................. 00:00:28 v #6238 > > │ 00:00:28 v #6239 > > ................;;>>>>>//////////////////////////////////////////////.........;; 00:00:28 v #6240 > > ;;>/////////////////////..........;;;//////////................................. 00:00:28 v #6241 > > │ 00:00:28 v #6242 > > ...............;;>>>>>>>>//////////////////////////////////////////.........\;;> 00:00:28 v #6243 > > >>>>>//////////////////..........;;>>>>////////................................. 00:00:28 v #6244 > > │ 00:00:28 v #6245 > > ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>> 00:00:28 v #6246 > > >>>>>>>///////////////.............>>>>>>////................................... 00:00:28 v #6247 > > │ 00:00:28 v #6248 > > ................>>>>>>>>>>>>>////////////////////////////////////............... 00:00:28 v #6249 > > >>>>>>>>>>//////////.................>>>>>/..................................... 00:00:28 v #6250 > > │ 00:00:28 v #6251 > > ..................>>>>>>>>>>>>>>///////////////////////////////................. 00:00:28 v #6252 > > .\>>>>>>>>>////////...................=......................................... 00:00:28 v #6253 > > │ 00:00:28 v #6254 > > ....................\>>>>>>>>>>>>>////////////////////////////.................. 00:00:28 v #6255 > > ....>>>>>>>>>////............................................................... 00:00:28 v #6256 > > │ 00:00:28 v #6257 > > .......................>>>>>>>>>>>>>/////////////////////////................... 00:00:28 v #6258 > > ......>>>>>>>>>/................................................................ 00:00:28 v #6259 > > │ 00:00:28 v #6260 > > .........................>>>>>>>>>>>>>/////////////////////..................... 00:00:28 v #6261 > > ................................................................................ 00:00:28 v #6262 > > │ 00:00:28 v #6263 > > ...........................>>>>>>>>>>>>>//////////////////...................... 00:00:28 v #6264 > > ................................................................................ 00:00:28 v #6265 > > │ 00:00:28 v #6266 > > .............................>>>>>>>>>>>>>///////////////....................... 00:00:28 v #6267 > > ................................................................................ 00:00:28 v #6268 > > │ 00:00:28 v #6269 > > ...............................>>>>>>>>>>>>>>//////////......................... 00:00:28 v #6270 > > ................................................................................ 00:00:28 v #6271 > > │ 00:00:28 v #6272 > > ..................................>>>>>>>>>>>>>///////.......................... 00:00:28 v #6273 > > ................................................................................ 00:00:28 v #6274 > > │ 00:00:28 v #6275 > > ....................................=>>>>>>>>>>>>////........................... 00:00:28 v #6276 > > ................................................................................ 00:00:28 v #6277 > > │ 00:00:28 v #6278 > > ............................................=>>>>>/............................. 00:00:28 v #6279 > > ................................................................................ 00:00:28 v #6280 > > │ 00:00:28 v #6281 > > ................................................................................ 00:00:28 v #6282 > > ................................................................................ 00:00:28 v #6283 > > │ 00:00:28 v #6284 > > ................................................................................ 00:00:28 v #6285 > > ................................................................................ 00:00:28 v #6286 > > │ 00:00:28 v #6287 > > ................................................................................ 00:00:28 v #6288 > > ................................................................................ 00:00:28 v #6289 > > │ 00:00:28 v #6290 > > ................................................................................ 00:00:28 v #6291 > > ................................................................................ 00:00:28 v #6292 > > │ 00:00:28 v #6293 > > ................................................................................ 00:00:28 v #6294 > > ................................................................................ 00:00:28 v #6295 > > │ 00:00:28 v #6296 > > ................................................................................ 00:00:28 v #6297 > > ................................................................................ 00:00:28 v #6298 > > │ 00:00:28 v #6299 > > ................................................................................ 00:00:28 v #6300 > > ................................................................................ 00:00:28 v #6301 > > │ 00:00:28 v #6302 > > ................................................................................ 00:00:28 v #6303 > > ................................................................................ 00:00:28 v #6304 > > │ 00:00:28 v #6305 > > ................................................................................ 00:00:28 v #6306 > > ................................................................................ 00:00:28 v #6307 > > │ 00:00:28 v #6308 > > │ 00:00:28 v #6309 > > ................................................................................ 00:00:28 v #6310 > > ................................................................................ 00:00:28 v #6311 > > │ 00:00:28 v #6312 > > ................................................................................ 00:00:28 v #6313 > > ................................................................................ 00:00:28 v #6314 > > │ 00:00:28 v #6315 > > ................................................................................ 00:00:28 v #6316 > > ................................................................................ 00:00:28 v #6317 > > │ 00:00:28 v #6318 > > ................................................................................ 00:00:28 v #6319 > > ................................................................................ 00:00:28 v #6320 > > │ 00:00:28 v #6321 > > ................................................................................ 00:00:28 v #6322 > > ................................................................................ 00:00:28 v #6323 > > │ 00:00:28 v #6324 > > ................................................................................ 00:00:28 v #6325 > > ................................................................................ 00:00:28 v #6326 > > │ 00:00:28 v #6327 > > ................................................................................ 00:00:28 v #6328 > > ................................................................................ 00:00:28 v #6329 > > │ 00:00:28 v #6330 > > ...........................................;/<.................................. 00:00:28 v #6331 > > ................................................................................ 00:00:28 v #6332 > > │ 00:00:28 v #6333 > > .........................................;;////<................................ 00:00:28 v #6334 > > ................................................................................ 00:00:28 v #6335 > > │ 00:00:28 v #6336 > > .......................................;;////////<.............................. 00:00:28 v #6337 > > ................................................................................ 00:00:28 v #6338 > > │ 00:00:28 v #6339 > > .....................................;;////////////<............................ 00:00:28 v #6340 > > ................................................................................ 00:00:28 v #6341 > > │ 00:00:28 v #6342 > > ...................................;;;///////////////<.......................... 00:00:28 v #6343 > > ................................................................................ 00:00:28 v #6344 > > │ 00:00:28 v #6345 > > .................................;;////////////////////<........................ 00:00:28 v #6346 > > ................................................................................ 00:00:28 v #6347 > > │ 00:00:28 v #6348 > > ................................;;///////////////////////<...................... 00:00:28 v #6349 > > ................................................................................ 00:00:28 v #6350 > > │ 00:00:28 v #6351 > > ..............................;;///////////////////////////<.................... 00:00:28 v #6352 > > ................................................................................ 00:00:28 v #6353 > > │ 00:00:28 v #6354 > > ............................;;///////////////////////////////<.................. 00:00:28 v #6355 > > ..........;;//.................................................................. 00:00:28 v #6356 > > │ 00:00:28 v #6357 > > ..........................;;;//////////////////////////////////................. 00:00:28 v #6358 > > .......;;;//////................................................................ 00:00:28 v #6359 > > │ 00:00:28 v #6360 > > .........................;;//////////////////////////////////////............... 00:00:28 v #6361 > > .....;;;//////////.............................................................. 00:00:28 v #6362 > > │ 00:00:28 v #6363 > > .......................;;//////////////////////////////////////////<............ 00:00:28 v #6364 > > ...;;;;/////////////....................;/...................................... 00:00:28 v #6365 > > │ 00:00:28 v #6366 > > .....................;;//////////////////////////////////////////////........... 00:00:28 v #6367 > > .;;;;/////////////////...............;;;////.................................... 00:00:28 v #6368 > > │ 00:00:28 v #6369 > > ...................;;;///////////////////////////////////////////////........... 00:00:28 v #6370 > > ;;;;////////////////////...........;;;////////.................................. 00:00:28 v #6371 > > │ 00:00:28 v #6372 > > ..................;;>>>>////////////////////////////////////////////..........;; 00:00:28 v #6373 > > ;;;>////////////////////..........;;;//////////................................. 00:00:28 v #6374 > > │ 00:00:28 v #6375 > > ................;;>>>>>>>>////////////////////////////////////////...........;;; 00:00:28 v #6376 > > >>>>>>/////////////////..........;;>>>>///////.................................. 00:00:28 v #6377 > > │ 00:00:28 v #6378 > > ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>> 00:00:28 v #6379 > > >>>>>>>>/////////////.............>>>>>>>>///................................... 00:00:28 v #6380 > > │ 00:00:28 v #6381 > > ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............> 00:00:28 v #6382 > > >>>>>>>>>>//////////................\>>>>>>/.................................... 00:00:28 v #6383 > > │ 00:00:28 v #6384 > > ................\>>>>>>>>>>>>>>>>//////////////////////////////................. 00:00:28 v #6385 > > .>>>>>>>>>>>///////....................=........................................ 00:00:28 v #6386 > > │ 00:00:28 v #6387 > > ...................>>>>>>>>>>>>>>>>///////////////////////////.................. 00:00:28 v #6388 > > ...>>>>>>>>>>>>///.............................................................. 00:00:28 v #6389 > > │ 00:00:28 v #6390 > > .....................\>>>>>>>>>>>>>>>>///////////////////////................... 00:00:28 v #6391 > > ......>>>>>>>>>>................................................................ 00:00:28 v #6392 > > │ 00:00:28 v #6393 > > ........................>>>>>>>>>>>>>>>>////////////////////.................... 00:00:28 v #6394 > > ................................................................................ 00:00:28 v #6395 > > │ 00:00:28 v #6396 > > ..........................>>>>>>>>>>>>>>>>/////////////////..................... 00:00:28 v #6397 > > ................................................................................ 00:00:28 v #6398 > > │ 00:00:28 v #6399 > > .............................>>>>>>>>>>>>>>>>/////////////...................... 00:00:28 v #6400 > > ................................................................................ 00:00:28 v #6401 > > │ 00:00:28 v #6402 > > ...............................>>>>>>>>>>>>>>>>/////////........................ 00:00:28 v #6403 > > ................................................................................ 00:00:28 v #6404 > > │ 00:00:28 v #6405 > > ..................................>>>>>>>>>>>>>>>>/////......................... 00:00:28 v #6406 > > ................................................................................ 00:00:28 v #6407 > > │ 00:00:28 v #6408 > > ....................................=>>>>>>>>>>>>>>>//.......................... 00:00:28 v #6409 > > ................................................................................ 00:00:28 v #6410 > > │ 00:00:28 v #6411 > > .................................................>>>>........................... 00:00:28 v #6412 > > ................................................................................ 00:00:28 v #6413 > > │ 00:00:28 v #6414 > > ................................................................................ 00:00:28 v #6415 > > ................................................................................ 00:00:28 v #6416 > > │ 00:00:28 v #6417 > > ................................................................................ 00:00:28 v #6418 > > ................................................................................ 00:00:28 v #6419 > > │ 00:00:28 v #6420 > > ................................................................................ 00:00:28 v #6421 > > ................................................................................ 00:00:28 v #6422 > > │ 00:00:28 v #6423 > > ................................................................................ 00:00:28 v #6424 > > ................................................................................ 00:00:28 v #6425 > > │ 00:00:28 v #6426 > > ................................................................................ 00:00:28 v #6427 > > ................................................................................ 00:00:28 v #6428 > > │ 00:00:28 v #6429 > > ................................................................................ 00:00:28 v #6430 > > ................................................................................ 00:00:28 v #6431 > > │ 00:00:28 v #6432 > > ................................................................................ 00:00:28 v #6433 > > ................................................................................ 00:00:28 v #6434 > > │ 00:00:28 v #6435 > > ................................................................................ 00:00:28 v #6436 > > ................................................................................ 00:00:28 v #6437 > > │ 00:00:28 v #6438 > > ................................................................................ 00:00:28 v #6439 > > ................................................................................ 00:00:28 v #6440 > > │ 00:00:28 v #6441 > > │ 00:00:28 v #6442 > > ................................................................................ 00:00:28 v #6443 > > ................................................................................ 00:00:28 v #6444 > > │ 00:00:28 v #6445 > > ................................................................................ 00:00:28 v #6446 > > ................................................................................ 00:00:28 v #6447 > > │ 00:00:28 v #6448 > > ................................................................................ 00:00:28 v #6449 > > ................................................................................ 00:00:28 v #6450 > > │ 00:00:28 v #6451 > > ................................................................................ 00:00:28 v #6452 > > ................................................................................ 00:00:28 v #6453 > > │ 00:00:28 v #6454 > > ................................................................................ 00:00:28 v #6455 > > ................................................................................ 00:00:28 v #6456 > > │ 00:00:28 v #6457 > > ................................................................................ 00:00:28 v #6458 > > ................................................................................ 00:00:28 v #6459 > > │ 00:00:28 v #6460 > > ................................................................................ 00:00:28 v #6461 > > ................................................................................ 00:00:28 v #6462 > > │ 00:00:28 v #6463 > > ..........................................;//................................... 00:00:28 v #6464 > > ................................................................................ 00:00:28 v #6465 > > │ 00:00:28 v #6466 > > ........................................;;/////................................. 00:00:28 v #6467 > > ................................................................................ 00:00:28 v #6468 > > │ 00:00:28 v #6469 > > ......................................;;/////////............................... 00:00:28 v #6470 > > ................................................................................ 00:00:28 v #6471 > > │ 00:00:28 v #6472 > > ....................................;;;////////////............................. 00:00:28 v #6473 > > ................................................................................ 00:00:28 v #6474 > > │ 00:00:28 v #6475 > > ..................................;;;////////////////........................... 00:00:28 v #6476 > > ................................................................................ 00:00:28 v #6477 > > │ 00:00:28 v #6478 > > ................................;;;;///////////////////<........................ 00:00:28 v #6479 > > ................................................................................ 00:00:28 v #6480 > > │ 00:00:28 v #6481 > > ..............................;;;;///////////////////////<...................... 00:00:28 v #6482 > > ................................................................................ 00:00:28 v #6483 > > │ 00:00:28 v #6484 > > .............................;;;;//////////////////////////<.................... 00:00:28 v #6485 > > ................................................................................ 00:00:28 v #6486 > > │ 00:00:28 v #6487 > > ...........................;;;;///////////////////////////////.................. 00:00:28 v #6488 > > .........;;;//.................................................................. 00:00:28 v #6489 > > │ 00:00:28 v #6490 > > ..........................;;;;//////////////////////////////////................ 00:00:28 v #6491 > > ......;;;;//////................................................................ 00:00:28 v #6492 > > │ 00:00:28 v #6493 > > ........................;;;;//////////////////////////////////////.............. 00:00:28 v #6494 > > ....;;;;;/////////.............................................................. 00:00:28 v #6495 > > │ 00:00:28 v #6496 > > ......................;;;;;/////////////////////////////////////////............ 00:00:28 v #6497 > > ...;;;;/////////////<..................<;<...................................... 00:00:28 v #6498 > > │ 00:00:28 v #6499 > > .....................;;;;///////////////////////////////////////////............ 00:00:28 v #6500 > > .;;;;;/////////////////..............;;;////.................................... 00:00:28 v #6501 > > │ 00:00:28 v #6502 > > ...................;;;;;////////////////////////////////////////////............ 00:00:28 v #6503 > > ;;;;////////////////////...........;;;;///////.................................. 00:00:28 v #6504 > > │ 00:00:28 v #6505 > > ..................;;;;;>///////////////////////////////////////////...........;; 00:00:28 v #6506 > > ;;;>////////////////////..........;;;//////////................................. 00:00:28 v #6507 > > │ 00:00:28 v #6508 > > ................;;;;;>>>>>////////////////////////////////////////...........;;; 00:00:28 v #6509 > > ;;>>>>/////////////////..........;;;>>>>//////.................................. 00:00:28 v #6510 > > │ 00:00:28 v #6511 > > ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>> 00:00:28 v #6512 > > >>>>>>>>>/////////////............>>>>>>>>///................................... 00:00:28 v #6513 > > │ 00:00:28 v #6514 > > .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>> 00:00:28 v #6515 > > >>>>>>>>>>>/////////................>>>>>>>/.................................... 00:00:28 v #6516 > > │ 00:00:28 v #6517 > > ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////................. 00:00:28 v #6518 > > .>>>>>>>>>>>>>/////....................>........................................ 00:00:28 v #6519 > > │ 00:00:28 v #6520 > > .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.................. 00:00:28 v #6521 > > ...>>>>>>>>>>>>>//.............................................................. 00:00:28 v #6522 > > │ 00:00:28 v #6523 > > ....................>>>>>>>>>>>>>>>>>>>>/////////////////////................... 00:00:28 v #6524 > > ......>>>>>>>>>>>............................................................... 00:00:28 v #6525 > > │ 00:00:28 v #6526 > > .......................>>>>>>>>>>>>>>>>>>>//////////////////.................... 00:00:28 v #6527 > > ................................................................................ 00:00:28 v #6528 > > │ 00:00:28 v #6529 > > ..........................>>>>>>>>>>>>>>>>>>>//////////////..................... 00:00:28 v #6530 > > ................................................................................ 00:00:28 v #6531 > > │ 00:00:28 v #6532 > > ............................>>>>>>>>>>>>>>>>>>>>///////////..................... 00:00:28 v #6533 > > ................................................................................ 00:00:28 v #6534 > > │ 00:00:28 v #6535 > > ...............................>>>>>>>>>>>>>>>>>>>////////...................... 00:00:28 v #6536 > > ................................................................................ 00:00:28 v #6537 > > │ 00:00:28 v #6538 > > ..................................>>>>>>>>>>>>>>>>>>>////....................... 00:00:28 v #6539 > > ................................................................................ 00:00:28 v #6540 > > │ 00:00:28 v #6541 > > .....................................>>>>>>>>>>>>>>>>>>/........................ 00:00:28 v #6542 > > ................................................................................ 00:00:28 v #6543 > > │ 00:00:28 v #6544 > > ................................................................................ 00:00:28 v #6545 > > ................................................................................ 00:00:28 v #6546 > > │ 00:00:28 v #6547 > > ................................................................................ 00:00:28 v #6548 > > ................................................................................ 00:00:28 v #6549 > > │ 00:00:28 v #6550 > > ................................................................................ 00:00:28 v #6551 > > ................................................................................ 00:00:28 v #6552 > > │ 00:00:28 v #6553 > > ................................................................................ 00:00:28 v #6554 > > ................................................................................ 00:00:28 v #6555 > > │ 00:00:28 v #6556 > > ................................................................................ 00:00:28 v #6557 > > ................................................................................ 00:00:28 v #6558 > > │ 00:00:28 v #6559 > > ................................................................................ 00:00:28 v #6560 > > ................................................................................ 00:00:28 v #6561 > > │ 00:00:28 v #6562 > > ................................................................................ 00:00:28 v #6563 > > ................................................................................ 00:00:28 v #6564 > > │ 00:00:28 v #6565 > > ................................................................................ 00:00:28 v #6566 > > ................................................................................ 00:00:28 v #6567 > > │ 00:00:28 v #6568 > > ................................................................................ 00:00:28 v #6569 > > ................................................................................ 00:00:28 v #6570 > > │ 00:00:28 v #6571 > > ................................................................................ 00:00:28 v #6572 > > ................................................................................ 00:00:28 v #6573 > > │ 00:00:28 v #6574 > > │ 00:00:28 v #6575 > > ................................................................................ 00:00:28 v #6576 > > ................................................................................ 00:00:28 v #6577 > > │ 00:00:28 v #6578 > > ................................................................................ 00:00:28 v #6579 > > ................................................................................ 00:00:28 v #6580 > > │ 00:00:28 v #6581 > > ................................................................................ 00:00:28 v #6582 > > ................................................................................ 00:00:28 v #6583 > > │ 00:00:28 v #6584 > > ................................................................................ 00:00:28 v #6585 > > ................................................................................ 00:00:28 v #6586 > > │ 00:00:28 v #6587 > > ................................................................................ 00:00:28 v #6588 > > ................................................................................ 00:00:28 v #6589 > > │ 00:00:28 v #6590 > > ................................................................................ 00:00:28 v #6591 > > ................................................................................ 00:00:28 v #6592 > > │ 00:00:28 v #6593 > > ................................................................................ 00:00:28 v #6594 > > ................................................................................ 00:00:28 v #6595 > > │ 00:00:28 v #6596 > > .........................................;;/.................................... 00:00:28 v #6597 > > ................................................................................ 00:00:28 v #6598 > > │ 00:00:28 v #6599 > > .......................................;;/////<................................. 00:00:28 v #6600 > > ................................................................................ 00:00:28 v #6601 > > │ 00:00:28 v #6602 > > .....................................;;;/////////............................... 00:00:28 v #6603 > > ................................................................................ 00:00:28 v #6604 > > │ 00:00:28 v #6605 > > ...................................;;;;////////////............................. 00:00:28 v #6606 > > ................................................................................ 00:00:28 v #6607 > > │ 00:00:28 v #6608 > > .................................;;;;;///////////////........................... 00:00:28 v #6609 > > ................................................................................ 00:00:28 v #6610 > > │ 00:00:28 v #6611 > > ...............................;;;;;///////////////////<........................ 00:00:28 v #6612 > > ................................................................................ 00:00:28 v #6613 > > │ 00:00:28 v #6614 > > .............................;;;;;;//////////////////////<...................... 00:00:28 v #6615 > > ................................................................................ 00:00:28 v #6616 > > │ 00:00:28 v #6617 > > ...........................;;;;;;;//////////////////////////.................... 00:00:28 v #6618 > > ................................................................................ 00:00:28 v #6619 > > │ 00:00:28 v #6620 > > ..........................;;;;;;//////////////////////////////.................. 00:00:28 v #6621 > > .........;;//<.................................................................. 00:00:28 v #6622 > > │ 00:00:28 v #6623 > > .........................;;;;;;/////////////////////////////////................ 00:00:28 v #6624 > > ......;;;;//////................................................................ 00:00:28 v #6625 > > │ 00:00:28 v #6626 > > .......................;;;;;;;////////////////////////////////////<............. 00:00:28 v #6627 > > ...;;;;;;/////////<............................................................. 00:00:28 v #6628 > > │ 00:00:28 v #6629 > > ......................;;;;;;;///////////////////////////////////////............ 00:00:28 v #6630 > > ..;;;;;//////////////..................;;....................................... 00:00:28 v #6631 > > │ 00:00:28 v #6632 > > .....................;;;;;;////////////////////////////////////////............. 00:00:28 v #6633 > > .;;;;;;////////////////.............;;;;////.................................... 00:00:28 v #6634 > > │ 00:00:28 v #6635 > > ...................;;;;;;;////////////////////////////////////////.............. 00:00:28 v #6636 > > ;;;;;;//////////////////...........;;;;///////<................................. 00:00:28 v #6637 > > │ 00:00:28 v #6638 > > ..................;;;;;;;/////////////////////////////////////////............\; 00:00:28 v #6639 > > ;;;;///////////////////...........;;;;/////////................................. 00:00:28 v #6640 > > │ 00:00:28 v #6641 > > .................;;;;;;;>>>//////////////////////////////////////............;;; 00:00:28 v #6642 > > ;;;>>>>///////////////...........;;;;>>>//////.................................. 00:00:28 v #6643 > > │ 00:00:28 v #6644 > > ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;> 00:00:28 v #6645 > > >>>>>>>>>////////////............\>>>>>>>>>//................................... 00:00:28 v #6646 > > │ 00:00:28 v #6647 > > ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>> 00:00:28 v #6648 > > >>>>>>>>>>>>/////////...............>>>>>>>>.................................... 00:00:28 v #6649 > > │ 00:00:28 v #6650 > > .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////................. 00:00:28 v #6651 > > >>>>>>>>>>>>>>>/////...................>........................................ 00:00:28 v #6652 > > │ 00:00:28 v #6653 > > ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.................. 00:00:28 v #6654 > > ...>>>>>>>>>>>>>>>/............................................................. 00:00:28 v #6655 > > │ 00:00:28 v #6656 > > ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................. 00:00:28 v #6657 > > ......>>>>>>>>>>>/.............................................................. 00:00:28 v #6658 > > │ 00:00:28 v #6659 > > .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////................... 00:00:28 v #6660 > > ................................................................................ 00:00:28 v #6661 > > │ 00:00:28 v #6662 > > ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////.................... 00:00:28 v #6663 > > ................................................................................ 00:00:28 v #6664 > > │ 00:00:28 v #6665 > > ............................>>>>>>>>>>>>>>>>>>>>>>>/////////.................... 00:00:28 v #6666 > > ................................................................................ 00:00:28 v #6667 > > │ 00:00:28 v #6668 > > ...............................>>>>>>>>>>>>>>>>>>>>>>>/////..................... 00:00:28 v #6669 > > ................................................................................ 00:00:28 v #6670 > > │ 00:00:28 v #6671 > > ..................................>>>>>>>>>>>>>>>>>>>>>>//...................... 00:00:28 v #6672 > > ................................................................................ 00:00:28 v #6673 > > │ 00:00:28 v #6674 > > .....................................>>>>>>>>>>>>>>>>>>>>/...................... 00:00:28 v #6675 > > ................................................................................ 00:00:28 v #6676 > > │ 00:00:28 v #6677 > > ................................................................................ 00:00:28 v #6678 > > ................................................................................ 00:00:28 v #6679 > > │ 00:00:28 v #6680 > > ................................................................................ 00:00:28 v #6681 > > ................................................................................ 00:00:28 v #6682 > > │ 00:00:28 v #6683 > > ................................................................................ 00:00:28 v #6684 > > ................................................................................ 00:00:28 v #6685 > > │ 00:00:28 v #6686 > > ................................................................................ 00:00:28 v #6687 > > ................................................................................ 00:00:28 v #6688 > > │ 00:00:28 v #6689 > > ................................................................................ 00:00:28 v #6690 > > ................................................................................ 00:00:28 v #6691 > > │ 00:00:28 v #6692 > > ................................................................................ 00:00:28 v #6693 > > ................................................................................ 00:00:28 v #6694 > > │ 00:00:28 v #6695 > > ................................................................................ 00:00:28 v #6696 > > ................................................................................ 00:00:28 v #6697 > > │ 00:00:28 v #6698 > > ................................................................................ 00:00:28 v #6699 > > ................................................................................ 00:00:28 v #6700 > > │ 00:00:28 v #6701 > > ................................................................................ 00:00:28 v #6702 > > ................................................................................ 00:00:28 v #6703 > > │ 00:00:28 v #6704 > > ................................................................................ 00:00:28 v #6705 > > ................................................................................ 00:00:28 v #6706 > > │ 00:00:28 v #6707 > > │ 00:00:28 v #6708 > > ................................................................................ 00:00:28 v #6709 > > ................................................................................ 00:00:28 v #6710 > > │ 00:00:28 v #6711 > > ................................................................................ 00:00:28 v #6712 > > ................................................................................ 00:00:28 v #6713 > > │ 00:00:28 v #6714 > > ................................................................................ 00:00:28 v #6715 > > ................................................................................ 00:00:28 v #6716 > > │ 00:00:28 v #6717 > > ................................................................................ 00:00:28 v #6718 > > ................................................................................ 00:00:28 v #6719 > > │ 00:00:28 v #6720 > > ................................................................................ 00:00:28 v #6721 > > ................................................................................ 00:00:28 v #6722 > > │ 00:00:28 v #6723 > > ................................................................................ 00:00:28 v #6724 > > ................................................................................ 00:00:28 v #6725 > > │ 00:00:28 v #6726 > > ................................................................................ 00:00:28 v #6727 > > ................................................................................ 00:00:28 v #6728 > > │ 00:00:28 v #6729 > > ........................................;;/<.................................... 00:00:28 v #6730 > > ................................................................................ 00:00:28 v #6731 > > │ 00:00:28 v #6732 > > ......................................;;;/////.................................. 00:00:28 v #6733 > > ................................................................................ 00:00:28 v #6734 > > │ 00:00:28 v #6735 > > ....................................;;;;////////................................ 00:00:28 v #6736 > > ................................................................................ 00:00:28 v #6737 > > │ 00:00:28 v #6738 > > ..................................;;;;;////////////............................. 00:00:28 v #6739 > > ................................................................................ 00:00:28 v #6740 > > │ 00:00:28 v #6741 > > ................................;;;;;;///////////////........................... 00:00:28 v #6742 > > ................................................................................ 00:00:28 v #6743 > > │ 00:00:28 v #6744 > > ..............................;;;;;;;//////////////////......................... 00:00:28 v #6745 > > ................................................................................ 00:00:28 v #6746 > > │ 00:00:28 v #6747 > > ............................;;;;;;;;//////////////////////...................... 00:00:28 v #6748 > > ................................................................................ 00:00:28 v #6749 > > │ 00:00:28 v #6750 > > ..........................;;;;;;;;//////////////////////////.................... 00:00:28 v #6751 > > ................................................................................ 00:00:28 v #6752 > > │ 00:00:28 v #6753 > > .........................;;;;;;;;/////////////////////////////<................. 00:00:28 v #6754 > > ........;;;//................................................................... 00:00:28 v #6755 > > │ 00:00:28 v #6756 > > ........................;;;;;;;;////////////////////////////////<............... 00:00:28 v #6757 > > .....;;;;;//////................................................................ 00:00:28 v #6758 > > │ 00:00:28 v #6759 > > .......................;;;;;;;;////////////////////////////////////............. 00:00:28 v #6760 > > ..<;;;;;;/////////<............................................................. 00:00:28 v #6761 > > │ 00:00:28 v #6762 > > .....................\;;;;;;;;/////////////////////////////////////............. 00:00:28 v #6763 > > ..;;;;;;/////////////..................;;<...................................... 00:00:28 v #6764 > > │ 00:00:28 v #6765 > > ....................;;;;;;;;;/////////////////////////////////////.............. 00:00:28 v #6766 > > \;;;;;;/////////////////............;;;;////.................................... 00:00:28 v #6767 > > │ 00:00:28 v #6768 > > ...................;;;;;;;;;//////////////////////////////////////.............. 00:00:28 v #6769 > > ;;;;;;/////////////////............;;;;////////................................. 00:00:28 v #6770 > > │ 00:00:28 v #6771 > > ..................;;;;;;;;;//////////////////////////////////////.............\; 00:00:28 v #6772 > > ;;;;;//////////////////...........;;;;/////////................................. 00:00:28 v #6773 > > │ 00:00:28 v #6774 > > .................;;;;;;;;;;>/////////////////////////////////////............\;; 00:00:28 v #6775 > > ;;;;;>>///////////////...........;;;;;>>>/////.................................. 00:00:28 v #6776 > > │ 00:00:28 v #6777 > > ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;; 00:00:28 v #6778 > > ;>>>>>>>>>////////////...........;>>>>>>>>>//................................... 00:00:28 v #6779 > > │ 00:00:28 v #6780 > > ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>> 00:00:28 v #6781 > > >>>>>>>>>>>>>////////...............>>>>>>>>/................................... 00:00:28 v #6782 > > │ 00:00:28 v #6783 > > ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................> 00:00:28 v #6784 > > >>>>>>>>>>>>>>>>////...................=>....................................... 00:00:28 v #6785 > > │ 00:00:28 v #6786 > > .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////................. 00:00:28 v #6787 > > ..\>>>>>>>>>>>>>>>>............................................................. 00:00:28 v #6788 > > │ 00:00:28 v #6789 > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.................. 00:00:28 v #6790 > > ......>>>>>>>>>=>............................................................... 00:00:28 v #6791 > > │ 00:00:28 v #6792 > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.................. 00:00:28 v #6793 > > ................................................................................ 00:00:28 v #6794 > > │ 00:00:28 v #6795 > > .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////................... 00:00:28 v #6796 > > ................................................................................ 00:00:28 v #6797 > > │ 00:00:28 v #6798 > > ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////................... 00:00:28 v #6799 > > ................................................................................ 00:00:28 v #6800 > > │ 00:00:28 v #6801 > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///.................... 00:00:28 v #6802 > > ................................................................................ 00:00:28 v #6803 > > │ 00:00:28 v #6804 > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/.................... 00:00:28 v #6805 > > ................................................................................ 00:00:28 v #6806 > > │ 00:00:28 v #6807 > > ......................................>>>>>=>=>>................................ 00:00:28 v #6808 > > ................................................................................ 00:00:28 v #6809 > > │ 00:00:28 v #6810 > > ................................................................................ 00:00:28 v #6811 > > ................................................................................ 00:00:28 v #6812 > > │ 00:00:28 v #6813 > > ................................................................................ 00:00:28 v #6814 > > ................................................................................ 00:00:28 v #6815 > > │ 00:00:28 v #6816 > > ................................................................................ 00:00:28 v #6817 > > ................................................................................ 00:00:28 v #6818 > > │ 00:00:28 v #6819 > > ................................................................................ 00:00:28 v #6820 > > ................................................................................ 00:00:28 v #6821 > > │ 00:00:28 v #6822 > > ................................................................................ 00:00:28 v #6823 > > ................................................................................ 00:00:28 v #6824 > > │ 00:00:28 v #6825 > > ................................................................................ 00:00:28 v #6826 > > ................................................................................ 00:00:28 v #6827 > > │ 00:00:28 v #6828 > > ................................................................................ 00:00:28 v #6829 > > ................................................................................ 00:00:28 v #6830 > > │ 00:00:28 v #6831 > > ................................................................................ 00:00:28 v #6832 > > ................................................................................ 00:00:28 v #6833 > > │ 00:00:28 v #6834 > > ................................................................................ 00:00:28 v #6835 > > ................................................................................ 00:00:28 v #6836 > > │ 00:00:28 v #6837 > > ................................................................................ 00:00:28 v #6838 > > ................................................................................ 00:00:28 v #6839 > > │ 00:00:28 v #6840 > > │ 00:00:28 v #6841 > > ................................................................................ 00:00:28 v #6842 > > ................................................................................ 00:00:28 v #6843 > > │ 00:00:28 v #6844 > > ................................................................................ 00:00:28 v #6845 > > ................................................................................ 00:00:28 v #6846 > > │ 00:00:28 v #6847 > > ................................................................................ 00:00:28 v #6848 > > ................................................................................ 00:00:28 v #6849 > > │ 00:00:28 v #6850 > > ................................................................................ 00:00:28 v #6851 > > ................................................................................ 00:00:28 v #6852 > > │ 00:00:28 v #6853 > > ................................................................................ 00:00:28 v #6854 > > ................................................................................ 00:00:28 v #6855 > > │ 00:00:28 v #6856 > > ................................................................................ 00:00:28 v #6857 > > ................................................................................ 00:00:28 v #6858 > > │ 00:00:28 v #6859 > > ................................................................................ 00:00:28 v #6860 > > ................................................................................ 00:00:28 v #6861 > > │ 00:00:28 v #6862 > > .......................................;;//..................................... 00:00:28 v #6863 > > ................................................................................ 00:00:28 v #6864 > > │ 00:00:28 v #6865 > > .....................................;;;/////<.................................. 00:00:28 v #6866 > > ................................................................................ 00:00:28 v #6867 > > │ 00:00:28 v #6868 > > ...................................;;;;/////////................................ 00:00:28 v #6869 > > ................................................................................ 00:00:28 v #6870 > > │ 00:00:28 v #6871 > > .................................;;;;;;///////////<............................. 00:00:28 v #6872 > > ................................................................................ 00:00:28 v #6873 > > │ 00:00:28 v #6874 > > ...............................;;;;;;;///////////////........................... 00:00:28 v #6875 > > ................................................................................ 00:00:28 v #6876 > > │ 00:00:28 v #6877 > > .............................;;;;;;;;//////////////////......................... 00:00:28 v #6878 > > ................................................................................ 00:00:28 v #6879 > > │ 00:00:28 v #6880 > > ...........................;;;;;;;;;//////////////////////...................... 00:00:28 v #6881 > > ................................................................................ 00:00:28 v #6882 > > │ 00:00:28 v #6883 > > .........................;;;;;;;;;;/////////////////////////.................... 00:00:28 v #6884 > > ................................................................................ 00:00:28 v #6885 > > │ 00:00:28 v #6886 > > ........................;;;;;;;;;;;///////////////////////////<................. 00:00:28 v #6887 > > ........;;;//................................................................... 00:00:28 v #6888 > > │ 00:00:28 v #6889 > > .......................;;;;;;;;;;;///////////////////////////////............... 00:00:28 v #6890 > > .....;;;;;//////................................................................ 00:00:28 v #6891 > > │ 00:00:28 v #6892 > > ......................;;;;;;;;;;;/////////////////////////////////.............. 00:00:28 v #6893 > > ..;;;;;;;/////////<............................................................. 00:00:28 v #6894 > > │ 00:00:28 v #6895 > > .....................;;;;;;;;;;;//////////////////////////////////.............. 00:00:28 v #6896 > > .;;;;;;;/////////////..................;;<...................................... 00:00:28 v #6897 > > │ 00:00:28 v #6898 > > ....................;;;;;;;;;;;//////////////////////////////////............... 00:00:28 v #6899 > > ;;;;;;;;///////////////.............;;;;////<................................... 00:00:28 v #6900 > > │ 00:00:28 v #6901 > > ...................;;;;;;;;;;;;//////////////////////////////////..............; 00:00:28 v #6902 > > ;;;;;;;////////////////............;;;;////////................................. 00:00:28 v #6903 > > │ 00:00:28 v #6904 > > ..................;;;;;;;;;;;;///////////////////////////////////..............; 00:00:28 v #6905 > > ;;;;;;/////////////////...........;;;;;////////................................. 00:00:28 v #6906 > > │ 00:00:28 v #6907 > > .................;;;;;;;;;;;;///////////////////////////////////..............;; 00:00:28 v #6908 > > ;;;;;;>>//////////////...........;;;;;>>>/////.................................. 00:00:28 v #6909 > > │ 00:00:28 v #6910 > > ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;; 00:00:28 v #6911 > > ;;>>>>>>>>>///////////...........;>>>>>>>>>>//.................................. 00:00:28 v #6912 > > │ 00:00:28 v #6913 > > ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;> 00:00:28 v #6914 > > >>>>>>>>>>>>>>///////...............>>>>>>>>>................................... 00:00:28 v #6915 > > │ 00:00:28 v #6916 > > ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\> 00:00:28 v #6917 > > >>>>>>>>>>>>>>>>>>///..................>=....................................... 00:00:28 v #6918 > > │ 00:00:28 v #6919 > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////................. 00:00:28 v #6920 > > ..>>>>>>>>>>>>>>>>>>............................................................ 00:00:28 v #6921 > > │ 00:00:28 v #6922 > > .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////................. 00:00:28 v #6923 > > ......>>>>>>>>>>=............................................................... 00:00:28 v #6924 > > │ 00:00:28 v #6925 > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.................. 00:00:28 v #6926 > > ................................................................................ 00:00:28 v #6927 > > │ 00:00:28 v #6928 > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.................. 00:00:28 v #6929 > > ................................................................................ 00:00:28 v #6930 > > │ 00:00:28 v #6931 > > ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.................. 00:00:28 v #6932 > > ................................................................................ 00:00:28 v #6933 > > │ 00:00:28 v #6934 > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................. 00:00:28 v #6935 > > ................................................................................ 00:00:28 v #6936 > > │ 00:00:28 v #6937 > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>................... 00:00:28 v #6938 > > ................................................................................ 00:00:28 v #6939 > > │ 00:00:28 v #6940 > > ......................................>>>==..................................... 00:00:28 v #6941 > > ................................................................................ 00:00:28 v #6942 > > │ 00:00:28 v #6943 > > ................................................................................ 00:00:28 v #6944 > > ................................................................................ 00:00:28 v #6945 > > │ 00:00:28 v #6946 > > ................................................................................ 00:00:28 v #6947 > > ................................................................................ 00:00:28 v #6948 > > │ 00:00:28 v #6949 > > ................................................................................ 00:00:28 v #6950 > > ................................................................................ 00:00:28 v #6951 > > │ 00:00:28 v #6952 > > ................................................................................ 00:00:28 v #6953 > > ................................................................................ 00:00:28 v #6954 > > │ 00:00:28 v #6955 > > ................................................................................ 00:00:28 v #6956 > > ................................................................................ 00:00:28 v #6957 > > │ 00:00:28 v #6958 > > ................................................................................ 00:00:28 v #6959 > > ................................................................................ 00:00:28 v #6960 > > │ 00:00:28 v #6961 > > ................................................................................ 00:00:28 v #6962 > > ................................................................................ 00:00:28 v #6963 > > │ 00:00:28 v #6964 > > ................................................................................ 00:00:28 v #6965 > > ................................................................................ 00:00:28 v #6966 > > │ 00:00:28 v #6967 > > ................................................................................ 00:00:28 v #6968 > > ................................................................................ 00:00:28 v #6969 > > │ 00:00:28 v #6970 > > ................................................................................ 00:00:28 v #6971 > > ................................................................................ 00:00:28 v #6972 > > │ 00:00:28 v #6973 > > │ 00:00:28 v #6974 > > ................................................................................ 00:00:28 v #6975 > > ................................................................................ 00:00:28 v #6976 > > │ 00:00:28 v #6977 > > ................................................................................ 00:00:28 v #6978 > > ................................................................................ 00:00:28 v #6979 > > │ 00:00:28 v #6980 > > ................................................................................ 00:00:28 v #6981 > > ................................................................................ 00:00:28 v #6982 > > │ 00:00:28 v #6983 > > ................................................................................ 00:00:28 v #6984 > > ................................................................................ 00:00:28 v #6985 > > │ 00:00:28 v #6986 > > ................................................................................ 00:00:28 v #6987 > > ................................................................................ 00:00:28 v #6988 > > │ 00:00:28 v #6989 > > ................................................................................ 00:00:28 v #6990 > > ................................................................................ 00:00:28 v #6991 > > │ 00:00:28 v #6992 > > ................................................................................ 00:00:28 v #6993 > > ................................................................................ 00:00:28 v #6994 > > │ 00:00:28 v #6995 > > .......................................;;/<..................................... 00:00:28 v #6996 > > ................................................................................ 00:00:28 v #6997 > > │ 00:00:28 v #6998 > > ....................................<;;;/////................................... 00:00:28 v #6999 > > ................................................................................ 00:00:28 v #7000 > > │ 00:00:28 v #7001 > > ..................................;;;;;////////<................................ 00:00:28 v #7002 > > ................................................................................ 00:00:28 v #7003 > > │ 00:00:28 v #7004 > > ................................;;;;;;;///////////.............................. 00:00:28 v #7005 > > ................................................................................ 00:00:28 v #7006 > > │ 00:00:28 v #7007 > > ..............................;;;;;;;;//////////////<........................... 00:00:28 v #7008 > > ................................................................................ 00:00:28 v #7009 > > │ 00:00:28 v #7010 > > ............................;;;;;;;;;;/////////////////......................... 00:00:28 v #7011 > > ................................................................................ 00:00:28 v #7012 > > │ 00:00:28 v #7013 > > ..........................;;;;;;;;;;;////////////////////<...................... 00:00:28 v #7014 > > ................................................................................ 00:00:28 v #7015 > > │ 00:00:28 v #7016 > > ........................;;;;;;;;;;;;////////////////////////.................... 00:00:28 v #7017 > > ................................................................................ 00:00:28 v #7018 > > │ 00:00:28 v #7019 > > .......................;;;;;;;;;;;;;///////////////////////////................. 00:00:28 v #7020 > > ........;;///................................................................... 00:00:28 v #7021 > > │ 00:00:28 v #7022 > > ......................;;;;;;;;;;;;;//////////////////////////////............... 00:00:28 v #7023 > > .....;;;;;//////................................................................ 00:00:28 v #7024 > > │ 00:00:28 v #7025 > > .....................;;;;;;;;;;;;;;//////////////////////////////............... 00:00:28 v #7026 > > ..;;;;;;;//////////............................................................. 00:00:28 v #7027 > > │ 00:00:28 v #7028 > > ....................;;;;;;;;;;;;;;///////////////////////////////............... 00:00:28 v #7029 > > \;;;;;;;;////////////<.................;;....................................... 00:00:28 v #7030 > > │ 00:00:28 v #7031 > > ...................\;;;;;;;;;;;;;///////////////////////////////................ 00:00:28 v #7032 > > ;;;;;;;;///////////////............<;;;;////<................................... 00:00:28 v #7033 > > │ 00:00:28 v #7034 > > ...................;;;;;;;;;;;;;;///////////////////////////////...............; 00:00:28 v #7035 > > ;;;;;;;;///////////////...........\;;;;////////................................. 00:00:28 v #7036 > > │ 00:00:28 v #7037 > > ..................;;;;;;;;;;;;;;////////////////////////////////..............\; 00:00:28 v #7038 > > ;;;;;;;///////////////............;;;;;////////................................. 00:00:28 v #7039 > > │ 00:00:28 v #7040 > > .................;;;;;;;;;;;;;;;////////////////////////////////..............;; 00:00:28 v #7041 > > ;;;;;;;>//////////////...........\;;;;;>>>////.................................. 00:00:28 v #7042 > > │ 00:00:28 v #7043 > > ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;; 00:00:28 v #7044 > > ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.................................. 00:00:28 v #7045 > > │ 00:00:28 v #7046 > > ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;; 00:00:28 v #7047 > > >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/................................... 00:00:28 v #7048 > > │ 00:00:28 v #7049 > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>> 00:00:28 v #7050 > > >>>>>>>>>>>>>>>>>>>//..................\=....................................... 00:00:28 v #7051 > > │ 00:00:28 v #7052 > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................ 00:00:28 v #7053 > > .\>>>>>>>>>>>>>>>>>>/........................................................... 00:00:28 v #7054 > > │ 00:00:28 v #7055 > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////................. 00:00:28 v #7056 > > ......>>>>>>>>>>................................................................ 00:00:28 v #7057 > > │ 00:00:28 v #7058 > > ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////................. 00:00:28 v #7059 > > ................................................................................ 00:00:28 v #7060 > > │ 00:00:28 v #7061 > > ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////................. 00:00:28 v #7062 > > ................................................................................ 00:00:28 v #7063 > > │ 00:00:28 v #7064 > > ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//................. 00:00:28 v #7065 > > ................................................................................ 00:00:28 v #7066 > > │ 00:00:28 v #7067 > > .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/................. 00:00:28 v #7068 > > ................................................................................ 00:00:28 v #7069 > > │ 00:00:28 v #7070 > > ..................................>>>>>>>>>>>>>>>>>>>>==........................ 00:00:28 v #7071 > > ................................................................................ 00:00:28 v #7072 > > │ 00:00:28 v #7073 > > .......................................>==...................................... 00:00:28 v #7074 > > ................................................................................ 00:00:28 v #7075 > > │ 00:00:28 v #7076 > > ................................................................................ 00:00:28 v #7077 > > ................................................................................ 00:00:28 v #7078 > > │ 00:00:28 v #7079 > > ................................................................................ 00:00:28 v #7080 > > ................................................................................ 00:00:28 v #7081 > > │ 00:00:28 v #7082 > > ................................................................................ 00:00:28 v #7083 > > ................................................................................ 00:00:28 v #7084 > > │ 00:00:28 v #7085 > > ................................................................................ 00:00:28 v #7086 > > ................................................................................ 00:00:28 v #7087 > > │ 00:00:28 v #7088 > > ................................................................................ 00:00:28 v #7089 > > ................................................................................ 00:00:28 v #7090 > > │ 00:00:28 v #7091 > > ................................................................................ 00:00:28 v #7092 > > ................................................................................ 00:00:28 v #7093 > > │ 00:00:28 v #7094 > > ................................................................................ 00:00:28 v #7095 > > ................................................................................ 00:00:28 v #7096 > > │ 00:00:28 v #7097 > > ................................................................................ 00:00:28 v #7098 > > ................................................................................ 00:00:28 v #7099 > > │ 00:00:28 v #7100 > > ................................................................................ 00:00:28 v #7101 > > ................................................................................ 00:00:28 v #7102 > > │ 00:00:28 v #7103 > > ................................................................................ 00:00:28 v #7104 > > ................................................................................ 00:00:28 v #7105 > > │ 00:00:28 v #7106 > > │ 00:00:28 v #7107 > > ................................................................................ 00:00:28 v #7108 > > ................................................................................ 00:00:28 v #7109 > > │ 00:00:28 v #7110 > > ................................................................................ 00:00:28 v #7111 > > ................................................................................ 00:00:28 v #7112 > > │ 00:00:28 v #7113 > > ................................................................................ 00:00:28 v #7114 > > ................................................................................ 00:00:28 v #7115 > > │ 00:00:28 v #7116 > > ................................................................................ 00:00:28 v #7117 > > ................................................................................ 00:00:28 v #7118 > > │ 00:00:28 v #7119 > > ................................................................................ 00:00:28 v #7120 > > ................................................................................ 00:00:28 v #7121 > > │ 00:00:28 v #7122 > > ................................................................................ 00:00:28 v #7123 > > ................................................................................ 00:00:28 v #7124 > > │ 00:00:28 v #7125 > > ................................................................................ 00:00:28 v #7126 > > ................................................................................ 00:00:28 v #7127 > > │ 00:00:28 v #7128 > > ......................................;;//...................................... 00:00:28 v #7129 > > ................................................................................ 00:00:28 v #7130 > > │ 00:00:28 v #7131 > > ....................................;;;;////.................................... 00:00:28 v #7132 > > ................................................................................ 00:00:28 v #7133 > > │ 00:00:28 v #7134 > > ..................................;;;;;////////................................. 00:00:28 v #7135 > > ................................................................................ 00:00:28 v #7136 > > │ 00:00:28 v #7137 > > ...............................<;;;;;;;///////////.............................. 00:00:28 v #7138 > > ................................................................................ 00:00:28 v #7139 > > │ 00:00:28 v #7140 > > .............................;;;;;;;;;//////////////............................ 00:00:28 v #7141 > > ................................................................................ 00:00:28 v #7142 > > │ 00:00:28 v #7143 > > ...........................;;;;;;;;;;;/////////////////......................... 00:00:28 v #7144 > > ................................................................................ 00:00:28 v #7145 > > │ 00:00:28 v #7146 > > .........................;;;;;;;;;;;;;///////////////////<...................... 00:00:28 v #7147 > > ................................................................................ 00:00:28 v #7148 > > │ 00:00:28 v #7149 > > .......................;;;;;;;;;;;;;;///////////////////////.................... 00:00:28 v #7150 > > ................................................................................ 00:00:28 v #7151 > > │ 00:00:28 v #7152 > > .....................\;;;;;;;;;;;;;;;//////////////////////////................. 00:00:28 v #7153 > > .......<;;//<................................................................... 00:00:28 v #7154 > > │ 00:00:28 v #7155 > > .....................;;;;;;;;;;;;;;;;///////////////////////////................ 00:00:28 v #7156 > > ....<;;;;;//////................................................................ 00:00:28 v #7157 > > │ 00:00:28 v #7158 > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ 00:00:28 v #7159 > > ..;;;;;;;;/////////............................................................. 00:00:28 v #7160 > > │ 00:00:28 v #7161 > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ 00:00:28 v #7162 > > ;;;;;;;;;/////////////.................;/....................................... 00:00:28 v #7163 > > │ 00:00:28 v #7164 > > ...................;;;;;;;;;;;;;;;;/////////////////////////////...............; 00:00:28 v #7165 > > ;;;;;;;;;/////////////.............<;;;;////<................................... 00:00:28 v #7166 > > │ 00:00:28 v #7167 > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............; 00:00:28 v #7168 > > ;;;;;;;;//////////////............\;;;;;//////.................................. 00:00:28 v #7169 > > │ 00:00:28 v #7170 > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\; 00:00:28 v #7171 > > ;;;;;;;;//////////////............;;;;;///////.................................. 00:00:28 v #7172 > > │ 00:00:28 v #7173 > > .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;; 00:00:28 v #7174 > > ;;;;;;;;>/////////////............;;;;;>>>////.................................. 00:00:28 v #7175 > > │ 00:00:28 v #7176 > > .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;; 00:00:28 v #7177 > > ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.................................. 00:00:28 v #7178 > > │ 00:00:28 v #7179 > > ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;; 00:00:28 v #7180 > > ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.................................. 00:00:28 v #7181 > > │ 00:00:28 v #7182 > > ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>> 00:00:28 v #7183 > > >>>>>>>>>>>>>>>>>>>>>/..................>....................................... 00:00:28 v #7184 > > │ 00:00:28 v #7185 > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................ 00:00:28 v #7186 > > .>>>>>>>>>>>>>>>>>>>/........................................................... 00:00:28 v #7187 > > │ 00:00:28 v #7188 > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................ 00:00:28 v #7189 > > ......>>>>>>>>>>................................................................ 00:00:28 v #7190 > > │ 00:00:28 v #7191 > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................ 00:00:28 v #7192 > > ................................................................................ 00:00:28 v #7193 > > │ 00:00:28 v #7194 > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................ 00:00:28 v #7195 > > ................................................................................ 00:00:28 v #7196 > > │ 00:00:28 v #7197 > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................ 00:00:28 v #7198 > > ................................................................................ 00:00:28 v #7199 > > │ 00:00:28 v #7200 > > ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. 00:00:28 v #7201 > > ................................................................................ 00:00:28 v #7202 > > │ 00:00:28 v #7203 > > ..................................>>>>>>>>>>>>>>>>>>............................ 00:00:28 v #7204 > > ................................................................................ 00:00:28 v #7205 > > │ 00:00:28 v #7206 > > .......................................>=....................................... 00:00:28 v #7207 > > ................................................................................ 00:00:28 v #7208 > > │ 00:00:28 v #7209 > > ................................................................................ 00:00:28 v #7210 > > ................................................................................ 00:00:28 v #7211 > > │ 00:00:28 v #7212 > > ................................................................................ 00:00:28 v #7213 > > ................................................................................ 00:00:28 v #7214 > > │ 00:00:28 v #7215 > > ................................................................................ 00:00:28 v #7216 > > ................................................................................ 00:00:28 v #7217 > > │ 00:00:28 v #7218 > > ................................................................................ 00:00:28 v #7219 > > ................................................................................ 00:00:28 v #7220 > > │ 00:00:28 v #7221 > > ................................................................................ 00:00:28 v #7222 > > ................................................................................ 00:00:28 v #7223 > > │ 00:00:28 v #7224 > > ................................................................................ 00:00:28 v #7225 > > ................................................................................ 00:00:28 v #7226 > > │ 00:00:28 v #7227 > > ................................................................................ 00:00:28 v #7228 > > ................................................................................ 00:00:28 v #7229 > > │ 00:00:28 v #7230 > > ................................................................................ 00:00:28 v #7231 > > ................................................................................ 00:00:28 v #7232 > > │ 00:00:28 v #7233 > > ................................................................................ 00:00:28 v #7234 > > ................................................................................ 00:00:28 v #7235 > > │ 00:00:28 v #7236 > > ................................................................................ 00:00:28 v #7237 > > ................................................................................ 00:00:28 v #7238 > > │ 00:00:28 v #7239 > > │ 00:00:28 v #7240 > > ................................................................................ 00:00:28 v #7241 > > ................................................................................ 00:00:28 v #7242 > > │ 00:00:28 v #7243 > > ................................................................................ 00:00:28 v #7244 > > ................................................................................ 00:00:28 v #7245 > > │ 00:00:28 v #7246 > > ................................................................................ 00:00:28 v #7247 > > ................................................................................ 00:00:28 v #7248 > > │ 00:00:28 v #7249 > > ................................................................................ 00:00:28 v #7250 > > ................................................................................ 00:00:28 v #7251 > > │ 00:00:28 v #7252 > > ................................................................................ 00:00:28 v #7253 > > ................................................................................ 00:00:28 v #7254 > > │ 00:00:28 v #7255 > > ................................................................................ 00:00:28 v #7256 > > ................................................................................ 00:00:28 v #7257 > > │ 00:00:28 v #7258 > > ................................................................................ 00:00:28 v #7259 > > ................................................................................ 00:00:28 v #7260 > > │ 00:00:28 v #7261 > > .....................................<;;/<...................................... 00:00:28 v #7262 > > ................................................................................ 00:00:28 v #7263 > > │ 00:00:28 v #7264 > > ...................................;;;;;///<.................................... 00:00:28 v #7265 > > ................................................................................ 00:00:28 v #7266 > > │ 00:00:28 v #7267 > > .................................;;;;;;///////<................................. 00:00:28 v #7268 > > ................................................................................ 00:00:28 v #7269 > > │ 00:00:28 v #7270 > > ...............................;;;;;;;;//////////<.............................. 00:00:28 v #7271 > > ................................................................................ 00:00:28 v #7272 > > │ 00:00:28 v #7273 > > ............................<;;;;;;;;;;/////////////............................ 00:00:28 v #7274 > > ................................................................................ 00:00:28 v #7275 > > │ 00:00:28 v #7276 > > ..........................<;;;;;;;;;;;;///////////////<......................... 00:00:28 v #7277 > > ................................................................................ 00:00:28 v #7278 > > │ 00:00:28 v #7279 > > ........................;;;;;;;;;;;;;;;//////////////////<...................... 00:00:28 v #7280 > > ................................................................................ 00:00:28 v #7281 > > │ 00:00:28 v #7282 > > ......................;;;;;;;;;;;;;;;;//////////////////////.................... 00:00:28 v #7283 > > ................................................................................ 00:00:28 v #7284 > > │ 00:00:28 v #7285 > > ....................;;;;;;;;;;;;;;;;;;////////////////////////.................. 00:00:28 v #7286 > > .......;;;//.................................................................... 00:00:28 v #7287 > > │ 00:00:28 v #7288 > > ....................;;;;;;;;;;;;;;;;;;/////////////////////////................. 00:00:28 v #7289 > > ....;;;;;;//////................................................................ 00:00:28 v #7290 > > │ 00:00:28 v #7291 > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................. 00:00:28 v #7292 > > .<;;;;;;;;////////<............................................................. 00:00:28 v #7293 > > │ 00:00:28 v #7294 > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................; 00:00:28 v #7295 > > ;;;;;;;;;;////////////.................;/....................................... 00:00:28 v #7296 > > │ 00:00:28 v #7297 > > ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................; 00:00:28 v #7298 > > ;;;;;;;;;/////////////.............<;;;;////<................................... 00:00:28 v #7299 > > │ 00:00:28 v #7300 > > ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................; 00:00:28 v #7301 > > ;;;;;;;;;/////////////............;;;;;;//////.................................. 00:00:28 v #7302 > > │ 00:00:28 v #7303 > > ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; 00:00:28 v #7304 > > ;;;;;;;;;/////////////............;;;;;;//////.................................. 00:00:28 v #7305 > > │ 00:00:28 v #7306 > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; 00:00:28 v #7307 > > ;;;;;;;;;>////////////............;;;;;;>>////.................................. 00:00:28 v #7308 > > │ 00:00:28 v #7309 > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; 00:00:28 v #7310 > > ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.................................. 00:00:28 v #7311 > > │ 00:00:28 v #7312 > > ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;; 00:00:28 v #7313 > > ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=................................... 00:00:28 v #7314 > > │ 00:00:28 v #7315 > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;; 00:00:28 v #7316 > > >>>>>>>>>>>>>>>>>>>>>>..................=....................................... 00:00:28 v #7317 > > │ 00:00:28 v #7318 > > ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................ 00:00:28 v #7319 > > >>>>>>>>>>>>>>>>>>>>>........................................................... 00:00:28 v #7320 > > │ 00:00:28 v #7321 > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............... 00:00:28 v #7322 > > .....\>>>>>>>>=................................................................. 00:00:28 v #7323 > > │ 00:00:28 v #7324 > > ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////............... 00:00:28 v #7325 > > ................................................................................ 00:00:28 v #7326 > > │ 00:00:28 v #7327 > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............... 00:00:28 v #7328 > > ................................................................................ 00:00:28 v #7329 > > │ 00:00:28 v #7330 > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............... 00:00:28 v #7331 > > ................................................................................ 00:00:28 v #7332 > > │ 00:00:28 v #7333 > > ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...................... 00:00:28 v #7334 > > ................................................................................ 00:00:28 v #7335 > > │ 00:00:28 v #7336 > > .................................>>>>>>>>>>>>>>>>............................... 00:00:28 v #7337 > > ................................................................................ 00:00:28 v #7338 > > │ 00:00:28 v #7339 > > ........................................=....................................... 00:00:28 v #7340 > > ................................................................................ 00:00:28 v #7341 > > │ 00:00:28 v #7342 > > ................................................................................ 00:00:28 v #7343 > > ................................................................................ 00:00:28 v #7344 > > │ 00:00:28 v #7345 > > ................................................................................ 00:00:28 v #7346 > > ................................................................................ 00:00:28 v #7347 > > │ 00:00:28 v #7348 > > ................................................................................ 00:00:28 v #7349 > > ................................................................................ 00:00:28 v #7350 > > │ 00:00:28 v #7351 > > ................................................................................ 00:00:28 v #7352 > > ................................................................................ 00:00:28 v #7353 > > │ 00:00:28 v #7354 > > ................................................................................ 00:00:28 v #7355 > > ................................................................................ 00:00:28 v #7356 > > │ 00:00:28 v #7357 > > ................................................................................ 00:00:28 v #7358 > > ................................................................................ 00:00:28 v #7359 > > │ 00:00:28 v #7360 > > ................................................................................ 00:00:28 v #7361 > > ................................................................................ 00:00:28 v #7362 > > │ 00:00:28 v #7363 > > ................................................................................ 00:00:28 v #7364 > > ................................................................................ 00:00:28 v #7365 > > │ 00:00:28 v #7366 > > ................................................................................ 00:00:28 v #7367 > > ................................................................................ 00:00:28 v #7368 > > │ 00:00:28 v #7369 > > ................................................................................ 00:00:28 v #7370 > > ................................................................................ 00:00:28 v #7371 > > │ 00:00:28 v #7372 > > │ 00:00:28 v #7373 > > ................................................................................ 00:00:28 v #7374 > > ................................................................................ 00:00:28 v #7375 > > │ 00:00:28 v #7376 > > ................................................................................ 00:00:28 v #7377 > > ................................................................................ 00:00:28 v #7378 > > │ 00:00:28 v #7379 > > ................................................................................ 00:00:28 v #7380 > > ................................................................................ 00:00:28 v #7381 > > │ 00:00:28 v #7382 > > ................................................................................ 00:00:28 v #7383 > > ................................................................................ 00:00:28 v #7384 > > │ 00:00:28 v #7385 > > ................................................................................ 00:00:28 v #7386 > > ................................................................................ 00:00:28 v #7387 > > │ 00:00:28 v #7388 > > ................................................................................ 00:00:28 v #7389 > > ................................................................................ 00:00:28 v #7390 > > │ 00:00:28 v #7391 > > ................................................................................ 00:00:28 v #7392 > > ................................................................................ 00:00:28 v #7393 > > │ 00:00:28 v #7394 > > .....................................;;//....................................... 00:00:28 v #7395 > > ................................................................................ 00:00:28 v #7396 > > │ 00:00:28 v #7397 > > ...................................;;;;////<.................................... 00:00:28 v #7398 > > ................................................................................ 00:00:28 v #7399 > > │ 00:00:28 v #7400 > > ................................<;;;;;;///////.................................. 00:00:28 v #7401 > > ................................................................................ 00:00:28 v #7402 > > │ 00:00:28 v #7403 > > ..............................<;;;;;;;;/////////<............................... 00:00:28 v #7404 > > ................................................................................ 00:00:28 v #7405 > > │ 00:00:28 v #7406 > > ............................;;;;;;;;;;;////////////<............................ 00:00:28 v #7407 > > ................................................................................ 00:00:28 v #7408 > > │ 00:00:28 v #7409 > > ..........................;;;;;;;;;;;;;///////////////<......................... 00:00:28 v #7410 > > ................................................................................ 00:00:28 v #7411 > > │ 00:00:28 v #7412 > > .......................<;;;;;;;;;;;;;;;//////////////////....................... 00:00:28 v #7413 > > ................................................................................ 00:00:28 v #7414 > > │ 00:00:28 v #7415 > > .....................;;;;;;;;;;;;;;;;;;/////////////////////.................... 00:00:28 v #7416 > > ................................................................................ 00:00:28 v #7417 > > │ 00:00:28 v #7418 > > ...................;;;;;;;;;;;;;;;;;;;;//////////////////////................... 00:00:28 v #7419 > > .......;;;//.................................................................... 00:00:28 v #7420 > > │ 00:00:28 v #7421 > > ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.................. 00:00:28 v #7422 > > ....;;;;;;//////................................................................ 00:00:28 v #7423 > > │ 00:00:28 v #7424 > > ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.................. 00:00:28 v #7425 > > .;;;;;;;;;/////////............................................................. 00:00:28 v #7426 > > │ 00:00:28 v #7427 > > ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................; 00:00:28 v #7428 > > ;;;;;;;;;;///////////..................;/....................................... 00:00:28 v #7429 > > │ 00:00:28 v #7430 > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................; 00:00:28 v #7431 > > ;;;;;;;;;;////////////.............<;;;;////<................................... 00:00:28 v #7432 > > │ 00:00:28 v #7433 > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\; 00:00:28 v #7434 > > ;;;;;;;;;;////////////............;;;;;;//////.................................. 00:00:28 v #7435 > > │ 00:00:28 v #7436 > > .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;; 00:00:28 v #7437 > > ;;;;;;;;;;////////////............;;;;;;//////.................................. 00:00:28 v #7438 > > │ 00:00:28 v #7439 > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; 00:00:28 v #7440 > > ;;;;;;;;;;>///////////............;;;;;;>>>///.................................. 00:00:28 v #7441 > > │ 00:00:28 v #7442 > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; 00:00:28 v #7443 > > ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.................................. 00:00:28 v #7444 > > │ 00:00:28 v #7445 > > ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;; 00:00:28 v #7446 > > ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=................................... 00:00:28 v #7447 > > │ 00:00:28 v #7448 > > ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;; 00:00:28 v #7449 > > ;;>>>>>>>>>>>>>>>>>>>>..................=....................................... 00:00:28 v #7450 > > │ 00:00:28 v #7451 > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\ 00:00:28 v #7452 > > >>>>>>>>>>>>>>>>>>>>............................................................ 00:00:28 v #7453 > > │ 00:00:28 v #7454 > > ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... 00:00:28 v #7455 > > .....>>>>>>>>>=................................................................. 00:00:28 v #7456 > > │ 00:00:28 v #7457 > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.............. 00:00:28 v #7458 > > ................................................................................ 00:00:28 v #7459 > > │ 00:00:28 v #7460 > > ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. 00:00:28 v #7461 > > ................................................................................ 00:00:28 v #7462 > > │ 00:00:28 v #7463 > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.................. 00:00:28 v #7464 > > ................................................................................ 00:00:28 v #7465 > > │ 00:00:28 v #7466 > > ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=......................... 00:00:28 v #7467 > > ................................................................................ 00:00:28 v #7468 > > │ 00:00:28 v #7469 > > .................................\>>>>>>>>>>>>>=................................ 00:00:28 v #7470 > > ................................................................................ 00:00:28 v #7471 > > │ 00:00:28 v #7472 > > ................................................................................ 00:00:28 v #7473 > > ................................................................................ 00:00:28 v #7474 > > │ 00:00:28 v #7475 > > ................................................................................ 00:00:28 v #7476 > > ................................................................................ 00:00:28 v #7477 > > │ 00:00:28 v #7478 > > ................................................................................ 00:00:28 v #7479 > > ................................................................................ 00:00:28 v #7480 > > │ 00:00:28 v #7481 > > ................................................................................ 00:00:28 v #7482 > > ................................................................................ 00:00:28 v #7483 > > │ 00:00:28 v #7484 > > ................................................................................ 00:00:28 v #7485 > > ................................................................................ 00:00:28 v #7486 > > │ 00:00:28 v #7487 > > ................................................................................ 00:00:28 v #7488 > > ................................................................................ 00:00:28 v #7489 > > │ 00:00:28 v #7490 > > ................................................................................ 00:00:28 v #7491 > > ................................................................................ 00:00:28 v #7492 > > │ 00:00:28 v #7493 > > ................................................................................ 00:00:28 v #7494 > > ................................................................................ 00:00:28 v #7495 > > │ 00:00:28 v #7496 > > ................................................................................ 00:00:28 v #7497 > > ................................................................................ 00:00:28 v #7498 > > │ 00:00:28 v #7499 > > ................................................................................ 00:00:28 v #7500 > > ................................................................................ 00:00:28 v #7501 > > │ 00:00:28 v #7502 > > ................................................................................ 00:00:28 v #7503 > > ................................................................................ 00:00:28 v #7504 > > │ 00:00:28 v #7505 > > │ 00:00:28 v #7506 > 00:00:26 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 450048 } 00:00:28 v #7507 > 00:00:26 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:29 v #7508 > 00:00:27 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html 00:00:29 v #7509 > 00:00:27 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:29 v #7510 > 00:00:27 v #7 ! validate(nb) 00:00:29 v #7511 > 00:00:28 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:29 v #7512 > 00:00:28 v #9 ! return _pygments_highlight( 00:00:29 v #7513 > 00:00:28 v #10 ! [NbConvertApp] Writing 798012 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html 00:00:30 v #7514 > 00:00:28 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 914 } 00:00:30 v #7515 > 00:00:28 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 } 00:00:30 v #7516 > 00:00:28 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:30 v #7517 > 00:00:28 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:30 v #7518 > 00:00:28 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:30 v #7519 > 00:00:28 d #16 spiral.run / dib / { exit_code = 0; result_length = 451021 } 00:00:30 d #7520 runtime.execute_with_options_async / { exit_code = 0; output_length = 468722 } 00:00:30 d #3 main / executeCommand / exitCode: 0 / command: ../../../../deps/spiral/workspace/target/release/spiral dib --path cube.dib 00:00:30 v #44 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib 00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n 160i... }\n : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #20 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 and [<Struct>] US2 = | US2_0 of f0_0 : string | US2_1 and Mut0 = {mutable l0 : float} and [<Struct>] US3 = | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char | US3_1 and [<Struct>] US4 = ...x<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT null |> unbox<unit> #endif #if FABLE_COMPILER_PYTHON let v151 : (Async<unit> -> unit) = Async.RunSynchronously v151 v79 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v152 : (Async<unit> -> unit) = Async.RunSynchronously v152 v79 #endif #else let v153 : (Async<unit> -> unit) = Async.RunSynchronously v153 v79 #endif // run_target_args' is_unit #endif // run_target_args' is_unit () let v0 : ((string []) -> unit) = closure0() let main_ = v0 #if !FABLE_COMPILER_RUST main_ [||] #else let main args = main_ [||]; 0 #endif () 00:00:04 d #21 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::string::String")>] type std_string_String = class end #else type std_string_String = string #endif #if FABLE_COMPILER [<Fable.Core.Erase; Fable.Core.Emit("std::env::VarError")>] #endif type std_env_VarError = class end type IOsEnviron = abstract environ: x: unit -> obj type [<Struct>] US0 = | US0_0 | US0_1 | US0_2 and [<Struct>] US1 = | US1_0 of f0_0 : US0 | US1_1 of f1_0 : US0 | US1_2 of f2_0 : US0 | US1_3 of f3_0 : US0 | US1_4 of f4_0 : US0 and [<Struct>] US2 = | US2_0 of f0_0 : string | US2_1 and Mut0 = {mutable l0 : float} and [<Struct>] US3 = | US3_0 of f0_0 : int32 * f0_1 : float * f0_2 : char | US3_1 and [<Struct>] US4 = ...x<unit> #endif #if FABLE_COMPILER_RUST && CONTRACT null |> unbox<unit> #endif #if FABLE_COMPILER_TYPESCRIPT null |> unbox<unit> #endif #if FABLE_COMPILER_PYTHON let v151 : (Async<unit> -> unit) = Async.RunSynchronously v151 v79 #endif #if !FABLE_COMPILER_RUST && !FABLE_COMPILER_TYPESCRIPT && !FABLE_COMPILER_PYTHON let v152 : (Async<unit> -> unit) = Async.RunSynchronously v152 v79 #endif #else let v153 : (Async<unit> -> unit) = Async.RunSynchronously v153 v79 #endif // run_target_args' is_unit #endif // run_target_args' is_unit () let v0 : ((string []) -> unit) = closure0() let main_ = v0 #if !FABLE_COMPILER_RUST main_ [||] #else let main args = main_ [||]; 0 #endif () 00:00:05 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 v #45 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 v #44 networking.test_port_open / { port = 13806; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 d #3 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 d #4 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:01 d #5 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:01 v #6 Supervisor.sendJson / port: 13805 / json: {"FileOpen":{"spiText":"/// # cube\n\n/// ## cube\n\n/// ### get_width\ninl get_width () =\n 160i... }\n : ()\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:01 v #7 Supervisor.sendJson / port: 13805 / json: {"BuildFile":{"backend":"Python \u002B Cuda","uri":"file:///home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.spi"}} / result: 00:00:02 d #8 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #9 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:02 d #10 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:02 d #11 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #12 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #13 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:03 d #14 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:03 d #15 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #16 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #17 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:04 d #18 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: 00:00:04 d #19 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:05 d #20 Supervisor.buildFile / AsyncSeq.scan / path: cube.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 0 / error: / outputContent: kernel = r""" """ class static_array(): def __init__(self, length): self.ptr = [] for _ in range(length): self.ptr.append(None) def __getitem__(self, index): assert 0 <= index < len(self.ptr), "The get index needs to be in range." return self.ptr[index] def __setitem__(self, index, value): assert 0 <= index < len(self.ptr), "The set index needs to be in range." self.ptr[index] = value class static_array_list(static_array): def __init__(self, length): super().__init__(length) self.length = 0 def __getitem__(self, index): assert 0 <= index < self.length, "The get index needs to be in range." return self.ptr[index] d... = 0 == v60 del v60 if v61: v62 = "AUTOMATION" v63 = method1(v62) del v62 v64 = len(v63) del v63 v65 = 0 == v64 del v64 v66 = v65 else: v66 = False del v61 if v66: v75 = -1 else: v75 = 50 del v66 v76 = 1 v77 = 0.0 v78 = 0.0 v79 = 0.0 v80 = method2(v75, v76, v77, v78, v79) del v75, v76, v77, v78, v79 asyncio.run(v80()) del v80 return def main(): r = main_body() if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed. return r if __name__ == '__main__': result = main(); None if result is None else print(result) 00:00:05 d #21 Supervisor.buildFile / takeWhileInclusive / path: cube.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: kernel = r""" """ class static_array(): def __init__(self, length): self.ptr = [] for _ in range(length): self.ptr.append(None) def __getitem__(self, index): assert 0 <= index < len(self.ptr), "The get index needs to be in range." return self.ptr[index] def __setitem__(self, index, value): assert 0 <= index < len(self.ptr), "The set index needs to be in range." self.ptr[index] = value class static_array_list(static_array): def __init__(self, length): super().__init__(length) self.length = 0 def __getitem__(self, index): assert 0 <= index < self.length, "The get index needs to be in range." return self.ptr[index] d... = 0 == v60 del v60 if v61: v62 = "AUTOMATION" v63 = method1(v62) del v62 v64 = len(v63) del v63 v65 = 0 == v64 del v64 v66 = v65 else: v66 = False del v61 if v66: v75 = -1 else: v75 = 50 del v66 v76 = 1 v77 = 0.0 v78 = 0.0 v79 = 0.0 v80 = method2(v75, v76, v77, v78, v79) del v75, v76, v77, v78, v79 asyncio.run(v80()) del v80 return def main(): r = main_body() if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so the `__trap()` calls on the kernel aren't missed. return r if __name__ == '__main__': result = main(); None if result is None else print(result) 00:00:05 d #22 FileSystem.watchWithFilter / Disposing watch stream / filter: FileName, LastWrite 00:00:05 v #45 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [lib/spiral/common.fsx; lib/spiral/sm.fsx; lib/spiral/crypto.fsx; ... ] / name: cube / hash: / code.Length: 47215 targetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) Thanks to the contributor! @cartermp Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 3221ms Started Fable compilation... Fable compilation finished in 7354ms ./lib/spiral/common.fsx(2047,0): (2047,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/sm.fsx(548,0): (548,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/async_.fsx(240,0): (240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/threading.fsx(133,0): (133,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/crypto.fsx(2270,0): (2270,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/date_time.fsx(2419,0): (2419,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/platform.fsx(116,0): (116,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/networking.fsx(4773,0): (4773,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/trace.fsx(2084,0): (2084,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/runtime.fsx(6923,0): (6923,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./lib/spiral/file_system.fsx(16504,0): (16504,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Fable 5.0.0-alpha.2: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.7.0 Thanks to the contributor! @Titaye Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 2187ms Started Fable compilation... Fable compilation finished in 6856ms ./lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored ./lib/spiral/sm.fsx(298,20): (298,51) warning FABLE: CultureInfo argument is ignored Fable 5.0.0-alpha.2: F# to Python compiler (status: beta) Thanks to the contributor! @anchann Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 2296ms Started Fable compilation... Fable compilation finished in 6794ms ./lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored ./lib/spiral/sm.fsx(298,20): (298,51) warning FABLE: CultureInfo argument is ignored bun install v1.1.43 (76800b04) + @playwright/test@1.44.0 + @types/chrome@0.0.268 + npm-check-updates@17.0.0-5 + buffer@6.0.3 11 packages installed [63.00ms] [INFO]: 🎯 Checking for the Wasm target... [INFO]: 🌀 Compiling to Wasm... Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling autocfg v1.4.0 Compiling serde v1.0.216 Compiling wasm-bindgen-shared v0.2.99 Compiling cfg-if v1.0.0 Compiling log v0.4.22 Compiling bumpalo v3.16.0 Compiling once_cell v1.20.2 Compiling version_check v0.9.5 Compiling wasm-bindgen v0.2.99 Compiling quote v1.0.37 Compiling memchr v2.7.4 Compiling syn v2.0.90 Compiling thiserror v1.0.69 Compiling stable_deref_trait v1.2.0 Compiling smallvec v1.13.2 Compiling pin-project-lite v0.2.15 Compiling litemap v0.7.4 Compiling futures-core v0.3.31 Compiling writeable v0.5.5 Compiling lock_api v0.4.12 Compiling slab v0.4.9 Compiling futures-sink v0.3.31 Compiling parking_lot_core v0.9.10 Compiling itoa v1.0.14 Compiling futures-channel v0.3.31 Compiling icu_locid_transform_data v1.5.0 Compiling serde_json v1.0.133 Compiling futures-io v0.3.31 Compiling percent-encoding v2.3.1 Compiling icu_properties_data v1.5.0 Compiling futures-task v0.3.31 Compiling libc v0.2.168 Compiling ryu v1.0.18 Compiling pin-utils v0.1.0 Compiling unicode-xid v0.2.6 Compiling proc-macro-error-attr v1.0.4 Compiling const_format_proc_macros v0.2.34 Compiling hashbrown v0.15.2 Compiling icu_normalizer_data v1.5.0 Compiling equivalent v1.0.1 Compiling write16 v1.0.0 Compiling utf16_iter v1.0.5 Compiling utf8_iter v1.0.4 Compiling indexmap v2.7.0 Compiling proc-macro-error v1.0.4 Compiling unicode-segmentation v1.12.0 Compiling bytes v1.9.0 Compiling fnv v1.0.7 Compiling convert_case v0.6.0 Compiling const_format v0.2.34 Compiling form_urlencoded v1.2.1 Compiling proc-macro-utils v0.10.0 Compiling proc-macro-utils v0.8.0 Compiling proc-macro2-diagnostics v0.10.1 Compiling xxhash-rust v0.8.12 Compiling manyhow-macros v0.10.4 Compiling wasm-bindgen-backend v0.2.99 Compiling synstructure v0.13.1 Compiling server_fn_macro v0.6.15 Compiling wasm-bindgen-macro-support v0.2.99 Compiling slotmap v1.0.7 Compiling half v2.4.1 Compiling yansi v1.0.1 Compiling scopeguard v1.2.0 Compiling paste v1.0.15 Compiling ciborium-io v0.2.2 Compiling camino v1.1.9 Compiling anyhow v1.0.94 Compiling ciborium-ll v0.2.2 Compiling manyhow v0.10.4 Compiling http v1.2.0 Compiling tracing-core v0.1.33 Compiling collection_literals v1.0.1 Compiling serde_derive v1.0.216 Compiling wasm-bindgen-macro v0.2.99 Compiling zerofrom-derive v0.1.5 Compiling thiserror-impl v1.0.69 Compiling yoke-derive v0.7.5 Compiling zerofrom v0.1.5 Compiling js-sys v0.3.76 Compiling zerovec-derive v0.10.3 Compiling yoke v0.7.5 Compiling displaydoc v0.2.5 Compiling zerovec v0.10.4 Compiling icu_provider_macros v1.5.0 Compiling futures-macro v0.3.31 Compiling tinystr v0.7.6 Compiling icu_locid v1.5.0 Compiling icu_collections v1.5.0 Compiling icu_provider v1.5.0 Compiling futures-util v0.3.31 Compiling icu_locid_transform v1.5.0 Compiling web-sys v0.3.76 Compiling icu_properties v1.5.1 Compiling wasm-bindgen-futures v0.4.49 Compiling futures-executor v0.3.31 Compiling tracing-attributes v0.1.28 Compiling pin-project-internal v1.1.7 Compiling icu_normalizer v1.5.0 Compiling pin-project v1.1.7 Compiling futures v0.3.31 Compiling quote-use-macros v0.8.4 Compiling serde_spanned v0.6.8 Compiling toml_datetime v0.6.8 Compiling idna_adapter v1.2.0 Compiling idna v1.0.3 Compiling quote-use v0.8.4 Compiling syn_derive v0.1.8 Compiling url v2.5.4 Compiling interpolator v0.5.0 Compiling winnow v0.6.20 Compiling prettyplease v0.2.25 Compiling same-file v1.0.6 Compiling hashbrown v0.14.5 Compiling walkdir v2.5.0 Compiling attribute-derive-macro v0.9.2 Compiling dashmap v5.5.3 Compiling toml_edit v0.22.22 Compiling rstml v0.11.2 Compiling tracing v0.1.41 Compiling serde-wasm-bindgen v0.6.5 Compiling ciborium v0.2.2 Compiling serde_qs v0.12.0 Compiling oco_ref v0.1.1 Compiling server_fn_macro_default v0.6.15 Compiling derive-where v1.2.7 Compiling parking_lot v0.12.3 Compiling getrandom v0.2.15 Compiling send_wrapper v0.6.0 Compiling proc-macro-error-attr2 v2.0.0 Compiling aho-corasick v1.1.3 Compiling utf8-width v0.1.7 Compiling rustc-hash v1.1.0 Compiling minimal-lexical v0.2.1 Compiling regex-syntax v0.8.5 Compiling base64 v0.22.1 Compiling either v1.13.0 Compiling self_cell v1.1.0 Compiling itertools v0.12.1 Compiling regex-automata v0.4.9 Compiling nom v7.1.3 Compiling proc-macro-error2 v2.0.1 Compiling html-escape v0.2.13 Compiling uuid v1.11.0 Compiling leptos_hot_reload v0.6.15 Compiling attribute-derive v0.9.2 Compiling toml v0.8.19 Compiling typed-builder-macro v0.18.2 Compiling pathdiff v0.2.3 Compiling leptos_macro v0.6.15 Compiling config v0.14.1 Compiling typed-builder v0.18.2 Compiling regex v1.11.1 Compiling async-recursion v1.1.1 Compiling num-traits v0.2.19 Compiling drain_filter_polyfill v0.1.3 Compiling inventory v0.3.15 Compiling pad-adapter v0.1.1 Compiling lazy_static v1.5.0 Compiling leptos_config v0.6.15 Compiling cfg_aliases v0.2.1 Compiling borsh v1.5.3 Compiling serde_test v1.0.177 Compiling tokio v1.42.0 Compiling serde_qs v0.13.0 Compiling linear-map v1.2.0 Compiling serde_urlencoded v0.7.1 Compiling http v0.2.12 Compiling base64 v0.13.1 Compiling tower-service v0.3.3 Compiling console_error_panic_hook v0.1.7 Compiling gloo-utils v0.2.0 Compiling leptos_reactive v0.6.15 Compiling idb v0.6.4 Compiling gloo-net v0.6.0 Compiling console_log v1.0.0 Compiling reqwest-wasm v0.11.16 Compiling wasm-streams v0.4.2 Compiling rexie v0.6.2 Compiling server_fn v0.6.15 Compiling leptos_dom v0.6.15 Compiling leptos_server v0.6.15 Compiling leptos v0.6.15 Compiling leptos_router v0.6.15 Compiling leptos_meta v0.6.15 Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension) Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.00s [INFO]: ⬇️ Installing wasm-bindgen... [INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended [INFO]: ✨ Done in 56.45s [INFO]: 📦 Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg. Resolving dependencies Resolved, downloaded and extracted [56] Saved lockfile ▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta] pkg/spiral_temp_extension.js:1455:66: 1455 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url); ╵ ~~~~~~~~~~~ You need to set the output format to "esm" for "import.meta" to work correctly. 1 warning dist/spiral_temp_extension_bg-GYR7LT4Q.wasm 4.4mb ⚠️ dist/devtools.js 29.0kb dist/content_script.js 26.7kb dist/service_worker.js 2.2kb ⚡ Done in 35ms $ playwright test [WebServer] Resolving dependencies [WebServer] Resolved, downloaded and extracted [272] [WebServer] Saved lockfile Running 3 tests using 2 workers ··· 3 passed (8.1s) 00:00:00 v #1 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 ""/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64"; options = { command = dotnet "/home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release/Spiral.dll" --port 13805 --default-int i32 --default-float f64; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = Some <fun:compiler@87-4>; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot" } } 00:00:00 v #2 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #2 > 00:00:00 d #1 pwd: /home/runner/work/polyglot/polyglot 00:00:00 v #3 > 00:00:00 d #2 dllPath: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/The Spiral Language 2/artifacts/bin/The Spiral Language 2/release 00:00:00 v #4 > 00:00:00 d #3 targetDir: /home/runner/work/polyglot/polyglot/target/spiral_Eval 00:00:00 v #3 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #4 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #5 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #6 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #7 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #8 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #9 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #10 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #11 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #12 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #13 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #14 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #15 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #16 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #17 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #18 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #19 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #20 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #21 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #22 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #23 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #24 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #25 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #26 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #27 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #28 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #29 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #30 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #31 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #32 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #33 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #34 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #35 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:00 v #36 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #37 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #38 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #39 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #5 > Starting the Spiral Server. It is bound to: http://localhost:13805 00:00:01 v #40 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #41 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #42 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } 00:00:01 v #1 Supervisor.sendJson / port: 13805 / json: {"Ping":true} / result: 00:00:01 v #2 Supervisor.awaitCompiler / Ping / result: 'Some null' / port: 13805 / retry: 1 00:00:01 v #6 > Server bound to: http://localhost:13805 00:00:01 d #7 runtime.execute_with_options_async / { file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path build.dib"; options = { command = ../../../../deps/spiral/workspace/target/release/spiral dib --path build.dib; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:01 v #8 > 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:01 v #9 > 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } 00:00:02 v #10 > > 00:00:02 v #11 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #12 > > │ # test 00:00:02 v #13 > > 00:00:02 v #14 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #15 > > │ ## include scripts 00:00:02 v #16 > > 00:00:02 v #17 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:02 v #18 > > │ ### include notebook core 00:00:02 v #19 > > 00:00:02 v #20 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:02 v #21 > > . ../../../../scripts/nbs_header.ps1 00:00:03 v #22 > > 00:00:03 v #23 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #24 > > │ ### Include core functions script 00:00:03 v #25 > > 00:00:03 v #26 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:03 v #27 > > . ../../../../scripts/core.ps1 00:00:03 v #28 > > 00:00:03 v #29 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #30 > > │ ### Include spiral library 00:00:03 v #31 > > 00:00:03 v #32 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:03 v #33 > > . ../../../../lib/spiral/lib.ps1 00:00:03 v #34 > > 00:00:03 v #35 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #36 > > │ ## execute project commands 00:00:03 v #37 > > 00:00:03 v #38 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:03 v #39 > > │ ### run notebook with retries using spiral supervisor 00:00:03 v #40 > > 00:00:03 v #41 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:03 v #42 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --execute-command 00:00:03 v #43 > > "../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path 00:00:03 v #44 > > test.dib --retries 3" } | Invoke-Block 00:00:15 v #45 > <test> 00:00:15 v #46 > </test> 00:00:17 v #47 > > 00:00:17 v #48 > > ── [ 14.34s - stdout ] ───────────────────────────────────────────────────────── 00:00:17 v #49 > > │ 00:00:00 v #1 networking.test_port_open / { port = 00:00:17 v #50 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection 00:00:17 v #51 > > refused) } 00:00:17 v #52 > > │ 00:00:00 d #1 runtime.execute_with_options_async / { 00:00:17 v #53 > > file_name = ../../../../deps/spiral/workspace/target/release/spiral; arguments = 00:00:17 v #54 > > US5_0 "dib --path test.dib --retries 3"; options = { command = 00:00:17 v #55 > > ../../../../deps/spiral/workspace/target/release/spiral dib --path test.dib 00:00:17 v #56 > > --retries 3; cancellation_token = Some System.Threading.CancellationToken; 00:00:17 v #57 > > environment_variables = [||]; on_line = None; stdin = None; trace = true; 00:00:17 v #58 > > working_directory = None } } 00:00:17 v #59 > > │ 00:00:00 v #2 > 00:00:00 d #1 spiral.main / { args 00:00:17 v #60 > > = Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) } 00:00:17 v #61 > > │ 00:00:00 v #3 > 00:00:00 d #2 00:00:17 v #62 > > runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", 00:00:17 v #63 > > "--exit-after-run", "--run", 00:00:17 v #64 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib", 00:00:17 v #65 > > "--output-path", 00:00:17 v #66 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; 00:00:17 v #67 > > options = { command = dotnet repl --exit-after-run --run 00:00:17 v #68 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib" 00:00:17 v #69 > > --output-path 00:00:17 v #70 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"; 00:00:17 v #71 > > cancellation_token = None; environment_variables = 00:00:17 v #72 > > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = 00:00:17 v #73 > > None; stdin = None; trace = false; working_directory = None } } 00:00:17 v #74 > > │ 00:00:02 v #4 > > 00:00:17 v #75 > > │ 00:00:02 v #5 > > ── markdown 00:00:17 v #76 > > ──────────────────────────────────────────────────────────────────── 00:00:17 v #77 > > │ 00:00:02 v #6 > > │ # test (Polyglot) 00:00:17 v #78 > > │ 00:00:04 v #7 > > 00:00:17 v #79 > > │ 00:00:04 v #8 > > ── spiral 00:00:17 v #80 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #81 > > │ 00:00:04 v #9 > > //// test 00:00:17 v #82 > > │ 00:00:04 v #10 > > 00:00:17 v #83 > > │ 00:00:04 v #11 > > open testing 00:00:17 v #84 > > │ 00:00:08 v #12 > > 00:00:17 v #85 > > │ 00:00:08 v #13 > > ── spiral 00:00:17 v #86 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #87 > > │ 00:00:08 v #14 > > //// test 00:00:17 v #88 > > │ 00:00:08 v #15 > > //// print_code 00:00:17 v #89 > > │ 00:00:08 v #16 > > 00:00:17 v #90 > > │ 00:00:08 v #17 > > inl jp = [[ "J"; "P" ]] 00:00:17 v #91 > > │ 00:00:08 v #18 > > inl tf = [[ "T"; "F" ]] 00:00:17 v #92 > > │ 00:00:08 v #19 > > inl sn = [[ "S"; "N" ]] 00:00:17 v #93 > > │ 00:00:08 v #20 > > inl ie = [[ "I"; "E" ]] 00:00:17 v #94 > > │ 00:00:08 v #21 > > 00:00:17 v #95 > > │ 00:00:08 v #22 > > (ie, ([[]] : _ string)) 00:00:17 v #96 > > │ 00:00:08 v #23 > > ||> listm.foldBack fun ie' acc => 00:00:17 v #97 > > │ 00:00:08 v #24 > > inl ssnn acc' jp' = 00:00:17 v #98 > > │ 00:00:08 v #25 > > (sn, acc') 00:00:17 v #99 > > │ 00:00:08 v #26 > > ||> listm.foldBack fun sn' 00:00:17 v #100 > > acc' => 00:00:17 v #101 > > │ 00:00:08 v #27 > > inl c' ie' sn' tf' jp' = 00:00:17 v #102 > > │ 00:00:08 v #28 > > 00:00:17 v #103 > > $'$"{!ie'}{!sn'}{!tf'}{!jp'}"' 00:00:17 v #104 > > │ 00:00:08 v #29 > > 00:00:17 v #105 > > │ 00:00:08 v #30 > > if listm.length acc' % 00:00:17 v #106 > > 4i32 = 2 then 00:00:17 v #107 > > │ 00:00:08 v #31 > > (tf, acc') 00:00:17 v #108 > > │ 00:00:08 v #32 > > ||> listm.foldBack 00:00:17 v #109 > > fun tf' acc'' => 00:00:17 v #110 > > │ 00:00:08 v #33 > > c' ie' sn' tf' 00:00:17 v #111 > > jp' :: acc'' 00:00:17 v #112 > > │ 00:00:08 v #34 > > else 00:00:17 v #113 > > │ 00:00:08 v #35 > > (acc', tf) 00:00:17 v #114 > > │ 00:00:08 v #36 > > ||> listm.fold fun 00:00:17 v #115 > > acc'' tf' => 00:00:17 v #116 > > │ 00:00:08 v #37 > > c' ie' sn' tf' 00:00:17 v #117 > > jp' :: acc'' 00:00:17 v #118 > > │ 00:00:08 v #38 > > if acc = [[]] then 00:00:17 v #119 > > │ 00:00:08 v #39 > > (acc, jp) 00:00:17 v #120 > > │ 00:00:08 v #40 > > ||> listm.fold fun acc' jp' 00:00:17 v #121 > > => 00:00:17 v #122 > > │ 00:00:08 v #41 > > ssnn acc' jp' 00:00:17 v #123 > > │ 00:00:08 v #42 > > else 00:00:17 v #124 > > │ 00:00:08 v #43 > > (jp, acc) 00:00:17 v #125 > > │ 00:00:08 v #44 > > ||> listm.foldBack fun jp' 00:00:17 v #126 > > acc' => 00:00:17 v #127 > > │ 00:00:08 v #45 > > ssnn acc' jp' 00:00:17 v #128 > > │ 00:00:08 v #46 > > |> listm'.box 00:00:17 v #129 > > │ 00:00:08 v #47 > > |> listm'.to_array' 00:00:17 v #130 > > │ 00:00:08 v #48 > > |> _assert_eq' ;[[ 00:00:17 v #131 > > │ 00:00:08 v #49 > > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" 00:00:17 v #132 > > │ 00:00:08 v #50 > > "ISTP"; "ISFP"; "INFP"; "INTP" 00:00:17 v #133 > > │ 00:00:08 v #51 > > "ESTP"; "ESFP"; "ENFP"; "ENTP" 00:00:17 v #134 > > │ 00:00:08 v #52 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" 00:00:17 v #135 > > │ 00:00:08 v #53 > > ]] 00:00:17 v #136 > > │ 00:00:09 v #54 > > 00:00:17 v #137 > > │ 00:00:09 v #55 > > ── [ 920.42ms - stdout ] 00:00:17 v #138 > > ─────────────────────────────────────────────────────── 00:00:17 v #139 > > │ 00:00:09 v #56 > > │ let rec method1 00:00:17 v #140 > > (v0 : bool) : bool = 00:00:17 v #141 > > │ 00:00:09 v #57 > > │ v0 00:00:17 v #142 > > │ 00:00:09 v #58 > > │ and closure0 (v0 : 00:00:17 v #143 > > string) () : unit = 00:00:17 v #144 > > │ 00:00:09 v #59 > > │ let v1 : 00:00:17 v #145 > > (string -> unit) = System.Console.WriteLine 00:00:17 v #146 > > │ 00:00:09 v #60 > > │ v1 v0 00:00:17 v #147 > > │ 00:00:09 v #61 > > │ and method0 () : 00:00:17 v #148 > > unit = 00:00:17 v #149 > > │ 00:00:09 v #62 > > │ let v0 : 00:00:17 v #150 > > string = "E" 00:00:17 v #151 > > │ 00:00:09 v #63 > > │ let v1 : 00:00:17 v #152 > > string = "N" 00:00:17 v #153 > > │ 00:00:09 v #64 > > │ let v2 : 00:00:17 v #154 > > string = "T" 00:00:17 v #155 > > │ 00:00:09 v #65 > > │ let v3 : 00:00:17 v #156 > > string = "J" 00:00:17 v #157 > > │ 00:00:09 v #66 > > │ let v4 : 00:00:17 v #158 > > string = $"{v0}{v1}{v2}{v3}" 00:00:17 v #159 > > │ 00:00:09 v #67 > > │ let v5 : 00:00:17 v #160 > > string = "F" 00:00:17 v #161 > > │ 00:00:09 v #68 > > │ let v6 : 00:00:17 v #162 > > string = $"{v0}{v1}{v5}{v3}" 00:00:17 v #163 > > │ 00:00:09 v #69 > > │ let v7 : 00:00:17 v #164 > > string = "S" 00:00:17 v #165 > > │ 00:00:09 v #70 > > │ let v8 : 00:00:17 v #166 > > string = $"{v0}{v7}{v5}{v3}" 00:00:17 v #167 > > │ 00:00:09 v #71 > > │ let v9 : 00:00:17 v #168 > > string = $"{v0}{v7}{v2}{v3}" 00:00:17 v #169 > > │ 00:00:09 v #72 > > │ let v10 : 00:00:17 v #170 > > string = "P" 00:00:17 v #171 > > │ 00:00:09 v #73 > > │ let v11 : 00:00:17 v #172 > > string = $"{v0}{v1}{v2}{v10}" 00:00:17 v #173 > > │ 00:00:09 v #74 > > │ let v12 : 00:00:17 v #174 > > string = $"{v0}{v1}{v5}{v10}" 00:00:17 v #175 > > │ 00:00:09 v #75 > > │ let v13 : 00:00:17 v #176 > > string = $"{v0}{v7}{v5}{v10}" 00:00:17 v #177 > > │ 00:00:09 v #76 > > │ let v14 : 00:00:17 v #178 > > string = $"{v0}{v7}{v2}{v10}" 00:00:17 v #179 > > │ 00:00:09 v #77 > > │ let v15 : 00:00:17 v #180 > > string = "I" 00:00:17 v #181 > > │ 00:00:09 v #78 > > │ let v16 : 00:00:17 v #182 > > string = $"{v15}{v1}{v2}{v10}" 00:00:17 v #183 > > │ 00:00:09 v #79 > > │ let v17 : 00:00:17 v #184 > > string = $"{v15}{v1}{v5}{v10}" 00:00:17 v #185 > > │ 00:00:09 v #80 > > │ let v18 : 00:00:17 v #186 > > string = $"{v15}{v7}{v5}{v10}" 00:00:17 v #187 > > │ 00:00:09 v #81 > > │ let v19 : 00:00:17 v #188 > > string = $"{v15}{v7}{v2}{v10}" 00:00:17 v #189 > > │ 00:00:09 v #82 > > │ let v20 : 00:00:17 v #190 > > string = $"{v15}{v1}{v2}{v3}" 00:00:17 v #191 > > │ 00:00:09 v #83 > > │ let v21 : 00:00:17 v #192 > > string = $"{v15}{v1}{v5}{v3}" 00:00:17 v #193 > > │ 00:00:09 v #84 > > │ let v22 : 00:00:17 v #194 > > string = $"{v15}{v7}{v5}{v3}" 00:00:17 v #195 > > │ 00:00:09 v #85 > > │ let v23 : 00:00:17 v #196 > > string = $"{v15}{v7}{v2}{v3}" 00:00:17 v #197 > > │ 00:00:09 v #86 > > │ let v24 : 00:00:17 v #198 > > string list = [] 00:00:17 v #199 > > │ 00:00:09 v #87 > > │ let v25 : 00:00:17 v #200 > > string list = v4 :: v24 00:00:17 v #201 > > │ 00:00:09 v #88 > > │ let v28 : 00:00:17 v #202 > > string list = v6 :: v25 00:00:17 v #203 > > │ 00:00:09 v #89 > > │ let v31 : 00:00:17 v #204 > > string list = v8 :: v28 00:00:17 v #205 > > │ 00:00:09 v #90 > > │ let v34 : 00:00:17 v #206 > > string list = v9 :: v31 00:00:17 v #207 > > │ 00:00:09 v #91 > > │ let v37 : 00:00:17 v #208 > > string list = v11 :: v34 00:00:17 v #209 > > │ 00:00:09 v #92 > > │ let v40 : 00:00:17 v #210 > > string list = v12 :: v37 00:00:17 v #211 > > │ 00:00:09 v #93 > > │ let v43 : 00:00:17 v #212 > > string list = v13 :: v40 00:00:17 v #213 > > │ 00:00:09 v #94 > > │ let v46 : 00:00:17 v #214 > > string list = v14 :: v43 00:00:17 v #215 > > │ 00:00:09 v #95 > > │ let v49 : 00:00:17 v #216 > > string list = v16 :: v46 00:00:17 v #217 > > │ 00:00:09 v #96 > > │ let v52 : 00:00:17 v #218 > > string list = v17 :: v49 00:00:17 v #219 > > │ 00:00:09 v #97 > > │ let v55 : 00:00:17 v #220 > > string list = v18 :: v52 00:00:17 v #221 > > │ 00:00:09 v #98 > > │ let v58 : 00:00:17 v #222 > > string list = v19 :: v55 00:00:17 v #223 > > │ 00:00:09 v #99 > > │ let v61 : 00:00:17 v #224 > > string list = v20 :: v58 00:00:17 v #225 > > │ 00:00:09 v #100 > > │ let v64 : 00:00:17 v #226 > > string list = v21 :: v61 00:00:17 v #227 > > │ 00:00:09 v #101 > > │ let v67 : 00:00:17 v #228 > > string list = v22 :: v64 00:00:17 v #229 > > │ 00:00:09 v #102 > > │ let v70 : 00:00:17 v #230 > > string list = v23 :: v67 00:00:17 v #231 > > │ 00:00:09 v #103 > > │ let v73 : 00:00:17 v #232 > > (string list -> (string [])) = List.toArray 00:00:17 v #233 > > │ 00:00:09 v #104 > > │ let v74 : 00:00:17 v #234 > > (string []) = v73 v70 00:00:17 v #235 > > │ 00:00:09 v #105 > > │ let v77 : 00:00:17 v #236 > > string = "ISTJ" 00:00:17 v #237 > > │ 00:00:09 v #106 > > │ let v78 : 00:00:17 v #238 > > string = "ISFJ" 00:00:17 v #239 > > │ 00:00:09 v #107 > > │ let v79 : 00:00:17 v #240 > > string = "INFJ" 00:00:17 v #241 > > │ 00:00:09 v #108 > > │ let v80 : 00:00:17 v #242 > > string = "INTJ" 00:00:17 v #243 > > │ 00:00:09 v #109 > > │ let v81 : 00:00:17 v #244 > > string = "ISTP" 00:00:17 v #245 > > │ 00:00:09 v #110 > > │ let v82 : 00:00:17 v #246 > > string = "ISFP" 00:00:17 v #247 > > │ 00:00:09 v #111 > > │ let v83 : 00:00:17 v #248 > > string = "INFP" 00:00:17 v #249 > > │ 00:00:09 v #112 > > │ let v84 : 00:00:17 v #250 > > string = "INTP" 00:00:17 v #251 > > │ 00:00:09 v #113 > > │ let v85 : 00:00:17 v #252 > > string = "ESTP" 00:00:17 v #253 > > │ 00:00:09 v #114 > > │ let v86 : 00:00:17 v #254 > > string = "ESFP" 00:00:17 v #255 > > │ 00:00:09 v #115 > > │ let v87 : 00:00:17 v #256 > > string = "ENFP" 00:00:17 v #257 > > │ 00:00:09 v #116 > > │ let v88 : 00:00:17 v #258 > > string = "ENTP" 00:00:17 v #259 > > │ 00:00:09 v #117 > > │ let v89 : 00:00:17 v #260 > > string = "ESTJ" 00:00:17 v #261 > > │ 00:00:09 v #118 > > │ let v90 : 00:00:17 v #262 > > string = "ESFJ" 00:00:17 v #263 > > │ 00:00:09 v #119 > > │ let v91 : 00:00:17 v #264 > > string = "ENFJ" 00:00:17 v #265 > > │ 00:00:09 v #120 > > │ let v92 : 00:00:17 v #266 > > string = "ENTJ" 00:00:17 v #267 > > │ 00:00:09 v #121 > > │ let v93 : 00:00:17 v #268 > > (string []) = [|v77; v78; v79; v80; v81; v82; 00:00:17 v #269 > > │ 00:00:09 v #122 > > v83; v84; v85; v86; v87; v88; v89; 00:00:17 v #270 > > v90; v91; v92|] 00:00:17 v #271 > > │ 00:00:09 v #123 > > │ let v94 : 00:00:17 v #272 > > bool = v74 = v93 00:00:17 v #273 > > │ 00:00:09 v #124 > > │ let v98 : 00:00:17 v #274 > > bool = 00:00:17 v #275 > > │ 00:00:09 v #125 > > │ if v94 00:00:17 v #276 > > then 00:00:17 v #277 > > │ 00:00:09 v #126 > > │ true 00:00:17 v #278 > > │ 00:00:09 v #127 > > │ else 00:00:17 v #279 > > │ 00:00:09 v #128 > > │ 00:00:17 v #280 > > method1(v94) 00:00:17 v #281 > > │ 00:00:09 v #129 > > │ let v99 : 00:00:17 v #282 > > string = "__assert_eq'" 00:00:17 v #283 > > │ 00:00:09 v #130 > > │ let v100 : 00:00:17 v #284 > > string = $"{v99} / actual: %A{v74} / expected: 00:00:17 v #285 > > │ 00:00:09 v #131 > > %A{v93}" 00:00:17 v #286 > > │ 00:00:09 v #132 > > │ let v103 : 00:00:17 v #287 > > unit = () 00:00:17 v #288 > > │ 00:00:09 v #133 > > │ let v104 : 00:00:17 v #289 > > (unit -> unit) = closure0(v100) 00:00:17 v #290 > > │ 00:00:09 v #134 > > │ let v105 : 00:00:17 v #291 > > unit = (fun () -> v104 (); v103) () 00:00:17 v #292 > > │ 00:00:09 v #135 > > │ let v107 : 00:00:17 v #293 > > bool = v98 = false 00:00:17 v #294 > > │ 00:00:09 v #136 > > │ if v107 then 00:00:17 v #295 > > │ 00:00:09 v #137 > > │ 00:00:17 v #296 > > failwith<unit> v100 00:00:17 v #297 > > │ 00:00:09 v #138 > > │ method0() 00:00:17 v #298 > > │ 00:00:09 v #139 > > │ 00:00:17 v #299 > > │ 00:00:09 v #140 > > │ __assert_eq' 00:00:17 v #300 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; 00:00:17 v #301 > > │ 00:00:09 v #141 > > "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #302 > > "ESTP"; "ESFP"; 00:00:17 v #303 > > │ 00:00:09 v #142 > > │ "ENFP"; "ENTP"; 00:00:17 v #304 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #305 > > │ 00:00:09 v #143 > > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 00:00:17 v #306 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #307 > > │ 00:00:09 v #144 > > "ESTP"; "ESFP"; 00:00:17 v #308 > > │ 00:00:09 v #145 > > │ "ENFP"; "ENTP"; 00:00:17 v #309 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #310 > > │ 00:00:09 v #146 > > │ 00:00:17 v #311 > > │ 00:00:09 v #147 > > 00:00:17 v #312 > > │ 00:00:09 v #148 > > ── spiral 00:00:17 v #313 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #314 > > │ 00:00:09 v #149 > > //// test 00:00:17 v #315 > > │ 00:00:09 v #150 > > //// print_code 00:00:17 v #316 > > │ 00:00:09 v #151 > > 00:00:17 v #317 > > │ 00:00:09 v #152 > > inl i_e = 00:00:17 v #318 > > │ 00:00:09 v #153 > > listm'.replicate 8i32 "I" ++ 00:00:17 v #319 > > listm'.replicate 8i32 "E" 00:00:17 v #320 > > │ 00:00:09 v #154 > > inl s_n = 00:00:17 v #321 > > │ 00:00:09 v #155 > > [[ "S"; "S"; "N"; "N" ]] 00:00:17 v #322 > > │ 00:00:09 v #156 > > |> listm'.replicate 4i32 00:00:17 v #323 > > │ 00:00:09 v #157 > > |> listm'.collect id 00:00:17 v #324 > > │ 00:00:09 v #158 > > inl t_f = 00:00:17 v #325 > > │ 00:00:09 v #159 > > [[ "T"; "F"; "F"; "T" ]] 00:00:17 v #326 > > │ 00:00:09 v #160 > > |> listm'.replicate 4i32 00:00:17 v #327 > > │ 00:00:09 v #161 > > |> listm'.collect id 00:00:17 v #328 > > │ 00:00:09 v #162 > > inl j_p = 00:00:17 v #329 > > │ 00:00:09 v #163 > > [[ "J"; "J"; "J"; "J" ]] 00:00:17 v #330 > > │ 00:00:09 v #164 > > ++ [[ "P"; "P"; "P"; "P" ]] 00:00:17 v #331 > > │ 00:00:09 v #165 > > ++ [[ "P"; "P"; "P"; "P" ]] 00:00:17 v #332 > > │ 00:00:09 v #166 > > ++ [[ "J"; "J"; "J"; "J" ]] 00:00:17 v #333 > > │ 00:00:09 v #167 > > inl mbti = 00:00:17 v #334 > > │ 00:00:09 v #168 > > listm'.map4 (fun a b c d => 00:00:17 v #335 > > $'$"{!a}{!b}{!c}{!d}"') i_e s_n t_f j_p 00:00:17 v #336 > > │ 00:00:09 v #169 > > 00:00:17 v #337 > > │ 00:00:09 v #170 > > mbti 00:00:17 v #338 > > │ 00:00:09 v #171 > > |> listm'.box 00:00:17 v #339 > > │ 00:00:09 v #172 > > |> listm'.to_array' 00:00:17 v #340 > > │ 00:00:09 v #173 > > |> _assert_eq' ;[[ 00:00:17 v #341 > > │ 00:00:09 v #174 > > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" 00:00:17 v #342 > > │ 00:00:09 v #175 > > "ISTP"; "ISFP"; "INFP"; "INTP" 00:00:17 v #343 > > │ 00:00:09 v #176 > > "ESTP"; "ESFP"; "ENFP"; "ENTP" 00:00:17 v #344 > > │ 00:00:09 v #177 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" 00:00:17 v #345 > > │ 00:00:09 v #178 > > ]] 00:00:17 v #346 > > │ 00:00:09 v #179 > > 00:00:17 v #347 > > │ 00:00:09 v #180 > > ── [ 456.37ms - stdout ] 00:00:17 v #348 > > ─────────────────────────────────────────────────────── 00:00:17 v #349 > > │ 00:00:09 v #181 > > │ let rec method1 00:00:17 v #350 > > (v0 : bool) : bool = 00:00:17 v #351 > > │ 00:00:09 v #182 > > │ v0 00:00:17 v #352 > > │ 00:00:09 v #183 > > │ and closure0 (v0 00:00:17 v #353 > > : string) () : unit = 00:00:17 v #354 > > │ 00:00:09 v #184 > > │ let v1 : 00:00:17 v #355 > > (string -> unit) = System.Console.WriteLine 00:00:17 v #356 > > │ 00:00:09 v #185 > > │ v1 v0 00:00:17 v #357 > > │ 00:00:09 v #186 > > │ and method0 () : 00:00:17 v #358 > > unit = 00:00:17 v #359 > > │ 00:00:09 v #187 > > │ let v0 : 00:00:17 v #360 > > string = "I" 00:00:17 v #361 > > │ 00:00:09 v #188 > > │ let v1 : 00:00:17 v #362 > > string = "S" 00:00:17 v #363 > > │ 00:00:09 v #189 > > │ let v2 : 00:00:17 v #364 > > string = "T" 00:00:17 v #365 > > │ 00:00:09 v #190 > > │ let v3 : 00:00:17 v #366 > > string = "J" 00:00:17 v #367 > > │ 00:00:09 v #191 > > │ let v4 : 00:00:17 v #368 > > string = $"{v0}{v1}{v2}{v3}" 00:00:17 v #369 > > │ 00:00:09 v #192 > > │ let v5 : 00:00:17 v #370 > > string = "F" 00:00:17 v #371 > > │ 00:00:09 v #193 > > │ let v6 : 00:00:17 v #372 > > string = $"{v0}{v1}{v5}{v3}" 00:00:17 v #373 > > │ 00:00:09 v #194 > > │ let v7 : 00:00:17 v #374 > > string = "N" 00:00:17 v #375 > > │ 00:00:09 v #195 > > │ let v8 : 00:00:17 v #376 > > string = $"{v0}{v7}{v5}{v3}" 00:00:17 v #377 > > │ 00:00:09 v #196 > > │ let v9 : 00:00:17 v #378 > > string = $"{v0}{v7}{v2}{v3}" 00:00:17 v #379 > > │ 00:00:09 v #197 > > │ let v10 : 00:00:17 v #380 > > string = "P" 00:00:17 v #381 > > │ 00:00:09 v #198 > > │ let v11 : 00:00:17 v #382 > > string = $"{v0}{v1}{v2}{v10}" 00:00:17 v #383 > > │ 00:00:09 v #199 > > │ let v12 : 00:00:17 v #384 > > string = $"{v0}{v1}{v5}{v10}" 00:00:17 v #385 > > │ 00:00:09 v #200 > > │ let v13 : 00:00:17 v #386 > > string = $"{v0}{v7}{v5}{v10}" 00:00:17 v #387 > > │ 00:00:09 v #201 > > │ let v14 : 00:00:17 v #388 > > string = $"{v0}{v7}{v2}{v10}" 00:00:17 v #389 > > │ 00:00:09 v #202 > > │ let v15 : 00:00:17 v #390 > > string = "E" 00:00:17 v #391 > > │ 00:00:09 v #203 > > │ let v16 : 00:00:17 v #392 > > string = $"{v15}{v1}{v2}{v10}" 00:00:17 v #393 > > │ 00:00:09 v #204 > > │ let v17 : 00:00:17 v #394 > > string = $"{v15}{v1}{v5}{v10}" 00:00:17 v #395 > > │ 00:00:09 v #205 > > │ let v18 : 00:00:17 v #396 > > string = $"{v15}{v7}{v5}{v10}" 00:00:17 v #397 > > │ 00:00:09 v #206 > > │ let v19 : 00:00:17 v #398 > > string = $"{v15}{v7}{v2}{v10}" 00:00:17 v #399 > > │ 00:00:09 v #207 > > │ let v20 : 00:00:17 v #400 > > string = $"{v15}{v1}{v2}{v3}" 00:00:17 v #401 > > │ 00:00:09 v #208 > > │ let v21 : 00:00:17 v #402 > > string = $"{v15}{v1}{v5}{v3}" 00:00:17 v #403 > > │ 00:00:09 v #209 > > │ let v22 : 00:00:17 v #404 > > string = $"{v15}{v7}{v5}{v3}" 00:00:17 v #405 > > │ 00:00:09 v #210 > > │ let v23 : 00:00:17 v #406 > > string = $"{v15}{v7}{v2}{v3}" 00:00:17 v #407 > > │ 00:00:09 v #211 > > │ let v24 : 00:00:17 v #408 > > string list = [] 00:00:17 v #409 > > │ 00:00:09 v #212 > > │ let v25 : 00:00:17 v #410 > > string list = v23 :: v24 00:00:17 v #411 > > │ 00:00:09 v #213 > > │ let v28 : 00:00:17 v #412 > > string list = v22 :: v25 00:00:17 v #413 > > │ 00:00:09 v #214 > > │ let v31 : 00:00:17 v #414 > > string list = v21 :: v28 00:00:17 v #415 > > │ 00:00:09 v #215 > > │ let v34 : 00:00:17 v #416 > > string list = v20 :: v31 00:00:17 v #417 > > │ 00:00:09 v #216 > > │ let v37 : 00:00:17 v #418 > > string list = v19 :: v34 00:00:17 v #419 > > │ 00:00:09 v #217 > > │ let v40 : 00:00:17 v #420 > > string list = v18 :: v37 00:00:17 v #421 > > │ 00:00:09 v #218 > > │ let v43 : 00:00:17 v #422 > > string list = v17 :: v40 00:00:17 v #423 > > │ 00:00:09 v #219 > > │ let v46 : 00:00:17 v #424 > > string list = v16 :: v43 00:00:17 v #425 > > │ 00:00:09 v #220 > > │ let v49 : 00:00:17 v #426 > > string list = v14 :: v46 00:00:17 v #427 > > │ 00:00:09 v #221 > > │ let v52 : 00:00:17 v #428 > > string list = v13 :: v49 00:00:17 v #429 > > │ 00:00:09 v #222 > > │ let v55 : 00:00:17 v #430 > > string list = v12 :: v52 00:00:17 v #431 > > │ 00:00:09 v #223 > > │ let v58 : 00:00:17 v #432 > > string list = v11 :: v55 00:00:17 v #433 > > │ 00:00:09 v #224 > > │ let v61 : 00:00:17 v #434 > > string list = v9 :: v58 00:00:17 v #435 > > │ 00:00:09 v #225 > > │ let v64 : 00:00:17 v #436 > > string list = v8 :: v61 00:00:17 v #437 > > │ 00:00:09 v #226 > > │ let v67 : 00:00:17 v #438 > > string list = v6 :: v64 00:00:17 v #439 > > │ 00:00:09 v #227 > > │ let v70 : 00:00:17 v #440 > > string list = v4 :: v67 00:00:17 v #441 > > │ 00:00:09 v #228 > > │ let v73 : 00:00:17 v #442 > > (string list -> (string [])) = List.toArray 00:00:17 v #443 > > │ 00:00:09 v #229 > > │ let v74 : 00:00:17 v #444 > > (string []) = v73 v70 00:00:17 v #445 > > │ 00:00:09 v #230 > > │ let v77 : 00:00:17 v #446 > > string = "ISTJ" 00:00:17 v #447 > > │ 00:00:09 v #231 > > │ let v78 : 00:00:17 v #448 > > string = "ISFJ" 00:00:17 v #449 > > │ 00:00:09 v #232 > > │ let v79 : 00:00:17 v #450 > > string = "INFJ" 00:00:17 v #451 > > │ 00:00:09 v #233 > > │ let v80 : 00:00:17 v #452 > > string = "INTJ" 00:00:17 v #453 > > │ 00:00:09 v #234 > > │ let v81 : 00:00:17 v #454 > > string = "ISTP" 00:00:17 v #455 > > │ 00:00:09 v #235 > > │ let v82 : 00:00:17 v #456 > > string = "ISFP" 00:00:17 v #457 > > │ 00:00:09 v #236 > > │ let v83 : 00:00:17 v #458 > > string = "INFP" 00:00:17 v #459 > > │ 00:00:09 v #237 > > │ let v84 : 00:00:17 v #460 > > string = "INTP" 00:00:17 v #461 > > │ 00:00:09 v #238 > > │ let v85 : 00:00:17 v #462 > > string = "ESTP" 00:00:17 v #463 > > │ 00:00:09 v #239 > > │ let v86 : 00:00:17 v #464 > > string = "ESFP" 00:00:17 v #465 > > │ 00:00:09 v #240 > > │ let v87 : 00:00:17 v #466 > > string = "ENFP" 00:00:17 v #467 > > │ 00:00:09 v #241 > > │ let v88 : 00:00:17 v #468 > > string = "ENTP" 00:00:17 v #469 > > │ 00:00:09 v #242 > > │ let v89 : 00:00:17 v #470 > > string = "ESTJ" 00:00:17 v #471 > > │ 00:00:09 v #243 > > │ let v90 : 00:00:17 v #472 > > string = "ESFJ" 00:00:17 v #473 > > │ 00:00:09 v #244 > > │ let v91 : 00:00:17 v #474 > > string = "ENFJ" 00:00:17 v #475 > > │ 00:00:09 v #245 > > │ let v92 : 00:00:17 v #476 > > string = "ENTJ" 00:00:17 v #477 > > │ 00:00:09 v #246 > > │ let v93 : 00:00:17 v #478 > > (string []) = [|v77; v78; v79; v80; v81; v82; 00:00:17 v #479 > > │ 00:00:09 v #247 > > v83; v84; v85; v86; v87; v88; v89; 00:00:17 v #480 > > v90; v91; v92|] 00:00:17 v #481 > > │ 00:00:09 v #248 > > │ let v94 : 00:00:17 v #482 > > bool = v74 = v93 00:00:17 v #483 > > │ 00:00:09 v #249 > > │ let v98 : 00:00:17 v #484 > > bool = 00:00:17 v #485 > > │ 00:00:09 v #250 > > │ if v94 00:00:17 v #486 > > then 00:00:17 v #487 > > │ 00:00:09 v #251 > > │ true 00:00:17 v #488 > > │ 00:00:09 v #252 > > │ else 00:00:17 v #489 > > │ 00:00:09 v #253 > > │ 00:00:17 v #490 > > method1(v94) 00:00:17 v #491 > > │ 00:00:09 v #254 > > │ let v99 : 00:00:17 v #492 > > string = "__assert_eq'" 00:00:17 v #493 > > │ 00:00:09 v #255 > > │ let v100 : 00:00:17 v #494 > > string = $"{v99} / actual: %A{v74} / expected: 00:00:17 v #495 > > │ 00:00:09 v #256 > > %A{v93}" 00:00:17 v #496 > > │ 00:00:09 v #257 > > │ let v103 : 00:00:17 v #497 > > unit = () 00:00:17 v #498 > > │ 00:00:09 v #258 > > │ let v104 : 00:00:17 v #499 > > (unit -> unit) = closure0(v100) 00:00:17 v #500 > > │ 00:00:09 v #259 > > │ let v105 : 00:00:17 v #501 > > unit = (fun () -> v104 (); v103) () 00:00:17 v #502 > > │ 00:00:09 v #260 > > │ let v107 : 00:00:17 v #503 > > bool = v98 = false 00:00:17 v #504 > > │ 00:00:09 v #261 > > │ if v107 then 00:00:17 v #505 > > │ 00:00:09 v #262 > > │ 00:00:17 v #506 > > failwith<unit> v100 00:00:17 v #507 > > │ 00:00:09 v #263 > > │ method0() 00:00:17 v #508 > > │ 00:00:09 v #264 > > │ 00:00:17 v #509 > > │ 00:00:09 v #265 > > │ __assert_eq' 00:00:17 v #510 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; 00:00:17 v #511 > > │ 00:00:09 v #266 > > "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #512 > > "ESTP"; "ESFP"; 00:00:17 v #513 > > │ 00:00:09 v #267 > > │ "ENFP"; "ENTP"; 00:00:17 v #514 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #515 > > │ 00:00:09 v #268 > > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 00:00:17 v #516 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #517 > > │ 00:00:09 v #269 > > "ESTP"; "ESFP"; 00:00:17 v #518 > > │ 00:00:09 v #270 > > │ "ENFP"; "ENTP"; 00:00:17 v #519 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #520 > > │ 00:00:09 v #271 > > │ 00:00:17 v #521 > > │ 00:00:09 v #272 > > 00:00:17 v #522 > > │ 00:00:09 v #273 > > ── spiral 00:00:17 v #523 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #524 > > │ 00:00:09 v #274 > > //// test 00:00:17 v #525 > > │ 00:00:09 v #275 > > //// print_code 00:00:17 v #526 > > │ 00:00:09 v #276 > > 00:00:17 v #527 > > │ 00:00:09 v #277 > > fun i => 00:00:17 v #528 > > │ 00:00:09 v #278 > > inl i_e = 00:00:17 v #529 > > │ 00:00:09 v #279 > > if i < 8 00:00:17 v #530 > > │ 00:00:09 v #280 > > then "I" 00:00:17 v #531 > > │ 00:00:09 v #281 > > else "E" 00:00:17 v #532 > > │ 00:00:09 v #282 > > inl s_n = 00:00:17 v #533 > > │ 00:00:09 v #283 > > inl group = (i / 2) % 2 00:00:17 v #534 > > │ 00:00:09 v #284 > > if group = 0 00:00:17 v #535 > > │ 00:00:09 v #285 > > then "S" 00:00:17 v #536 > > │ 00:00:09 v #286 > > else "N" 00:00:17 v #537 > > │ 00:00:09 v #287 > > inl t_f = 00:00:17 v #538 > > │ 00:00:09 v #288 > > match i % 4 with 00:00:17 v #539 > > │ 00:00:09 v #289 > > | 0 => "T" 00:00:17 v #540 > > │ 00:00:09 v #290 > > | 1 => "F" 00:00:17 v #541 > > │ 00:00:09 v #291 > > | 2 => "F" 00:00:17 v #542 > > │ 00:00:09 v #292 > > | _ => "T" 00:00:17 v #543 > > │ 00:00:09 v #293 > > inl j_p = 00:00:17 v #544 > > │ 00:00:09 v #294 > > if i < 4 00:00:17 v #545 > > │ 00:00:09 v #295 > > then "J" 00:00:17 v #546 > > │ 00:00:09 v #296 > > elif i < 12 00:00:17 v #547 > > │ 00:00:09 v #297 > > then "P" 00:00:17 v #548 > > │ 00:00:09 v #298 > > else "J" 00:00:17 v #549 > > │ 00:00:09 v #299 > > $'$"{!i_e}{!s_n}{!t_f}{!j_p}"' 00:00:17 v #550 > > │ 00:00:09 v #300 > > |> listm.init 16i32 00:00:17 v #551 > > │ 00:00:09 v #301 > > |> listm'.box 00:00:17 v #552 > > │ 00:00:09 v #302 > > |> listm'.to_array' 00:00:17 v #553 > > │ 00:00:09 v #303 > > |> _assert_eq' ;[[ 00:00:17 v #554 > > │ 00:00:09 v #304 > > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" 00:00:17 v #555 > > │ 00:00:09 v #305 > > "ISTP"; "ISFP"; "INFP"; "INTP" 00:00:17 v #556 > > │ 00:00:09 v #306 > > "ESTP"; "ESFP"; "ENFP"; "ENTP" 00:00:17 v #557 > > │ 00:00:09 v #307 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" 00:00:17 v #558 > > │ 00:00:09 v #308 > > ]] 00:00:17 v #559 > > │ 00:00:10 v #309 > > 00:00:17 v #560 > > │ 00:00:10 v #310 > > ── [ 276.70ms - stdout ] 00:00:17 v #561 > > ─────────────────────────────────────────────────────── 00:00:17 v #562 > > │ 00:00:10 v #311 > > │ let rec method1 00:00:17 v #563 > > (v0 : bool) : bool = 00:00:17 v #564 > > │ 00:00:10 v #312 > > │ v0 00:00:17 v #565 > > │ 00:00:10 v #313 > > │ and closure0 (v0 00:00:17 v #566 > > : string) () : unit = 00:00:17 v #567 > > │ 00:00:10 v #314 > > │ let v1 : 00:00:17 v #568 > > (string -> unit) = System.Console.WriteLine 00:00:17 v #569 > > │ 00:00:10 v #315 > > │ v1 v0 00:00:17 v #570 > > │ 00:00:10 v #316 > > │ and method0 () : 00:00:17 v #571 > > unit = 00:00:17 v #572 > > │ 00:00:10 v #317 > > │ let v0 : 00:00:17 v #573 > > string = "I" 00:00:17 v #574 > > │ 00:00:10 v #318 > > │ let v1 : 00:00:17 v #575 > > string = "S" 00:00:17 v #576 > > │ 00:00:10 v #319 > > │ let v2 : 00:00:17 v #577 > > string = "T" 00:00:17 v #578 > > │ 00:00:10 v #320 > > │ let v3 : 00:00:17 v #579 > > string = "J" 00:00:17 v #580 > > │ 00:00:10 v #321 > > │ let v4 : 00:00:17 v #581 > > string = $"{v0}{v1}{v2}{v3}" 00:00:17 v #582 > > │ 00:00:10 v #322 > > │ let v5 : 00:00:17 v #583 > > string = "F" 00:00:17 v #584 > > │ 00:00:10 v #323 > > │ let v6 : 00:00:17 v #585 > > string = $"{v0}{v1}{v5}{v3}" 00:00:17 v #586 > > │ 00:00:10 v #324 > > │ let v7 : 00:00:17 v #587 > > string = "N" 00:00:17 v #588 > > │ 00:00:10 v #325 > > │ let v8 : 00:00:17 v #589 > > string = $"{v0}{v7}{v5}{v3}" 00:00:17 v #590 > > │ 00:00:10 v #326 > > │ let v9 : 00:00:17 v #591 > > string = $"{v0}{v7}{v2}{v3}" 00:00:17 v #592 > > │ 00:00:10 v #327 > > │ let v10 : 00:00:17 v #593 > > string = "P" 00:00:17 v #594 > > │ 00:00:10 v #328 > > │ let v11 : 00:00:17 v #595 > > string = $"{v0}{v1}{v2}{v10}" 00:00:17 v #596 > > │ 00:00:10 v #329 > > │ let v12 : 00:00:17 v #597 > > string = $"{v0}{v1}{v5}{v10}" 00:00:17 v #598 > > │ 00:00:10 v #330 > > │ let v13 : 00:00:17 v #599 > > string = $"{v0}{v7}{v5}{v10}" 00:00:17 v #600 > > │ 00:00:10 v #331 > > │ let v14 : 00:00:17 v #601 > > string = $"{v0}{v7}{v2}{v10}" 00:00:17 v #602 > > │ 00:00:10 v #332 > > │ let v15 : 00:00:17 v #603 > > string = "E" 00:00:17 v #604 > > │ 00:00:10 v #333 > > │ let v16 : 00:00:17 v #605 > > string = $"{v15}{v1}{v2}{v10}" 00:00:17 v #606 > > │ 00:00:10 v #334 > > │ let v17 : 00:00:17 v #607 > > string = $"{v15}{v1}{v5}{v10}" 00:00:17 v #608 > > │ 00:00:10 v #335 > > │ let v18 : 00:00:17 v #609 > > string = $"{v15}{v7}{v5}{v10}" 00:00:17 v #610 > > │ 00:00:10 v #336 > > │ let v19 : 00:00:17 v #611 > > string = $"{v15}{v7}{v2}{v10}" 00:00:17 v #612 > > │ 00:00:10 v #337 > > │ let v20 : 00:00:17 v #613 > > string = $"{v15}{v1}{v2}{v3}" 00:00:17 v #614 > > │ 00:00:10 v #338 > > │ let v21 : 00:00:17 v #615 > > string = $"{v15}{v1}{v5}{v3}" 00:00:17 v #616 > > │ 00:00:10 v #339 > > │ let v22 : 00:00:17 v #617 > > string = $"{v15}{v7}{v5}{v3}" 00:00:17 v #618 > > │ 00:00:10 v #340 > > │ let v23 : 00:00:17 v #619 > > string = $"{v15}{v7}{v2}{v3}" 00:00:17 v #620 > > │ 00:00:10 v #341 > > │ let v24 : 00:00:17 v #621 > > string list = [] 00:00:17 v #622 > > │ 00:00:10 v #342 > > │ let v25 : 00:00:17 v #623 > > string list = v23 :: v24 00:00:17 v #624 > > │ 00:00:10 v #343 > > │ let v28 : 00:00:17 v #625 > > string list = v22 :: v25 00:00:17 v #626 > > │ 00:00:10 v #344 > > │ let v31 : 00:00:17 v #627 > > string list = v21 :: v28 00:00:17 v #628 > > │ 00:00:10 v #345 > > │ let v34 : 00:00:17 v #629 > > string list = v20 :: v31 00:00:17 v #630 > > │ 00:00:10 v #346 > > │ let v37 : 00:00:17 v #631 > > string list = v19 :: v34 00:00:17 v #632 > > │ 00:00:10 v #347 > > │ let v40 : 00:00:17 v #633 > > string list = v18 :: v37 00:00:17 v #634 > > │ 00:00:10 v #348 > > │ let v43 : 00:00:17 v #635 > > string list = v17 :: v40 00:00:17 v #636 > > │ 00:00:10 v #349 > > │ let v46 : 00:00:17 v #637 > > string list = v16 :: v43 00:00:17 v #638 > > │ 00:00:10 v #350 > > │ let v49 : 00:00:17 v #639 > > string list = v14 :: v46 00:00:17 v #640 > > │ 00:00:10 v #351 > > │ let v52 : 00:00:17 v #641 > > string list = v13 :: v49 00:00:17 v #642 > > │ 00:00:10 v #352 > > │ let v55 : 00:00:17 v #643 > > string list = v12 :: v52 00:00:17 v #644 > > │ 00:00:10 v #353 > > │ let v58 : 00:00:17 v #645 > > string list = v11 :: v55 00:00:17 v #646 > > │ 00:00:10 v #354 > > │ let v61 : 00:00:17 v #647 > > string list = v9 :: v58 00:00:17 v #648 > > │ 00:00:10 v #355 > > │ let v64 : 00:00:17 v #649 > > string list = v8 :: v61 00:00:17 v #650 > > │ 00:00:10 v #356 > > │ let v67 : 00:00:17 v #651 > > string list = v6 :: v64 00:00:17 v #652 > > │ 00:00:10 v #357 > > │ let v70 : 00:00:17 v #653 > > string list = v4 :: v67 00:00:17 v #654 > > │ 00:00:10 v #358 > > │ let v73 : 00:00:17 v #655 > > (string list -> (string [])) = List.toArray 00:00:17 v #656 > > │ 00:00:10 v #359 > > │ let v74 : 00:00:17 v #657 > > (string []) = v73 v70 00:00:17 v #658 > > │ 00:00:10 v #360 > > │ let v77 : 00:00:17 v #659 > > string = "ISTJ" 00:00:17 v #660 > > │ 00:00:10 v #361 > > │ let v78 : 00:00:17 v #661 > > string = "ISFJ" 00:00:17 v #662 > > │ 00:00:10 v #362 > > │ let v79 : 00:00:17 v #663 > > string = "INFJ" 00:00:17 v #664 > > │ 00:00:10 v #363 > > │ let v80 : 00:00:17 v #665 > > string = "INTJ" 00:00:17 v #666 > > │ 00:00:10 v #364 > > │ let v81 : 00:00:17 v #667 > > string = "ISTP" 00:00:17 v #668 > > │ 00:00:10 v #365 > > │ let v82 : 00:00:17 v #669 > > string = "ISFP" 00:00:17 v #670 > > │ 00:00:10 v #366 > > │ let v83 : 00:00:17 v #671 > > string = "INFP" 00:00:17 v #672 > > │ 00:00:10 v #367 > > │ let v84 : 00:00:17 v #673 > > string = "INTP" 00:00:17 v #674 > > │ 00:00:10 v #368 > > │ let v85 : 00:00:17 v #675 > > string = "ESTP" 00:00:17 v #676 > > │ 00:00:10 v #369 > > │ let v86 : 00:00:17 v #677 > > string = "ESFP" 00:00:17 v #678 > > │ 00:00:10 v #370 > > │ let v87 : 00:00:17 v #679 > > string = "ENFP" 00:00:17 v #680 > > │ 00:00:10 v #371 > > │ let v88 : 00:00:17 v #681 > > string = "ENTP" 00:00:17 v #682 > > │ 00:00:10 v #372 > > │ let v89 : 00:00:17 v #683 > > string = "ESTJ" 00:00:17 v #684 > > │ 00:00:10 v #373 > > │ let v90 : 00:00:17 v #685 > > string = "ESFJ" 00:00:17 v #686 > > │ 00:00:10 v #374 > > │ let v91 : 00:00:17 v #687 > > string = "ENFJ" 00:00:17 v #688 > > │ 00:00:10 v #375 > > │ let v92 : 00:00:17 v #689 > > string = "ENTJ" 00:00:17 v #690 > > │ 00:00:10 v #376 > > │ let v93 : 00:00:17 v #691 > > (string []) = [|v77; v78; v79; v80; v81; v82; 00:00:17 v #692 > > │ 00:00:10 v #377 > > v83; v84; v85; v86; v87; v88; v89; 00:00:17 v #693 > > v90; v91; v92|] 00:00:17 v #694 > > │ 00:00:10 v #378 > > │ let v94 : 00:00:17 v #695 > > bool = v74 = v93 00:00:17 v #696 > > │ 00:00:10 v #379 > > │ let v98 : 00:00:17 v #697 > > bool = 00:00:17 v #698 > > │ 00:00:10 v #380 > > │ if v94 00:00:17 v #699 > > then 00:00:17 v #700 > > │ 00:00:10 v #381 > > │ true 00:00:17 v #701 > > │ 00:00:10 v #382 > > │ else 00:00:17 v #702 > > │ 00:00:10 v #383 > > │ 00:00:17 v #703 > > method1(v94) 00:00:17 v #704 > > │ 00:00:10 v #384 > > │ let v99 : 00:00:17 v #705 > > string = "__assert_eq'" 00:00:17 v #706 > > │ 00:00:10 v #385 > > │ let v100 : 00:00:17 v #707 > > string = $"{v99} / actual: %A{v74} / expected: 00:00:17 v #708 > > │ 00:00:10 v #386 > > %A{v93}" 00:00:17 v #709 > > │ 00:00:10 v #387 > > │ let v103 : 00:00:17 v #710 > > unit = () 00:00:17 v #711 > > │ 00:00:10 v #388 > > │ let v104 : 00:00:17 v #712 > > (unit -> unit) = closure0(v100) 00:00:17 v #713 > > │ 00:00:10 v #389 > > │ let v105 : 00:00:17 v #714 > > unit = (fun () -> v104 (); v103) () 00:00:17 v #715 > > │ 00:00:10 v #390 > > │ let v107 : 00:00:17 v #716 > > bool = v98 = false 00:00:17 v #717 > > │ 00:00:10 v #391 > > │ if v107 then 00:00:17 v #718 > > │ 00:00:10 v #392 > > │ 00:00:17 v #719 > > failwith<unit> v100 00:00:17 v #720 > > │ 00:00:10 v #393 > > │ method0() 00:00:17 v #721 > > │ 00:00:10 v #394 > > │ 00:00:17 v #722 > > │ 00:00:10 v #395 > > │ __assert_eq' 00:00:17 v #723 > > actual: [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; 00:00:17 v #724 > > │ 00:00:10 v #396 > > "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #725 > > "ESTP"; "ESFP"; 00:00:17 v #726 > > │ 00:00:10 v #397 > > │ "ENFP"; "ENTP"; 00:00:17 v #727 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #728 > > │ 00:00:10 v #398 > > expected: [|"ISTJ"; "ISFJ"; "INFJ"; 00:00:17 v #729 > > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; 00:00:17 v #730 > > │ 00:00:10 v #399 > > "ESTP"; "ESFP"; 00:00:17 v #731 > > │ 00:00:10 v #400 > > │ "ENFP"; "ENTP"; 00:00:17 v #732 > > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ"|] 00:00:17 v #733 > > │ 00:00:10 v #401 > > │ 00:00:17 v #734 > > │ 00:00:11 v #402 > > 00:00:17 v #735 > > │ 00:00:11 v #403 > > ── fsharp 00:00:17 v #736 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #737 > > │ 00:00:11 v #404 > > type PhonologicalFeature = 00:00:17 v #738 > > │ 00:00:11 v #405 > > | VowelFeature of 00:00:17 v #739 > > │ 00:00:11 v #406 > > height: Height 00:00:17 v #740 > > │ 00:00:11 v #407 > > * backness: Backness 00:00:17 v #741 > > │ 00:00:11 v #408 > > * roundedness: Roundedness 00:00:17 v #742 > > │ 00:00:11 v #409 > > * tone: Option<Tone> 00:00:17 v #743 > > │ 00:00:11 v #410 > > * stress: Option<Stress> 00:00:17 v #744 > > │ 00:00:11 v #411 > > * length: Option<Length> 00:00:17 v #745 > > │ 00:00:11 v #412 > > | ConsonantFeature of 00:00:17 v #746 > > │ 00:00:11 v #413 > > place: PlaceOfArticulation 00:00:17 v #747 > > │ 00:00:11 v #414 > > * manner: 00:00:17 v #748 > > MannerOfArticulation 00:00:17 v #749 > > │ 00:00:11 v #415 > > * voicing: Voicing 00:00:17 v #750 > > │ 00:00:11 v #416 > > * length: Option<Length> 00:00:17 v #751 > > │ 00:00:11 v #417 > > | VowelHarmonyFeature 00:00:17 v #752 > > │ 00:00:11 v #418 > > | PitchAccentFeature 00:00:17 v #753 > > │ 00:00:11 v #419 > > 00:00:17 v #754 > > │ 00:00:11 v #420 > > and Stress = Primary | Secondary 00:00:17 v #755 > > │ 00:00:11 v #421 > > and Length = Long | Short | HalfLong 00:00:17 v #756 > > │ 00:00:11 v #422 > > 00:00:17 v #757 > > │ 00:00:11 v #423 > > and Height = 00:00:17 v #758 > > │ 00:00:11 v #424 > > | High | NearHigh | HighMid 00:00:17 v #759 > > │ 00:00:11 v #425 > > | Mid | LowMid | NearLow 00:00:17 v #760 > > │ 00:00:11 v #426 > > | Low 00:00:17 v #761 > > │ 00:00:11 v #427 > > 00:00:17 v #762 > > │ 00:00:11 v #428 > > and Backness = Front | Central | 00:00:17 v #763 > > Back 00:00:17 v #764 > > │ 00:00:11 v #429 > > 00:00:17 v #765 > > │ 00:00:11 v #430 > > and Roundedness = Rounded | 00:00:17 v #766 > > Unrounded 00:00:17 v #767 > > │ 00:00:11 v #431 > > 00:00:17 v #768 > > │ 00:00:11 v #432 > > and PlaceOfArticulation = 00:00:17 v #769 > > │ 00:00:11 v #433 > > | Bilabial | Labiodental | 00:00:17 v #770 > > Dental 00:00:17 v #771 > > │ 00:00:11 v #434 > > | Alveolar | Postalveolar | 00:00:17 v #772 > > Retroflex 00:00:17 v #773 > > │ 00:00:11 v #435 > > | Palatal | Velar | Uvular 00:00:17 v #774 > > │ 00:00:11 v #436 > > | Pharyngeal | Epiglottal | 00:00:17 v #775 > > Glottal 00:00:17 v #776 > > │ 00:00:11 v #437 > > 00:00:17 v #777 > > │ 00:00:11 v #438 > > and MannerOfArticulation = 00:00:17 v #778 > > │ 00:00:11 v #439 > > | Plosive | Nasal | Trill 00:00:17 v #779 > > │ 00:00:11 v #440 > > | TapOrFlap | Fricative | 00:00:17 v #780 > > LateralFricative 00:00:17 v #781 > > │ 00:00:11 v #441 > > | Approximant | 00:00:17 v #782 > > LateralApproximant 00:00:17 v #783 > > │ 00:00:11 v #442 > > 00:00:17 v #784 > > │ 00:00:11 v #443 > > and Voicing = Voiced | Voiceless 00:00:17 v #785 > > │ 00:00:11 v #444 > > 00:00:17 v #786 > > │ 00:00:11 v #445 > > and SecondaryArticulation = 00:00:17 v #787 > > │ 00:00:11 v #446 > > | Labialization | Palatalization 00:00:17 v #788 > > | Velarization 00:00:17 v #789 > > │ 00:00:11 v #447 > > | Pharyngealization | Aspiration 00:00:17 v #790 > > │ 00:00:11 v #448 > > 00:00:17 v #791 > > │ 00:00:11 v #449 > > and Tone = 00:00:17 v #792 > > │ 00:00:11 v #450 > > | LevelTone of int 00:00:17 v #793 > > │ 00:00:11 v #451 > > | ContourTone of int list 00:00:17 v #794 > > │ 00:00:11 v #452 > > 00:00:17 v #795 > > │ 00:00:11 v #453 > > and MorphologicalFeature = 00:00:17 v #796 > > │ 00:00:11 v #454 > > | RootFeature of string 00:00:17 v #797 > > │ 00:00:11 v #455 > > | AffixFeature of AffixType * 00:00:17 v #798 > > string 00:00:17 v #799 > > │ 00:00:11 v #456 > > | IncorporationFeature of string 00:00:17 v #800 > > * MorphologicalFeature 00:00:17 v #801 > > │ 00:00:11 v #457 > > | NonConcatenativePattern of 00:00:17 v #802 > > string * string 00:00:17 v #803 > > │ 00:00:11 v #458 > > | AgglutinativeAffixFeature of 00:00:17 v #804 > > AgglutinativeAffixType * string 00:00:17 v #805 > > │ 00:00:11 v #459 > > | HonorificFeature of 00:00:17 v #806 > > HonorificType * string 00:00:17 v #807 > > │ 00:00:11 v #460 > > 00:00:17 v #808 > > │ 00:00:11 v #461 > > and AgglutinativeAffixType = Suffix 00:00:17 v #809 > > | Prefix 00:00:17 v #810 > > │ 00:00:11 v #462 > > 00:00:17 v #811 > > │ 00:00:11 v #463 > > and HonorificType = VerbHonorific | 00:00:17 v #812 > > NounHonorific 00:00:17 v #813 > > │ 00:00:11 v #464 > > 00:00:17 v #814 > > │ 00:00:11 v #465 > > and AffixType = 00:00:17 v #815 > > │ 00:00:11 v #466 > > | Prefix | Suffix | Infix 00:00:17 v #816 > > │ 00:00:11 v #467 > > | Circumfix 00:00:17 v #817 > > │ 00:00:11 v #468 > > 00:00:17 v #818 > > │ 00:00:11 v #469 > > type SyntacticFeature = 00:00:17 v #819 > > │ 00:00:11 v #470 > > | WordFeature of 00:00:17 v #820 > > MorphologicalFeature list * LexicalCategory 00:00:17 v #821 > > │ 00:00:11 v #471 > > | PhraseFeature of PhraseType * 00:00:17 v #822 > > SyntacticFeature list 00:00:17 v #823 > > │ 00:00:11 v #472 > > | GrammaticalRelation of 00:00:17 v #824 > > GrammaticalRelationType * SyntacticFeature list 00:00:17 v #825 > > │ 00:00:11 v #473 > > | SOVOrderFeature 00:00:17 v #826 > > │ 00:00:11 v #474 > > | TopicCommentFeature 00:00:17 v #827 > > │ 00:00:11 v #475 > > 00:00:17 v #828 > > │ 00:00:11 v #476 > > and GrammaticalRelationType = 00:00:17 v #829 > > │ 00:00:11 v #477 > > | Ergative | Absolutive | 00:00:17 v #830 > > Nominative 00:00:17 v #831 > > │ 00:00:11 v #478 > > | Accusative 00:00:17 v #832 > > │ 00:00:11 v #479 > > 00:00:17 v #833 > > │ 00:00:11 v #480 > > and LexicalCategory = 00:00:17 v #834 > > │ 00:00:11 v #481 > > | Noun | Verb | Adjective 00:00:17 v #835 > > │ 00:00:11 v #482 > > | Adverb | Pronoun | Preposition 00:00:17 v #836 > > │ 00:00:11 v #483 > > | Conjunction | Determiner | 00:00:17 v #837 > > Interjection 00:00:17 v #838 > > │ 00:00:11 v #484 > > 00:00:17 v #839 > > │ 00:00:11 v #485 > > and PhraseType = 00:00:17 v #840 > > │ 00:00:11 v #486 > > | NP | VP | AP 00:00:17 v #841 > > │ 00:00:11 v #487 > > | PP | CP 00:00:17 v #842 > > │ 00:00:11 v #488 > > 00:00:17 v #843 > > │ 00:00:11 v #489 > > and SemanticFeature = 00:00:17 v #844 > > │ 00:00:11 v #490 > > | Meaning of string 00:00:17 v #845 > > │ 00:00:11 v #491 > > | SemanticRole of 00:00:17 v #846 > > SemanticRoleType * SemanticFeature 00:00:17 v #847 > > │ 00:00:11 v #492 > > 00:00:17 v #848 > > │ 00:00:11 v #493 > > and SemanticRoleType = 00:00:17 v #849 > > │ 00:00:11 v #494 > > | Agent | Patient | Instrument 00:00:17 v #850 > > │ 00:00:11 v #495 > > | Location | Time | Cause 00:00:17 v #851 > > │ 00:00:11 v #496 > > 00:00:17 v #852 > > │ 00:00:11 v #497 > > and PragmaticFeature = 00:00:17 v #853 > > │ 00:00:11 v #498 > > | UseContext of string 00:00:17 v #854 > > │ 00:00:11 v #499 > > | PolitenessLevel of Politeness 00:00:17 v #855 > > │ 00:00:11 v #500 > > | SpeechAct of SpeechActType 00:00:17 v #856 > > │ 00:00:11 v #501 > > | SpeechLevel of SpeechLevelType 00:00:17 v #857 > > │ 00:00:11 v #502 > > 00:00:17 v #858 > > │ 00:00:11 v #503 > > and Politeness = Formal | Informal | 00:00:17 v #859 > > Neutral 00:00:17 v #860 > > │ 00:00:11 v #504 > > 00:00:17 v #861 > > │ 00:00:11 v #505 > > and SpeechActType = 00:00:17 v #862 > > │ 00:00:11 v #506 > > | Assertive | Directive | 00:00:17 v #863 > > Commissive 00:00:17 v #864 > > │ 00:00:11 v #507 > > | Expressive | Declarative 00:00:17 v #865 > > │ 00:00:11 v #508 > > 00:00:17 v #866 > > │ 00:00:11 v #509 > > and SpeechLevelType = 00:00:17 v #867 > > │ 00:00:11 v #510 > > | FormalHigh | FormalLow | 00:00:17 v #868 > > InformalHigh 00:00:17 v #869 > > │ 00:00:11 v #511 > > | InformalLow | Neutral 00:00:17 v #870 > > │ 00:00:11 v #512 > > 00:00:17 v #871 > > │ 00:00:11 v #513 > > type LinguisticFeature = 00:00:17 v #872 > > │ 00:00:11 v #514 > > | Phonological of 00:00:17 v #873 > > PhonologicalFeature 00:00:17 v #874 > > │ 00:00:11 v #515 > > | Morphological of 00:00:17 v #875 > > MorphologicalFeature 00:00:17 v #876 > > │ 00:00:11 v #516 > > | Syntactic of SyntacticFeature 00:00:17 v #877 > > │ 00:00:11 v #517 > > | Semantic of SemanticFeature 00:00:17 v #878 > > │ 00:00:11 v #518 > > | Pragmatic of PragmaticFeature 00:00:17 v #879 > > │ 00:00:11 v #519 > > 00:00:17 v #880 > > │ 00:00:11 v #520 > > type LanguageConstruct = 00:00:17 v #881 > > │ 00:00:11 v #521 > > | LanguageElement of 00:00:17 v #882 > > LinguisticFeature 00:00:17 v #883 > > │ 00:00:11 v #522 > > | LanguageStructure of 00:00:17 v #884 > > LanguageConstruct list 00:00:17 v #885 > > │ 00:00:11 v #523 > > | TranslationElement of 00:00:17 v #886 > > TranslationFeature 00:00:17 v #887 > > │ 00:00:11 v #524 > > 00:00:17 v #888 > > │ 00:00:11 v #525 > > and TranslationFeature = 00:00:17 v #889 > > │ 00:00:11 v #526 > > | LinkedPhonological of 00:00:17 v #890 > > PhonologicalFeature * PhonologicalFeature 00:00:17 v #891 > > │ 00:00:11 v #527 > > | LinkedMorphological of 00:00:17 v #892 > > MorphologicalFeature * MorphologicalFeature 00:00:17 v #893 > > │ 00:00:11 v #528 > > | LinkedSyntactic of 00:00:17 v #894 > > SyntacticFeature * SyntacticFeature 00:00:17 v #895 > > │ 00:00:11 v #529 > > | LinkedSemantic of 00:00:17 v #896 > > SemanticFeature * SemanticFeature 00:00:17 v #897 > > │ 00:00:11 v #530 > > 00:00:17 v #898 > > │ 00:00:11 v #531 > > type Discourse = DiscourseUnit of 00:00:17 v #899 > > LanguageConstruct list 00:00:17 v #900 > > │ 00:00:11 v #532 > > 00:00:17 v #901 > > │ 00:00:11 v #533 > > type LanguageModel = 00:00:17 v #902 > > │ 00:00:11 v #534 > > | Model of discourse: Discourse 00:00:17 v #903 > > │ 00:00:11 v #535 > > 00:00:17 v #904 > > │ 00:00:11 v #536 > > ── fsharp 00:00:17 v #905 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #906 > > │ 00:00:11 v #537 > > let testEnglish = 00:00:17 v #907 > > │ 00:00:11 v #538 > > Model( 00:00:17 v #908 > > │ 00:00:11 v #539 > > DiscourseUnit [[ 00:00:17 v #909 > > │ 00:00:11 v #540 > > LanguageElement 00:00:17 v #910 > > (Phonological (ConsonantFeature (Alveolar, Nasal, 00:00:17 v #911 > > │ 00:00:11 v #541 > > Voiced, Some(HalfLong)))); 00:00:17 v #912 > > │ 00:00:11 v #542 > > LanguageElement 00:00:17 v #913 > > (Phonological (VowelFeature (High, Front, Unrounded, 00:00:17 v #914 > > │ 00:00:11 v #543 > > Some(LevelTone 1), Some(Primary), 00:00:17 v #915 > > Some(Short)))); 00:00:17 v #916 > > │ 00:00:11 v #544 > > LanguageElement 00:00:17 v #917 > > (Phonological (VowelFeature (Low, Front, Unrounded, 00:00:17 v #918 > > │ 00:00:11 v #545 > > Some(LevelTone 2), Some(Secondary), 00:00:17 v #919 > > Some(Long)))); 00:00:17 v #920 > > │ 00:00:11 v #546 > > LanguageElement 00:00:17 v #921 > > (Phonological (ConsonantFeature (Velar, Plosive, 00:00:17 v #922 > > │ 00:00:11 v #547 > > Voiceless, Some(HalfLong)))); 00:00:17 v #923 > > │ 00:00:11 v #548 > > LanguageElement 00:00:17 v #924 > > (Morphological (RootFeature "I")); 00:00:17 v #925 > > │ 00:00:11 v #549 > > LanguageElement 00:00:17 v #926 > > (Morphological (RootFeature "see")); 00:00:17 v #927 > > │ 00:00:11 v #550 > > LanguageElement 00:00:17 v #928 > > (Morphological (RootFeature "a")); 00:00:17 v #929 > > │ 00:00:11 v #551 > > LanguageElement 00:00:17 v #930 > > (Morphological (RootFeature "cat")); 00:00:17 v #931 > > │ 00:00:11 v #552 > > LanguageElement 00:00:17 v #932 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #933 > > │ 00:00:11 v #553 > > ([[RootFeature "I"]], Pronoun)]]))); 00:00:17 v #934 > > │ 00:00:11 v #554 > > LanguageElement 00:00:17 v #935 > > (Syntactic (PhraseFeature (VP, [[WordFeature 00:00:17 v #936 > > │ 00:00:11 v #555 > > ([[RootFeature "see"]], Verb)]]))); 00:00:17 v #937 > > │ 00:00:11 v #556 > > LanguageElement 00:00:17 v #938 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #939 > > │ 00:00:11 v #557 > > ([[RootFeature "a"; RootFeature 00:00:17 v #940 > > "cat"]], Noun)]]))); 00:00:17 v #941 > > │ 00:00:11 v #558 > > LanguageElement 00:00:17 v #942 > > (Semantic (Meaning "Perception act of a feline by 00:00:17 v #943 > > │ 00:00:11 v #559 > > the speaker")); 00:00:17 v #944 > > │ 00:00:11 v #560 > > LanguageElement 00:00:17 v #945 > > (Pragmatic (UseContext "Statement of an action being 00:00:17 v #946 > > │ 00:00:11 v #561 > > observed")) 00:00:17 v #947 > > │ 00:00:11 v #562 > > ]] 00:00:17 v #948 > > │ 00:00:11 v #563 > > ) 00:00:17 v #949 > > │ 00:00:11 v #564 > > 00:00:17 v #950 > > │ 00:00:11 v #565 > > let testPortuguese = 00:00:17 v #951 > > │ 00:00:11 v #566 > > Model( 00:00:17 v #952 > > │ 00:00:11 v #567 > > DiscourseUnit [[ 00:00:17 v #953 > > │ 00:00:11 v #568 > > LanguageElement 00:00:17 v #954 > > (Phonological (VowelFeature (High, Front, Unrounded, 00:00:17 v #955 > > │ 00:00:11 v #569 > > Some(LevelTone 1), Some(Primary), 00:00:17 v #956 > > Some(Short)))); 00:00:17 v #957 > > │ 00:00:11 v #570 > > LanguageElement 00:00:17 v #958 > > (Phonological (VowelFeature (Low, Front, Unrounded, 00:00:17 v #959 > > │ 00:00:11 v #571 > > Some(LevelTone 2), Some(Secondary), 00:00:17 v #960 > > Some(Long)))); 00:00:17 v #961 > > │ 00:00:11 v #572 > > LanguageElement 00:00:17 v #962 > > (Phonological (VowelFeature (Mid, Back, Rounded, 00:00:17 v #963 > > │ 00:00:11 v #573 > > Some(LevelTone 3), Some(Primary), 00:00:17 v #964 > > Some(Short)))); 00:00:17 v #965 > > │ 00:00:11 v #574 > > LanguageElement 00:00:17 v #966 > > (Phonological (ConsonantFeature (Velar, Plosive, 00:00:17 v #967 > > │ 00:00:11 v #575 > > Voiceless, Some(HalfLong)))); 00:00:17 v #968 > > │ 00:00:11 v #576 > > LanguageElement 00:00:17 v #969 > > (Morphological (RootFeature "Eu")); 00:00:17 v #970 > > │ 00:00:11 v #577 > > LanguageElement 00:00:17 v #971 > > (Morphological (RootFeature "ver" |> ignore; 00:00:17 v #972 > > │ 00:00:11 v #578 > > AffixFeature (Suffix, "o"))); 00:00:17 v #973 > > │ 00:00:11 v #579 > > LanguageElement 00:00:17 v #974 > > (Morphological (RootFeature "um")); 00:00:17 v #975 > > │ 00:00:11 v #580 > > LanguageElement 00:00:17 v #976 > > (Morphological (RootFeature "gato")); 00:00:17 v #977 > > │ 00:00:11 v #581 > > LanguageElement 00:00:17 v #978 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #979 > > │ 00:00:11 v #582 > > ([[RootFeature "Eu"]], 00:00:17 v #980 > > Pronoun)]]))); 00:00:17 v #981 > > │ 00:00:11 v #583 > > LanguageElement 00:00:17 v #982 > > (Syntactic (PhraseFeature (VP, [[WordFeature 00:00:17 v #983 > > │ 00:00:11 v #584 > > ([[RootFeature "vejo"]], Verb)]]))); 00:00:17 v #984 > > │ 00:00:11 v #585 > > LanguageElement 00:00:17 v #985 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #986 > > │ 00:00:11 v #586 > > ([[RootFeature "um"; RootFeature 00:00:17 v #987 > > "gato"]], Noun)]]))); 00:00:17 v #988 > > │ 00:00:11 v #587 > > LanguageElement 00:00:17 v #989 > > (Semantic (Meaning "Ação de percepção de um felino 00:00:17 v #990 > > │ 00:00:11 v #588 > > pelo falante")); 00:00:17 v #991 > > │ 00:00:11 v #589 > > LanguageElement 00:00:17 v #992 > > (Pragmatic (UseContext "Declaração de uma ação sendo 00:00:17 v #993 > > │ 00:00:11 v #590 > > observada")) 00:00:17 v #994 > > │ 00:00:11 v #591 > > ]] 00:00:17 v #995 > > │ 00:00:11 v #592 > > ) 00:00:17 v #996 > > │ 00:00:11 v #593 > > 00:00:17 v #997 > > │ 00:00:11 v #594 > > let testKorean = 00:00:17 v #998 > > │ 00:00:11 v #595 > > Model( 00:00:17 v #999 > > │ 00:00:11 v #596 > > DiscourseUnit [[ 00:00:17 v #1000 > > │ 00:00:11 v #597 > > LanguageElement 00:00:17 v #1001 > > (Phonological (ConsonantFeature (Alveolar, Nasal, 00:00:17 v #1002 > > │ 00:00:11 v #598 > > Voiced, Some(Short)))); 00:00:17 v #1003 > > │ 00:00:11 v #599 > > LanguageElement 00:00:17 v #1004 > > (Phonological (VowelFeature (High, Back, Rounded, 00:00:17 v #1005 > > │ 00:00:11 v #600 > > None, None, Some(Short)))); 00:00:17 v #1006 > > │ 00:00:11 v #601 > > LanguageElement 00:00:17 v #1007 > > (Phonological (VowelFeature (Mid, Front, Unrounded, 00:00:17 v #1008 > > │ 00:00:11 v #602 > > None, None, Some(Long)))); 00:00:17 v #1009 > > │ 00:00:11 v #603 > > LanguageElement 00:00:17 v #1010 > > (Phonological (ConsonantFeature (Bilabial, Plosive, 00:00:17 v #1011 > > │ 00:00:11 v #604 > > Voiceless, Some(Short)))); 00:00:17 v #1012 > > │ 00:00:11 v #605 > > LanguageElement 00:00:17 v #1013 > > (Morphological (RootFeature "나")); 00:00:17 v #1014 > > │ 00:00:11 v #606 > > LanguageElement 00:00:17 v #1015 > > (Morphological (RootFeature "보다")); 00:00:17 v #1016 > > │ 00:00:11 v #607 > > LanguageElement 00:00:17 v #1017 > > (Morphological (AffixFeature (Suffix, "아"))); 00:00:17 v #1018 > > │ 00:00:11 v #608 > > LanguageElement 00:00:17 v #1019 > > (Morphological (RootFeature "고양이")); 00:00:17 v #1020 > > │ 00:00:11 v #609 > > LanguageElement 00:00:17 v #1021 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #1022 > > │ 00:00:11 v #610 > > ([[RootFeature "나"]], 00:00:17 v #1023 > > Pronoun)]]))); 00:00:17 v #1024 > > │ 00:00:11 v #611 > > LanguageElement 00:00:17 v #1025 > > (Syntactic (PhraseFeature (VP, [[WordFeature 00:00:17 v #1026 > > │ 00:00:11 v #612 > > ([[RootFeature "보다"; AffixFeature 00:00:17 v #1027 > > (Suffix, "아")]], Verb)]]))); 00:00:17 v #1028 > > │ 00:00:11 v #613 > > LanguageElement 00:00:17 v #1029 > > (Syntactic (PhraseFeature (NP, [[WordFeature 00:00:17 v #1030 > > │ 00:00:11 v #614 > > ([[RootFeature "고양이"]], 00:00:17 v #1031 > > Noun)]]))); 00:00:17 v #1032 > > │ 00:00:11 v #615 > > LanguageElement 00:00:17 v #1033 > > (Semantic (Meaning "화자에 의한 고양이의 관찰 00:00:17 v #1034 > > │ 00:00:11 v #616 > > 행위")); 00:00:17 v #1035 > > │ 00:00:11 v #617 > > LanguageElement 00:00:17 v #1036 > > (Pragmatic (UseContext "관찰되고 있는 행동의 진술")) 00:00:17 v #1037 > > │ 00:00:11 v #618 > > ]] 00:00:17 v #1038 > > │ 00:00:11 v #619 > > ) 00:00:17 v #1039 > > │ 00:00:11 v #620 > > 00:00:17 v #1040 > > │ 00:00:11 v #621 > > ── markdown 00:00:17 v #1041 > > ──────────────────────────────────────────────────────────────────── 00:00:17 v #1042 > > │ 00:00:11 v #622 > > │ ## main 00:00:17 v #1043 > > │ 00:00:11 v #623 > > 00:00:17 v #1044 > > │ 00:00:11 v #624 > > ── spiral 00:00:17 v #1045 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #1046 > > │ 00:00:11 v #625 > > inl main (_args : array_base string) 00:00:17 v #1047 > > = 00:00:17 v #1048 > > │ 00:00:11 v #626 > > 0i32 00:00:17 v #1049 > > │ 00:00:11 v #627 > > 00:00:17 v #1050 > > │ 00:00:11 v #628 > > inl main () = 00:00:17 v #1051 > > │ 00:00:11 v #629 > > $'let main args = !main args' : 00:00:17 v #1052 > > () 00:00:17 v #1053 > > │ 00:00:12 v #630 > > 00:00:17 v #1054 > > │ 00:00:12 v #631 > > ── spiral 00:00:17 v #1055 > > ────────────────────────────────────────────────────────────────────── 00:00:17 v #1056 > > │ 00:00:12 v #632 > > inl app () = 00:00:17 v #1057 > > │ 00:00:12 v #633 > > "test" |> console.write_line 00:00:17 v #1058 > > │ 00:00:12 v #634 > > 0i32 00:00:17 v #1059 > > │ 00:00:12 v #635 > > 00:00:17 v #1060 > > │ 00:00:12 v #636 > > inl main () = 00:00:17 v #1061 > > │ 00:00:12 v #637 > > print_static "<test>" 00:00:17 v #1062 > > │ 00:00:12 v #638 > > 00:00:17 v #1063 > > │ 00:00:12 v #639 > > app 00:00:17 v #1064 > > │ 00:00:12 v #640 > > |> dyn 00:00:17 v #1065 > > │ 00:00:12 v #641 > > |> ignore 00:00:17 v #1066 > > │ 00:00:12 v #642 > > 00:00:17 v #1067 > > │ 00:00:12 v #643 > > print_static "</test>" 00:00:17 v #1068 > > │ 00:00:12 v #644 > 00:00:11 v #3 00:00:17 v #1069 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 00:00:17 v #1070 > > 27199 } 00:00:17 v #1071 > > │ 00:00:12 v #645 > 00:00:11 d #4 00:00:17 v #1072 > > runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", 00:00:17 v #1073 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb", 00:00:17 v #1074 > > "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter 00:00:17 v #1075 > > nbconvert 00:00:17 v #1076 > > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to 00:00:17 v #1077 > > html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables 00:00:17 v #1078 > > = Array(MutCell([])); on_line = None; stdin = None; trace = true; 00:00:17 v #1079 > > working_directory = None } } 00:00:17 v #1080 > > │ 00:00:13 v #646 > 00:00:12 v #5 ! [NbConvertApp] 00:00:17 v #1081 > > Converting notebook 00:00:17 v #1082 > > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to html 00:00:17 v #1083 > > │ 00:00:13 v #647 > 00:00:12 v #6 ! 00:00:17 v #1084 > > /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__i 00:00:17 v #1085 > > nit__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will 00:00:17 v #1086 > > become a hard error in future nbformat versions. You may want to use 00:00:17 v #1087 > > `normalize()` on your notebooks before validations (available since nbformat 00:00:17 v #1088 > > 5.1.4). Previous versions of nbformat are fixing this issue transparently, and 00:00:17 v #1089 > > will stop doing so in the future. 00:00:17 v #1090 > > │ 00:00:13 v #648 > 00:00:12 v #7 ! validate(nb) 00:00:17 v #1091 > > │ 00:00:13 v #649 > 00:00:12 v #8 ! 00:00:17 v #1092 > > /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/fi 00:00:17 v #1093 > > lters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on 00:00:17 v #1094 > > Python 3 00:00:17 v #1095 > > │ 00:00:13 v #650 > 00:00:12 v #9 ! return 00:00:17 v #1096 > > _pygments_highlight( 00:00:17 v #1097 > > │ 00:00:13 v #651 > 00:00:13 v #10 ! [NbConvertApp] 00:00:17 v #1098 > > Writing 332732 bytes to 00:00:17 v #1099 > > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html 00:00:17 v #1100 > > │ 00:00:13 v #652 > 00:00:13 v #11 00:00:17 v #1101 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 914 00:00:17 v #1102 > > } 00:00:17 v #1103 > > │ 00:00:13 v #653 > 00:00:13 d #12 spiral.run / dib 00:00:17 v #1104 > > / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 914 } 00:00:17 v #1105 > > │ 00:00:13 v #654 > 00:00:13 d #13 00:00:17 v #1106 > > runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter 00:00:17 v #1107 > > = 1; $path = 00:00:17 v #1108 > > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; 00:00:17 v #1109 > > (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { 00:00:17 v #1110 > > $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = 00:00:17 v #1111 > > pwsh -c "$counter = 1; $path = 00:00:17 v #1112 > > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; 00:00:17 v #1113 > > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { 00:00:17 v #1114 > > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = 00:00:17 v #1115 > > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; 00:00:17 v #1116 > > trace = true; working_directory = None } } 00:00:17 v #1117 > > │ 00:00:14 v #655 > 00:00:13 v #14 00:00:17 v #1118 > > runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:17 v #1119 > > │ 00:00:14 v #656 > 00:00:13 d #15 spiral.run / dib 00:00:17 v #1120 > > / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:17 v #1121 > > │ 00:00:14 v #657 > 00:00:13 d #16 spiral.run / dib 00:00:17 v #1122 > > / { exit_code = 0; result_length = 28172 } 00:00:17 v #1123 > > │ 00:00:14 d #658 runtime.execute_with_options_async / { 00:00:17 v #1124 > > exit_code = 0; output_length = 32177 } 00:00:17 v #1125 > > │ 00:00:14 d #1 main / executeCommand / exitCode: 0 00:00:17 v #1126 > > command: ../../../../deps/spiral/workspace/target/release/spiral dib --path 00:00:17 v #1127 > > test.dib --retries 3 00:00:17 v #1128 > > │ 00:00:17 v #1129 > > 00:00:17 v #1130 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:17 v #1131 > > │ ### parse the .dib file into .spi format with dibparser 00:00:17 v #1132 > > 00:00:17 v #1133 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:17 v #1134 > > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block 00:00:18 v #1135 > > 00:00:18 v #1136 > > ── [ 391.77ms - stdout ] ─────────────────────────────────────────────────────── 00:00:18 v #1137 > > │ 00:00:00 d #1 writeDibCode / output: Spi / path: 00:00:18 v #1138 > > test.dib 00:00:18 v #1139 > > │ 00:00:00 d #2 parseDibCode / output: Spi / file: 00:00:18 v #1140 > > test.dib 00:00:18 v #1141 > > │ 00:00:18 v #1142 > > 00:00:18 v #1143 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:18 v #1144 > > │ ### build .fsx file from .spi using supervisor 00:00:18 v #1145 > > 00:00:18 v #1146 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:18 v #1147 > > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi 00:00:18 v #1148 > > test.fsx } | Invoke-Block 00:00:19 v #1149 > <test> 00:00:19 v #1150 > </test> 00:00:19 v #1151 > > 00:00:19 v #1152 > > ── [ 1.09s - stdout ] ────────────────────────────────────────────────────────── 00:00:19 v #1153 > > │ 00:00:00 v #1 networking.test_port_open / { port = 00:00:19 v #1154 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection 00:00:19 v #1155 > > refused) } 00:00:19 v #1156 > > │ 00:00:00 v #2 networking.test_port_open / { port = 00:00:19 v #1157 > > 13806; ex = System.AggregateException: One or more errors occurred. (Connection 00:00:19 v #1158 > > refused) } 00:00:19 v #1159 > > │ 00:00:00 d #1 Supervisor.buildFile / takeWhileInclusive 00:00:19 v #1160 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:19 v #1161 > > │ 00:00:19 v #1162 > > │ 00:00:00 d #2 Supervisor.buildFile / AsyncSeq.scan 00:00:19 v #1163 > > path: test.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 00:00:19 v #1164 > > 0 / error: / outputContent: 00:00:19 v #1165 > > │ 00:00:19 v #1166 > > │ 00:00:00 d #3 Supervisor.buildFile / takeWhileInclusive 00:00:19 v #1167 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:19 v #1168 > > │ 00:00:19 v #1169 > > │ 00:00:00 v #4 Supervisor.sendJson / port: 13805 / json: 00:00:19 v #1170 > > {"FileOpen":{"spiText":"/// # test (Polyglot)\n\n/// ## main\ninl main (_args : 00:00:19 v #1171 > > array_base string) 00:00:19 v #1172 > > =...t\u003E\u0022\n","uri":"file:///home/runner/work/polyglot/polyglot/apps/spir 00:00:19 v #1173 > > al/temp/test/test.spi"}} / result: 00:00:19 v #1174 > > │ 00:00:00 v #5 Supervisor.sendJson / port: 13805 / json: 00:00:19 v #1175 > > {"BuildFile":{"backend":"Fsharp","uri":"file:///home/runner/work/polyglot/polygl 00:00:19 v #1176 > > ot/apps/spiral/temp/test/test.spi"}} / result: 00:00:19 v #1177 > > │ 00:00:00 d #6 Supervisor.buildFile / AsyncSeq.scan 00:00:19 v #1178 > > path: test.spi / errors: [] / outputContentResult: / typeErrorCount: 0 / retry: 00:00:19 v #1179 > > 0 / error: / outputContent: 00:00:19 v #1180 > > │ let rec closure1 () () : unit = 00:00:19 v #1181 > > │ let v0 : (string -> unit) = System.Console.WriteLine 00:00:19 v #1182 > > │ let v1 : string = "test" 00:00:19 v #1183 > > │ v0 v1 00:00:19 v #1184 > > │ and closure0 () () : int32 = 00:00:19 v #1185 > > │ let v0 : unit = () 00:00:19 v #1186 > > │ let v1 : (unit -> unit) = closure1() 00:00:19 v #1187 > > │ let v2 : unit = (fun () -> v1 (); v0) () 00:00:19 v #1188 > > │ 0 00:00:19 v #1189 > > │ let v0 : (unit -> int32) = closure0() 00:00:19 v #1190 > > │ () 00:00:19 v #1191 > > │ 00:00:19 v #1192 > > │ 00:00:00 d #7 Supervisor.buildFile / takeWhileInclusive 00:00:19 v #1193 > > / path: test.spi / errors: [] / typeErrorCount: 0 / retry: 0 / outputContent: 00:00:19 v #1194 > > │ let rec closure1 () () : unit = 00:00:19 v #1195 > > │ let v0 : (string -> unit) = System.Console.WriteLine 00:00:19 v #1196 > > │ let v1 : string = "test" 00:00:19 v #1197 > > │ v0 v1 00:00:19 v #1198 > > │ and closure0 () () : int32 = 00:00:19 v #1199 > > │ let v0 : unit = () 00:00:19 v #1200 > > │ let v1 : (unit -> unit) = closure1() 00:00:19 v #1201 > > │ let v2 : unit = (fun () -> v1 (); v0) () 00:00:19 v #1202 > > │ 0 00:00:19 v #1203 > > │ let v0 : (unit -> int32) = closure0() 00:00:19 v #1204 > > │ () 00:00:19 v #1205 > > │ 00:00:19 v #1206 > > │ 00:00:01 d #8 FileSystem.watchWithFilter / Disposing 00:00:19 v #1207 > > watch stream / filter: FileName, LastWrite 00:00:19 v #1208 > > │ 00:00:19 v #1209 > > 00:00:19 v #1210 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #1211 > > │ ## compile and format the project 00:00:19 v #1212 > > 00:00:19 v #1213 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:19 v #1214 > > │ ### compile project with fable targeting optimized rust 00:00:19 v #1215 > > 00:00:19 v #1216 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:19 v #1217 > > dotnet fable --optimize --lang rs --extension .rs 00:00:23 v #1218 > > 00:00:23 v #1219 > > ── [ 4.80s - stdout ] ────────────────────────────────────────────────────────── 00:00:23 v #1220 > > │ Fable 5.0.0-alpha.2: F# to Rust compiler (status: alpha) 00:00:23 v #1221 > > │ 00:00:23 v #1222 > > │ Thanks to the contributor! @MaxWilson 00:00:23 v #1223 > > │ Stand with Ukraine! https://standwithukraine.com.ua 00:00:23 v #1224 > > │ 00:00:23 v #1225 > > │ Parsing test.fsproj... 00:00:23 v #1226 > > │ Project and references (1 source files) parsed in 2480ms 00:00:23 v #1227 > > │ 00:00:23 v #1228 > > │ Started Fable compilation... 00:00:23 v #1229 > > │ 00:00:23 v #1230 > > │ Fable compilation finished in 1141ms 00:00:23 v #1231 > > │ 00:00:23 v #1232 > > │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support 00:00:23 v #1233 > > for F# static and module do bindings is disabled by default. It can be enabled 00:00:23 v #1234 > > with the 'static_do_bindings' feature. Use at your own risk! 00:00:23 v #1235 > > │ 00:00:23 v #1236 > > 00:00:23 v #1237 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #1238 > > │ ### fix formatting issues in the .rs file using regex and 00:00:23 v #1239 > > set-content 00:00:23 v #1240 > > 00:00:23 v #1241 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:23 v #1242 > > (Get-Content test.rs) ` 00:00:23 v #1243 > > -replace [[regex]]::Escape("),);"), "));" ` 00:00:23 v #1244 > > | FixRust ` 00:00:23 v #1245 > > | Set-Content test.rs 00:00:23 v #1246 > > 00:00:23 v #1247 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:23 v #1248 > > │ ### format the rust code using cargo fmt 00:00:23 v #1249 > > 00:00:23 v #1250 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:23 v #1251 > > cargo fmt -- 00:00:24 v #1252 > > 00:00:24 v #1253 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #1254 > > │ ## build and test the project 00:00:24 v #1255 > > 00:00:24 v #1256 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:24 v #1257 > > │ ### build the project in release mode using nightly rust 00:00:24 v #1258 > > compiler 00:00:24 v #1259 > > 00:00:24 v #1260 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:24 v #1261 > > cargo build --release 00:00:35 v #1262 > > 00:00:35 v #1263 > > ── [ 11.56s - stdout ] ───────────────────────────────────────────────────────── 00:00:35 v #1264 > > │ Compiling byteorder v1.5.0 00:00:35 v #1265 > > │ Compiling syn v2.0.90 00:00:35 v #1266 > > │ Compiling getrandom v0.2.15 00:00:35 v #1267 > > │ Compiling linux-raw-sys v0.4.14 00:00:35 v #1268 > > │ Compiling rand_core v0.6.4 00:00:35 v #1269 > > │ Compiling num-traits v0.2.19 00:00:35 v #1270 > > │ Compiling once_cell v1.20.2 00:00:35 v #1271 > > │ Compiling libm v0.2.11 00:00:35 v #1272 > > │ Compiling rustix v0.38.42 00:00:35 v #1273 > > │ Compiling wait-timeout v0.2.0 00:00:35 v #1274 > > │ Compiling bit-vec v0.6.3 00:00:35 v #1275 > > │ Compiling quick-error v1.2.3 00:00:35 v #1276 > > │ Compiling bit-set v0.5.3 00:00:35 v #1277 > > │ Compiling rand_xorshift v0.3.0 00:00:35 v #1278 > > │ Compiling memchr v2.7.4 00:00:35 v #1279 > > │ Compiling unarray v0.1.4 00:00:35 v #1280 > > │ Compiling nom v7.1.3 00:00:35 v #1281 > > │ Compiling tempfile v3.14.0 00:00:35 v #1282 > > │ Compiling zerocopy-derive v0.7.35 00:00:35 v #1283 > > │ Compiling thiserror-impl v1.0.69 00:00:35 v #1284 > > │ Compiling rusty-fork v0.3.0 00:00:35 v #1285 > > │ Compiling fable_library_rust v0.1.0 00:00:35 v #1286 > > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library- 00:00:35 v #1287 > > rust) 00:00:35 v #1288 > > │ Compiling zerocopy v0.7.35 00:00:35 v #1289 > > │ Compiling thiserror v1.0.69 00:00:35 v #1290 > > │ Compiling ppv-lite86 v0.2.20 00:00:35 v #1291 > > │ Compiling rand_chacha v0.3.1 00:00:35 v #1292 > > │ Compiling rand v0.8.5 00:00:35 v #1293 > > │ Compiling proptest v1.5.0 00:00:35 v #1294 > > │ Compiling spiral_temp_test v0.0.1 00:00:35 v #1295 > > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) 00:00:35 v #1296 > > │ Finished `release` profile [optimized] 00:00:35 v #1297 > > target(s) in 11.49s 00:00:35 v #1298 > > │ 00:00:35 v #1299 > > 00:00:35 v #1300 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:35 v #1301 > > │ ### run release tests with output enabled 00:00:35 v #1302 > > 00:00:35 v #1303 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:35 v #1304 > > { cargo test --release -- --show-output } | Invoke-Block 00:00:52 v #1305 > > 00:00:52 v #1306 > > ── [ 16.35s - stdout ] ───────────────────────────────────────────────────────── 00:00:52 v #1307 > > │ Compiling zerocopy v0.7.35 00:00:52 v #1308 > > │ Compiling bitflags v2.6.0 00:00:52 v #1309 > > │ Compiling linux-raw-sys v0.4.14 00:00:52 v #1310 > > │ Compiling once_cell v1.20.2 00:00:52 v #1311 > > │ Compiling fastrand v2.3.0 00:00:52 v #1312 > > │ Compiling wait-timeout v0.2.0 00:00:52 v #1313 > > │ Compiling fnv v1.0.7 00:00:52 v #1314 > > │ Compiling bit-vec v0.6.3 00:00:52 v #1315 > > │ Compiling rustix v0.38.42 00:00:52 v #1316 > > │ Compiling quick-error v1.2.3 00:00:52 v #1317 > > │ Compiling num-traits v0.2.19 00:00:52 v #1318 > > │ Compiling bit-set v0.5.3 00:00:52 v #1319 > > │ Compiling ppv-lite86 v0.2.20 00:00:52 v #1320 > > │ Compiling rand_xorshift v0.3.0 00:00:52 v #1321 > > │ Compiling memchr v2.7.4 00:00:52 v #1322 > > │ Compiling rand_chacha v0.3.1 00:00:52 v #1323 > > │ Compiling rand v0.8.5 00:00:52 v #1324 > > │ Compiling minimal-lexical v0.2.1 00:00:52 v #1325 > > │ Compiling lazy_static v1.5.0 00:00:52 v #1326 > > │ Compiling unarray v0.1.4 00:00:52 v #1327 > > │ Compiling nom v7.1.3 00:00:52 v #1328 > > │ Compiling fable_library_rust v0.1.0 00:00:52 v #1329 > > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library- 00:00:52 v #1330 > > rust) 00:00:52 v #1331 > > │ Compiling thiserror v1.0.69 00:00:52 v #1332 > > │ Compiling tempfile v3.14.0 00:00:52 v #1333 > > │ Compiling rusty-fork v0.3.0 00:00:52 v #1334 > > │ Compiling proptest v1.5.0 00:00:52 v #1335 > > │ Compiling spiral_temp_test v0.0.1 00:00:52 v #1336 > > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) 00:00:52 v #1337 > > │ Finished `release` profile [optimized] 00:00:52 v #1338 > > target(s) in 16.21s 00:00:52 v #1339 > > │ Running unittests main.rs 00:00:52 v #1340 > > (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_temp_t 00:00:52 v #1341 > > est-87f487a4cc8a01e4) 00:00:52 v #1342 > > │ 00:00:52 v #1343 > > │ running 3 tests 00:00:52 v #1344 > > │ test test_parse_number ... ok 00:00:52 v #1345 > > │ test prop_parse_format_idempotent ... ok 00:00:52 v #1346 > > │ test 00:00:52 v #1347 > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok 00:00:52 v #1348 > > │ 00:00:52 v #1349 > > │ successes: 00:00:52 v #1350 > > │ 00:00:52 v #1351 > > │ ---- prop_parse_format_idempotent stdout ---- 00:00:52 v #1352 > > │ input=StringLiteral("=/:~#'B9n{9 %T/!") 00:00:52 v #1353 > > │ input=Integer(-6075920877271696606) 00:00:52 v #1354 > > │ input=StringLiteral("?'?`?UxwIz*T") 00:00:52 v #1355 > > │ input=StringLiteral("&+*O)%TPv&<5+$_%`!E[qBL?f=vn") 00:00:52 v #1356 > > │ input=StringLiteral(":K2&Tb<)&zx?tsJ") 00:00:52 v #1357 > > │ input=Operator("=") 00:00:52 v #1358 > > │ input=Identifier("ZrNgAWmLB9tLq0Bm286S1hlDw4aLo7204") 00:00:52 v #1359 > > │ input=Identifier("SOC1cyt39ZR9HTz8Jr") 00:00:52 v #1360 > > │ input=Operator("=") 00:00:52 v #1361 > > │ input=StringLiteral("q^Hj0lwn<}w2{G^.2t<:K&'=%") 00:00:52 v #1362 > > │ input=StringLiteral("jwe-~") 00:00:52 v #1363 > > │ input=Operator("+") 00:00:52 v #1364 > > │ input=Comment("XYcR?$v%]U``'?uS4?'") 00:00:52 v #1365 > > │ input=StringLiteral("3=}':.d}{IIeT)VW1W3") 00:00:52 v #1366 > > │ input=StringLiteral("Dj=&['o'Q*V*%^Vem.0mw[@.]Z<$/1%P") 00:00:52 v #1367 > > │ input=Comment("/u{LG$B:/Tf[3$)^!*-;J>U\\z<Nn@/.") 00:00:52 v #1368 > > │ input=Comment("&jh|zOBTNZtTY@OvihVGCUb'<6O") 00:00:52 v #1369 > > │ input=Comment("W<1/pw.&z") 00:00:52 v #1370 > > │ input=Operator("(") 00:00:52 v #1371 > > │ input=Identifier("SrQJoj0LjcxVb32qR2iq") 00:00:52 v #1372 > > │ input=Identifier("v0TWu3wo7") 00:00:52 v #1373 > > │ input=StringLiteral("aq&$&xS*)`.hg: ") 00:00:52 v #1374 > > │ input=Identifier("WqsG5y") 00:00:52 v #1375 > > │ input=Identifier("H11Y0L2Qh93") 00:00:52 v #1376 > > │ input=Operator("-") 00:00:52 v #1377 > > │ input=Integer(3539436291965829299) 00:00:52 v #1378 > > │ input=Operator("+") 00:00:52 v #1379 > > │ input=Identifier("oEZ6iZFfY60668Z8Fjf7MI") 00:00:52 v #1380 > > │ input=Identifier("ZcKwSAzC2vR5Ef2NNy7xSXi") 00:00:52 v #1381 > > │ input=StringLiteral("!do") 00:00:52 v #1382 > > │ input=Comment("}K{+%Z>p$cPS.\"sa.%f>Id':y") 00:00:52 v #1383 > > │ input=Identifier("a") 00:00:52 v #1384 > > │ input=Comment("}~0(E%/1f&c4\\v*") 00:00:52 v #1385 > > │ input=Integer(-3018695139274067264) 00:00:52 v #1386 > > │ input=Comment("O\"04l") 00:00:52 v #1387 > > │ input=StringLiteral("FqkB") 00:00:52 v #1388 > > │ input=Integer(-2502296013314084334) 00:00:52 v #1389 > > │ input=Comment("`:fiV9%#/Yj<p}L\\8&,/E\\^Ff@") 00:00:52 v #1390 > > │ input=Integer(-5564709193590071508) 00:00:52 v #1391 > > │ input=Operator("/") 00:00:52 v #1392 > > │ input=StringLiteral("'`i_;:3B2<`Rs00Bh*D.z*/O`%o*{K?%") 00:00:52 v #1393 > > │ input=Comment("NGh*'ZK&'d&H_i*7|@Hu@]=") 00:00:52 v #1394 > > │ input=Operator("(") 00:00:52 v #1395 > > │ input=Operator("-") 00:00:52 v #1396 > > │ input=Operator(")") 00:00:52 v #1397 > > │ input=Identifier("ak9PAIhyBSBwUySEHjuVznh38z539") 00:00:52 v #1398 > > │ input=Integer(-9158871754335482743) 00:00:52 v #1399 > > │ input=Comment("g)$){`3Vd(r.<O]\\- <\".%q|t\"Fh`") 00:00:52 v #1400 > > │ input=Comment("/=z7$S$`{(") 00:00:52 v #1401 > > │ input=StringLiteral("xq") 00:00:52 v #1402 > > │ input=StringLiteral("hlEB{/&aX['_%.F") 00:00:52 v #1403 > > │ input=Integer(-5013284804278322246) 00:00:52 v #1404 > > │ input=Integer(-9156225990872938119) 00:00:52 v #1405 > > │ input=Comment("@5.g$eJxyGF$$") 00:00:52 v #1406 > > │ input=Comment("I\\m\"9U`/TCo$;!<") 00:00:52 v #1407 > > │ input=Comment("/F=.'&w=Ni<.j0") 00:00:52 v #1408 > > │ input=Integer(2621876919490419457) 00:00:52 v #1409 > > │ input=Integer(-5888048127209221418) 00:00:52 v #1410 > > │ input=Integer(3740898400280448253) 00:00:52 v #1411 > > │ input=Comment("5:y7]0j~vd$XMKG8{n/?`6!\\n+=") 00:00:52 v #1412 > > │ input=Comment("{OZN(BD?/%Uv?O(?Eg{x") 00:00:52 v #1413 > > │ input=Comment("C#/*/9.=`") 00:00:52 v #1414 > > │ input=Integer(4825049236143720905) 00:00:52 v #1415 > > │ input=Integer(2925725141483203369) 00:00:52 v #1416 > > │ input=Identifier("XI9RAKQ6J7ZSbHazNU10") 00:00:52 v #1417 > > │ input=Identifier("I6Wy8jhE4sSVDyB6YlAGKIFX2") 00:00:52 v #1418 > > │ input=Operator("+") 00:00:52 v #1419 > > │ input=Identifier("mwLm4dhtC") 00:00:52 v #1420 > > │ input=Comment("EsQs8P") 00:00:52 v #1421 > > │ input=Operator("(") 00:00:52 v #1422 > > │ input=Comment("&`V") 00:00:52 v #1423 > > │ input=Integer(-2559490585399499243) 00:00:52 v #1424 > > │ input=Identifier("Y0Mv8uJO") 00:00:52 v #1425 > > │ input=StringLiteral("e N") 00:00:52 v #1426 > > │ input=Integer(-4711536904061353973) 00:00:52 v #1427 > > │ input=Identifier("L3Yr88z82xX08Dm7") 00:00:52 v #1428 > > │ input=Operator("/") 00:00:52 v #1429 > > │ input=Comment("s") 00:00:52 v #1430 > > │ input=Integer(8816660999150516135) 00:00:52 v #1431 > > │ input=Integer(2614726536002691961) 00:00:52 v #1432 > > │ input=Comment("]?<-@pt,\"/zWhc/\"d") 00:00:52 v #1433 > > │ input=Integer(8317090324926709599) 00:00:52 v #1434 > > │ input=Operator("*") 00:00:52 v #1435 > > │ input=Integer(8624709993534111977) 00:00:52 v #1436 > > │ input=Operator(")") 00:00:52 v #1437 > > │ input=StringLiteral("W'?<]eiq.H|$") 00:00:52 v #1438 > > │ input=StringLiteral("") 00:00:52 v #1439 > > │ input=Operator("(") 00:00:52 v #1440 > > │ input=Comment("l`w/*:%D{2Kd!1aZ1I;}ZZNV<](m{b<b") 00:00:52 v #1441 > > │ input=Identifier("jl48LWws2Xu6DPeJ59WNCxPxkqe") 00:00:52 v #1442 > > │ input=StringLiteral("<~=$=m") 00:00:52 v #1443 > > │ input=Operator("(") 00:00:52 v #1444 > > │ input=StringLiteral("%") 00:00:52 v #1445 > > │ input=StringLiteral("#D<") 00:00:52 v #1446 > > │ input=Comment("/\"u*K$C]Vk+<!?C''{0") 00:00:52 v #1447 > > │ input=StringLiteral("lS/RB:K$%/y&Q/es$g") 00:00:52 v #1448 > > │ input=Operator(")") 00:00:52 v #1449 > > │ input=StringLiteral("nj8rX'}.U0&:m%%ZM'&@") 00:00:52 v #1450 > > │ input=Comment("?I^AQ?:|']f*y:{%nd;$*%z") 00:00:52 v #1451 > > │ input=Identifier("Lht1c3ND9IGe") 00:00:52 v #1452 > > │ input=Operator("/") 00:00:52 v #1453 > > │ input=Integer(3916730453184844045) 00:00:52 v #1454 > > │ input=Integer(-6582347173100598338) 00:00:52 v #1455 > > │ input=Identifier("fH4g4nJ1VmQ4DbF4xA8zgMtj4XDPRX7") 00:00:52 v #1456 > > │ input=Integer(-5687406964109938458) 00:00:52 v #1457 > > │ input=StringLiteral("NY*'Q^`2[>*,2xRm{m") 00:00:52 v #1458 > > │ input=Identifier("Z0bv7cd2eX6TX5A8Q") 00:00:52 v #1459 > > │ input=StringLiteral("|$M>qV{Bn%.*!h b$I?+") 00:00:52 v #1460 > > │ input=Identifier("ulOe3ms8UFPG7v4Y3E73oc6xOFNisQ2n") 00:00:52 v #1461 > > │ input=Identifier("Rc66H0D0k0wMWF7t") 00:00:52 v #1462 > > │ input=Comment("<3k>T^X|E%y!<") 00:00:52 v #1463 > > │ input=StringLiteral("Y.qZ&>,&]doNEOS$W?P{x{$m&=") 00:00:52 v #1464 > > │ input=Identifier("j6UQ1xi4Js9zH4eo3bjCT") 00:00:52 v #1465 > > │ input=StringLiteral("") 00:00:52 v #1466 > > │ input=Identifier("CH3mUr5022xybjbcFdnBc1PytV3cflnh6") 00:00:52 v #1467 > > │ input=Comment("?&'{!h2/Qy-rCloP.VcHbX s*") 00:00:52 v #1468 > > │ input=Operator("+") 00:00:52 v #1469 > > │ input=Operator("+") 00:00:52 v #1470 > > │ input=Identifier("Qr8u6F1rQqIJ6nM2") 00:00:52 v #1471 > > │ input=Integer(5237487949423782041) 00:00:52 v #1472 > > │ input=Identifier("uZ9f4P68Xk") 00:00:52 v #1473 > > │ input=StringLiteral(":/tTMP{=[``") 00:00:52 v #1474 > > │ input=StringLiteral("ZU{9?.") 00:00:52 v #1475 > > │ input=Comment("?%SHZc?RU8") 00:00:52 v #1476 > > │ input=Comment("?O'M{Z`T*$0Pj'D") 00:00:52 v #1477 > > │ input=Operator("(") 00:00:52 v #1478 > > │ input=Comment("#Xb/\".8*`-VZD") 00:00:52 v #1479 > > │ input=Operator("=") 00:00:52 v #1480 > > │ input=Identifier("B7J6r76E5xAP17w3oi9D78wv") 00:00:52 v #1481 > > │ input=Integer(7661345447498567285) 00:00:52 v #1482 > > │ input=Comment("3\"8ry$%Iyo2:?..`;=\\W?.r\"%_$=t.") 00:00:52 v #1483 > > │ input=StringLiteral("<8(hEB=:_v<u.tx{F=A`:'&V&") 00:00:52 v #1484 > > │ input=StringLiteral(" V]+]*:M{K%]!Y/zHbG$<") 00:00:52 v #1485 > > │ input=Identifier("dJk180e4NGcKEMfL21oWAfP3BEhLJK") 00:00:52 v #1486 > > │ input=Identifier("fDerOzT177o5KXHTiw2") 00:00:52 v #1487 > > │ input=StringLiteral("6(tt.<") 00:00:52 v #1488 > > │ input=Comment("=") 00:00:52 v #1489 > > │ input=Comment("/%O|`k$=g~<PAy|W'}H:/U=Fz") 00:00:52 v #1490 > > │ input=StringLiteral("2]<^f}nzJ:=&h;") 00:00:52 v #1491 > > │ input=Identifier("o6sj0MHsMfI1GHY5h189aIyx") 00:00:52 v #1492 > > │ input=Operator("-") 00:00:52 v #1493 > > │ input=Integer(6658473843937390927) 00:00:52 v #1494 > > │ input=Operator("*") 00:00:52 v #1495 > > │ input=Comment("Y*C`\\cM") 00:00:52 v #1496 > > │ input=Identifier("jUm198VWLKHctr") 00:00:52 v #1497 > > │ input=StringLiteral("n,q~b?a:9i%v?'ZBu/") 00:00:52 v #1498 > > │ input=Identifier("PGG977jHJtDD88u4fpSL54CDo") 00:00:52 v #1499 > > │ input=StringLiteral("+,iV") 00:00:52 v #1500 > > │ input=Identifier("Wvn1wTN9FSRsJmrB8cEBp1ca") 00:00:52 v #1501 > > │ input=Identifier("yUEO8") 00:00:52 v #1502 > > │ input=StringLiteral("R|!-hu.9:^`*R7!ZQMM") 00:00:52 v #1503 > > │ input=Operator("+") 00:00:52 v #1504 > > │ input=Integer(4092795728790592287) 00:00:52 v #1505 > > │ input=Identifier("MfCz2wG6tlFynT3BBB7ycBeVBq5YIPde") 00:00:52 v #1506 > > │ input=Identifier("x8o591R6pRCsyB4TxdYqSYDG") 00:00:52 v #1507 > > │ input=Comment("{:+]N*tI") 00:00:52 v #1508 > > │ input=Integer(-6504605009607190407) 00:00:52 v #1509 > > │ input=Comment("'") 00:00:52 v #1510 > > │ input=StringLiteral("ed~j") 00:00:52 v #1511 > > │ input=Operator("(") 00:00:52 v #1512 > > │ input=Integer(4417501979890867200) 00:00:52 v #1513 > > │ input=Integer(-6873855231960707640) 00:00:52 v #1514 > > │ input=StringLiteral("*j:{.4zW`@=0`$ ?GX.B9%*p*{c") 00:00:52 v #1515 > > │ input=StringLiteral("xOGuk/yp<") 00:00:52 v #1516 > > │ input=StringLiteral("Y#") 00:00:52 v #1517 > > │ input=Comment("ws<ieg5B?\\\"k") 00:00:52 v #1518 > > │ input=Operator("*") 00:00:52 v #1519 > > │ input=Operator(")") 00:00:52 v #1520 > > │ input=StringLiteral("uX[/$-$Ekj") 00:00:52 v #1521 > > │ input=Identifier("FFB8FWUEepbmoGdeV2clgCV3Rm83p8S") 00:00:52 v #1522 > > │ input=Operator("=") 00:00:52 v #1523 > > │ input=StringLiteral("'?Qc$>3R=}bk[$iWT{AJ*'.") 00:00:52 v #1524 > > │ input=Operator("/") 00:00:52 v #1525 > > │ input=Identifier("xlLppM2R2HE5L55TAE6QZpR") 00:00:52 v #1526 > > │ input=Comment(")N\"H'!`") 00:00:52 v #1527 > > │ input=StringLiteral("n32h>s=%TM:/]iI?_4#m}Md% _") 00:00:52 v #1528 > > │ input=Identifier("t5QAf") 00:00:52 v #1529 > > │ input=Comment("S{X_)B+o&-*wY?\"$%:+{q\"c7..&;`1AN") 00:00:52 v #1530 > > │ input=Operator("+") 00:00:52 v #1531 > > │ input=Integer(8732491302807793883) 00:00:52 v #1532 > > │ input=Comment("lJ&<d{'sO&~/xlv[$SQ\\:@") 00:00:52 v #1533 > > │ input=StringLiteral("XY0'`*R:P#fcX.~D'/~<7i%=<**e") 00:00:52 v #1534 > > │ input=Identifier("UhLXaOdO5DZAuwOH4VA6ZcGK") 00:00:52 v #1535 > > │ input=Operator("(") 00:00:52 v #1536 > > │ input=Identifier("iObeK5tSywXA7ABjzSVkQAMm") 00:00:52 v #1537 > > │ input=StringLiteral("{$%0m4p*^-B?azR'$&{'(v") 00:00:52 v #1538 > > │ input=Identifier("m5pvG32vb45pRJQ01ZZ4RpNL") 00:00:52 v #1539 > > │ input=Operator(")") 00:00:52 v #1540 > > │ input=Comment("8~al=BZb*Ct?4P*") 00:00:52 v #1541 > > │ input=Comment("uVf^>BE=,") 00:00:52 v #1542 > > │ input=Comment("]") 00:00:52 v #1543 > > │ input=Operator("*") 00:00:52 v #1544 > > │ input=Comment("+%:0\"Y*rof.+\\R=.UH\\5'$pLDE'pkU,x") 00:00:52 v #1545 > > │ input=Integer(-6627461318764824540) 00:00:52 v #1546 > > │ input=Comment("N?<*tg0//%WB9d&\"8") 00:00:52 v #1547 > > │ input=StringLiteral("Nu0&VqH9I!zV'.xMMK.i'-") 00:00:52 v #1548 > > │ input=Identifier("u93G4h2zZlf") 00:00:52 v #1549 > > │ input=Integer(-7077087526422020099) 00:00:52 v #1550 > > │ input=Operator("/") 00:00:52 v #1551 > > │ input=Operator("=") 00:00:52 v #1552 > > │ input=Integer(2805100313828271088) 00:00:52 v #1553 > > │ input=Integer(-4406949867990736757) 00:00:52 v #1554 > > │ input=StringLiteral("xwI=~6DJ") 00:00:52 v #1555 > > │ input=Comment(":j`HT] `") 00:00:52 v #1556 > > │ input=Identifier("cfvpqURq0pcmz5vg54K9YPrvy6p") 00:00:52 v #1557 > > │ input=Integer(6573343792342429276) 00:00:52 v #1558 > > │ input=Identifier("LTEIbql80UML9g8GR91tpVmvU50t0") 00:00:52 v #1559 > > │ input=Identifier("H3b83pHItIYi") 00:00:52 v #1560 > > │ input=Operator("+") 00:00:52 v #1561 > > │ input=Identifier("rtmvmaxLU7cAIg") 00:00:52 v #1562 > > │ input=Identifier("c") 00:00:52 v #1563 > > │ input=Identifier("BA7wAi6g2E3ml5qd9OcYfzf") 00:00:52 v #1564 > > │ input=Identifier("Qu0WckF90Cl8W456G9u1zMeQq") 00:00:52 v #1565 > > │ input=Operator("(") 00:00:52 v #1566 > > │ input=Operator("(") 00:00:52 v #1567 > > │ input=Operator(")") 00:00:52 v #1568 > > │ input=Comment("&H|]") 00:00:52 v #1569 > > │ input=StringLiteral(">u?") 00:00:52 v #1570 > > │ input=StringLiteral("s*5}qS|<y;<kL") 00:00:52 v #1571 > > │ input=Comment("<!`%8%%'b.x&a(/|k,:(O=uEv") 00:00:52 v #1572 > > │ input=Comment("&_/i;\\:jB@!:'.7Pz>|9\\Qu>=:9") 00:00:52 v #1573 > > │ input=Identifier("qLOkCGCpOc") 00:00:52 v #1574 > > │ input=Operator(")") 00:00:52 v #1575 > > │ input=Operator("/") 00:00:52 v #1576 > > │ input=Identifier("RqZIhEC40z4l0u57Z1") 00:00:52 v #1577 > > │ input=StringLiteral("x$&*S&%{hiR[[") 00:00:52 v #1578 > > │ input=Operator("*") 00:00:52 v #1579 > > │ input=Integer(4955660966649903018) 00:00:52 v #1580 > > │ input=Integer(-1957484583598451340) 00:00:52 v #1581 > > │ input=Identifier("zTU0Xmud1J1IvI4cWN92") 00:00:52 v #1582 > > │ input=Identifier("fSgONcvxCqIa0uvhn") 00:00:52 v #1583 > > │ input=Comment("T*K`?C.%`/mr9*`?f6m") 00:00:52 v #1584 > > │ input=Identifier("t05w6Pc8YnBj88s") 00:00:52 v #1585 > > │ input=Integer(-3183715051281541060) 00:00:52 v #1586 > > │ input=Operator("/") 00:00:52 v #1587 > > │ input=Comment("ff}D=?1&{7@B:`&5(#2@Og$i?") 00:00:52 v #1588 > > │ input=Comment("y$?IW-t~I") 00:00:52 v #1589 > > │ input=Identifier("HWfuwc9XMlga968xav773pC") 00:00:52 v #1590 > > │ input=Identifier("zPVSo1Q91bMiDN3") 00:00:52 v #1591 > > │ input=Comment("bl=<{;+Zy7L!/+") 00:00:52 v #1592 > > │ input=Identifier("f7") 00:00:52 v #1593 > > │ input=StringLiteral("lo%L:u}*G<i%&`") 00:00:52 v #1594 > > │ input=StringLiteral("`?!b]cPUK>q") 00:00:52 v #1595 > > │ input=Operator("-") 00:00:52 v #1596 > > │ input=Integer(341242784258964482) 00:00:52 v #1597 > > │ input=Operator("-") 00:00:52 v #1598 > > │ input=Identifier("NBrMvLBgYwCE297U8yQ") 00:00:52 v #1599 > > │ input=Identifier("c20HAf1QTc8UObRZ") 00:00:52 v #1600 > > │ input=Integer(671285209644286316) 00:00:52 v #1601 > > │ input=Comment("bb%\\<+U%M\\\\_?oU0|.kWct*MN*0") 00:00:52 v #1602 > > │ input=StringLiteral("XOj|b.Z)A/{G<MGC*,Kl`_") 00:00:52 v #1603 > > │ input=Integer(7346308139999190927) 00:00:52 v #1604 > > │ input=Integer(5672159442311325646) 00:00:52 v #1605 > > │ input=StringLiteral("#q|t*=T$Y!Hv1{,:uM .<]1O!/") 00:00:52 v #1606 > > │ input=Operator("=") 00:00:52 v #1607 > > │ input=Comment("/I&CF`M'.&[{:HI[$") 00:00:52 v #1608 > > │ 00:00:52 v #1609 > > │ 00:00:52 v #1610 > > │ successes: 00:00:52 v #1611 > > │ 00:00:52 v #1612 > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged 00:00:52 v #1613 > > │ prop_parse_format_idempotent 00:00:52 v #1614 > > │ test_parse_number 00:00:52 v #1615 > > │ 00:00:52 v #1616 > > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 00:00:52 v #1617 > > filtered out; finished in 0.07s 00:00:52 v #1618 > > │ 00:00:52 v #1619 > > │ 00:00:52 v #1620 > > 00:00:52 v #1621 > > ── markdown ──────────────────────────────────────────────────────────────────── 00:00:52 v #1622 > > │ ### execute the binary in release mode 00:00:52 v #1623 > > 00:00:52 v #1624 > > ── pwsh ──────────────────────────────────────────────────────────────────────── 00:00:52 v #1625 > > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | 00:00:52 v #1626 > > Invoke-Block 00:00:52 v #1627 > > 00:00:52 v #1628 > > ── [ 11.56ms - stdout ] ──────────────────────────────────────────────────────── 00:00:52 v #1629 > > │ app=test 00:00:52 v #1630 > > │ 00:00:52 v #1631 > 00:00:50 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 96403 } 00:00:52 v #1632 > 00:00:50 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:52 v #1633 > 00:00:51 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html 00:00:52 v #1634 > 00:00:51 v #6 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:52 v #1635 > 00:00:51 v #7 ! validate(nb) 00:00:53 v #1636 > 00:00:51 v #8 ! /opt/hostedtoolcache/Python/3.12.8/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:53 v #1637 > 00:00:51 v #9 ! return _pygments_highlight( 00:00:53 v #1638 > 00:00:52 v #10 ! [NbConvertApp] Writing 396288 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html 00:00:53 v #1639 > 00:00:52 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 } 00:00:53 v #1640 > 00:00:52 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 } 00:00:53 v #1641 > 00:00:52 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:53 v #1642 > 00:00:52 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:53 v #1643 > 00:00:52 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:53 v #1644 > 00:00:52 d #16 spiral.run / dib / { exit_code = 0; result_length = 97378 } 00:00:53 d #1645 runtime.execute_with_options_async / { exit_code = 0; output_length = 103328 } 00:00:53 d #3 main / executeCommand / exitCode: 0 / command: ../../../../deps/spiral/workspace/target/release/spiral dib --path build.dib 00:00:53 v #43 networking.test_port_open / { port = 13805; ex = System.AggregateException: One or more errors occurred. (Connection refused) } Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B] Hit:6 https://packages.microsoft.com/repos/azure-cli noble InRelease Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B] Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB] Get:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB] Get:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB] Get:8 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [16.2 kB] Get:9 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [10.9 kB] Get:10 https://packages.microsoft.com/ubuntu/24.04/prod noble/main armhf Packages [6082 B] Get:11 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [770 kB] Get:12 http://azure.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [174 kB] Get:13 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [151 kB] Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [971 kB] Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [240 kB] Get:16 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [309 kB] Get:17 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [583 kB] Get:18 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted Translation-en [113 kB] Get:19 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Components [212 B] Get:20 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B] Get:21 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [208 B] Get:22 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [11.7 kB] Get:23 http://azure.archive.ubuntu.com/ubuntu noble-backports/restricted amd64 Components [216 B] Get:24 http://azure.archive.ubuntu.com/ubuntu noble-backports/multiverse amd64 Components [212 B] Get:25 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [585 kB] Get:26 http://azure.archive.ubuntu.com/ubuntu noble-security/main Translation-en [114 kB] Get:27 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [7284 B] Get:28 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [800 kB] Get:29 http://azure.archive.ubuntu.com/ubuntu noble-security/universe Translation-en [170 kB] Get:30 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [52.0 kB] Get:31 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Packages [571 kB] Get:32 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted Translation-en [110 kB] Get:33 http://azure.archive.ubuntu.com/ubuntu noble-security/restricted amd64 Components [212 B] Get:34 http://azure.archive.ubuntu.com/ubuntu noble-security/multiverse amd64 Components [212 B] Fetched 6150 kB in 1s (6639 kB/s) Reading package lists... WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Reading package lists... Building dependency tree... Reading state information... The following additional packages will be installed: blender-data gdal-data gdal-plugins gstreamer1.0-plugins-base i965-va-driver intel-media-va-driver libaacs0 libaec0 libarmadillo12 libarpack2t64 libass9 libasyncns0 libavc1394-0 libavcodec60 libavdevice60 libavfilter9 libavformat60 libavutil58 libbdplus0 libblas3 libblosc1 libbluray2 libboost-iostreams1.83.0 libboost-locale1.83.0 libboost-thread1.83.0 libbs2b0 libcaca0 libcdio-cdda2t64 libcdio-paranoia2t64 libcdio19t64 libcdparanoia0 libcfitsio10t64 libcharls2 libchromaprint1 libcjson1 libcodec2-1.2 libdav1d7 libdc1394-25 libdcmtk17t64 libdecor-0-0 libdecor-0-plugin-1-gtk libembree4-4 libexif12 libfftw3-single3 libflac12t64 libflite1 libfreexl1 libfyba0t64 libgdal34t64 libgdcm3.0t64 libgeos-c1t64 libgeos3.12.1t64 libgeotiff5 libgif7 libgme0 libgphoto2-6t64 libgphoto2-l10n libgphoto2-port12t64 libgsm1 libgstreamer-plugins-base1.0-0 libhdf4-0-alt libhdf5-103-1t64 libhdf5-hl-100t64 libhwloc-plugins libhwloc15 libhwy1t64 libiec61883-0 libigdgmm12 libimath-3-1-29t64 libjack-jackd2-0 libjemalloc2 libjxl0.7 libkmlbase1t64 libkmldom1t64 libkmlengine1t64 liblapack3 liblilv-0-0 liblog4cplus-2.0.5t64 libmbedcrypto7t64 libminizip1t64 libmp3lame0 libmpg123-0t64 libmysofa1 libnetcdf19t64 libodbcinst2 libogdi4.1 libopenal-data libopenal1 libopencolorio2.1t64 libopencv-core406t64 libopencv-imgcodecs406t64 libopencv-imgproc406t64 libopencv-videoio406t64 libopenexr-3-1-30 libopenimageio2.4t64 libopenmpt0t64 libopenvdb10.0t64 libopus0 liborc-0.4-0t64 libosdcpu3.5.0t64 libosdgpu3.5.0t64 libplacebo338 libpocketsphinx3 libpoppler134 libpostproc57 libpotrace0 libproj25 libpugixml1v5 libpulse0 libpystring0 libqhull-r8.0 librav1e0 libraw1394-11 librist4 librsvg2-2 librsvg2-common librttopo1 librubberband2 libsamplerate0 libsdl2-2.0-0 libserd-0-0 libshine3 libsndfile1 libsndio7.0 libsocket++1 libsord-0-0 libsoxr0 libspatialite8t64 libspeex1 libsphinxbase3t64 libspnav0 libsratom-0-0 libsrt1.5-gnutls libssh-gcrypt-4 libsuperlu6 libsvtav1enc1d1 libswresample4 libswscale7 libsz2 libtbb12 libtbbbind-2-5 libtbbmalloc2 libtheora0 libtwolame0 libudfread0 libunibreak5 liburiparser1 libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvorbisenc2 libvpl2 libvpx9 libx264-164 libx265-199 libxcb-shape0 libxerces-c3.2t64 libxnvctrl0 libxv1 libxvidcore4 libyaml-cpp0.8 libzimg2 libzix-0-0 libzvbi-common libzvbi0t64 mesa-va-drivers mesa-vdpau-drivers ocl-icd-libopencl1 pocketsphinx-en-us poppler-data proj-bin proj-data unixodbc-common va-driver-all vdpau-driver-all Suggested packages: gvfs i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1 libbluray-bdj libfftw3-bin libfftw3-dev geotiff-bin gdal-bin libgeotiff-epsg gphoto2 libvisual-0.4-plugins libhdf4-doc libhdf4-alt-dev hdf4-tools libhwloc-contrib-plugins jackd2 ogdi-bin libportaudio2 opus-tools pulseaudio libraw1394-doc librsvg2-bin serdi sndiod sordi speex spacenavd opencl-icd poppler-utils ghostscript fonts-japanese-mincho | fonts-ipafont-mincho fonts-japanese-gothic | fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-nanum libvdpau-va-gl1 The following NEW packages will be installed: blender blender-data gdal-data gdal-plugins gstreamer1.0-plugins-base i965-va-driver intel-media-va-driver libaacs0 libaec0 libarmadillo12 libarpack2t64 libass9 libasyncns0 libavc1394-0 libavcodec60 libavdevice60 libavfilter9 libavformat60 libavutil58 libbdplus0 libblas3 libblosc1 libbluray2 libboost-iostreams1.83.0 libboost-locale1.83.0 libboost-thread1.83.0 libbs2b0 libcaca0 libcdio-cdda2t64 libcdio-paranoia2t64 libcdio19t64 libcdparanoia0 libcfitsio10t64 libcharls2 libchromaprint1 libcjson1 libcodec2-1.2 libdav1d7 libdc1394-25 libdcmtk17t64 libdecor-0-0 libdecor-0-plugin-1-gtk libembree4-4 libexif12 libfftw3-single3 libflac12t64 libflite1 libfreexl1 libfyba0t64 libgdal34t64 libgdcm3.0t64 libgeos-c1t64 libgeos3.12.1t64 libgeotiff5 libgif7 libgme0 libgphoto2-6t64 libgphoto2-l10n libgphoto2-port12t64 libgsm1 libgstreamer-plugins-base1.0-0 libhdf4-0-alt libhdf5-103-1t64 libhdf5-hl-100t64 libhwloc-plugins libhwloc15 libhwy1t64 libiec61883-0 libigdgmm12 libimath-3-1-29t64 libjack-jackd2-0 libjemalloc2 libjxl0.7 libkmlbase1t64 libkmldom1t64 libkmlengine1t64 liblapack3 liblilv-0-0 liblog4cplus-2.0.5t64 libmbedcrypto7t64 libminizip1t64 libmp3lame0 libmpg123-0t64 libmysofa1 libnetcdf19t64 libodbcinst2 libogdi4.1 libopenal-data libopenal1 libopencolorio2.1t64 libopencv-core406t64 libopencv-imgcodecs406t64 libopencv-imgproc406t64 libopencv-videoio406t64 libopenexr-3-1-30 libopenimageio2.4t64 libopenmpt0t64 libopenvdb10.0t64 libopus0 liborc-0.4-0t64 libosdcpu3.5.0t64 libosdgpu3.5.0t64 libplacebo338 libpocketsphinx3 libpoppler134 libpostproc57 libpotrace0 libproj25 libpugixml1v5 libpulse0 libpystring0 libqhull-r8.0 librav1e0 libraw1394-11 librist4 librsvg2-2 librsvg2-common librttopo1 librubberband2 libsamplerate0 libsdl2-2.0-0 libserd-0-0 libshine3 libsndfile1 libsndio7.0 libsocket++1 libsord-0-0 libsoxr0 libspatialite8t64 libspeex1 libsphinxbase3t64 libspnav0 libsratom-0-0 libsrt1.5-gnutls libssh-gcrypt-4 libsuperlu6 libsvtav1enc1d1 libswresample4 libswscale7 libsz2 libtbb12 libtbbbind-2-5 libtbbmalloc2 libtheora0 libtwolame0 libudfread0 libunibreak5 liburiparser1 libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvorbisenc2 libvpl2 libvpx9 libx264-164 libx265-199 libxcb-shape0 libxerces-c3.2t64 libxnvctrl0 libxv1 libxvidcore4 libyaml-cpp0.8 libzimg2 libzix-0-0 libzvbi-common libzvbi0t64 mesa-va-drivers mesa-vdpau-drivers ocl-icd-libopencl1 pocketsphinx-en-us poppler-data proj-bin proj-data unixodbc-common va-driver-all vdpau-driver-all 0 upgraded, 179 newly installed, 0 to remove and 55 not upgraded. Need to get 228 MB of archives. After this operation, 708 MB of additional disk space will be used. Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [142 B] Get:2 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 poppler-data all 0.4.12-1 [2060 kB] Get:3 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 blender-data all 4.0.2+dfsg-1ubuntu8 [35.9 MB] Get:4 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva2 amd64 2.20.0-2build1 [66.2 kB] Get:5 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva-drm2 amd64 2.20.0-2build1 [7124 B] Get:6 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libva-x11-2 amd64 2.20.0-2build1 [12.0 kB] Get:7 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvdpau1 amd64 1.5-2build1 [27.8 kB] Get:8 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libvpl2 amd64 2023.3.0-1build1 [99.8 kB] Get:9 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 ocl-icd-libopencl1 amd64 2.3.2-1build1 [38.5 kB] Get:10 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavutil58 amd64 7:6.1.1-3ubuntu5 [401 kB] Get:11 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcodec2-1.2 amd64 1.2.0-2build1 [8998 kB] Get:12 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdav1d7 amd64 1.4.1-1build1 [604 kB] Get:13 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgsm1 amd64 1.0.22-1build1 [27.8 kB] Get:14 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwy1t64 amd64 1.0.7-8.1build1 [584 kB] Get:15 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libjxl0.7 amd64 0.7.0-10.2ubuntu6 [999 kB] Get:16 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libmp3lame0 amd64 3.100-6build1 [142 kB] Get:17 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libopus0 amd64 1.4-1build1 [208 kB] Get:18 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librav1e0 amd64 0.7.1-2 [1022 kB] Get:19 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 librsvg2-2 amd64 2.58.0+dfsg-1build1 [2135 kB] Get:20 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libshine3 amd64 3.1.1-2build1 [23.2 kB] Get:21 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libspeex1 amd64 1.2.1-2ubuntu2.24.04.1 [59.6 kB] Get:22 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsvtav1enc1d1 amd64 1.7.0+dfsg-2build1 [2425 kB] Get:23 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsoxr0 amd64 0.1.3-4build3 [80.0 kB] Get:24 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libswresample4 amd64 7:6.1.1-3ubuntu5 [63.8 kB] Get:25 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libtheora0 amd64 1.1.1+dfsg.1-16.1build3 [211 kB] Get:26 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libtwolame0 amd64 0.4.0-2build3 [52.3 kB] Get:27 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvorbisenc2 amd64 1.3.7-1build3 [80.8 kB] Get:28 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libvpx9 amd64 1.14.0-1ubuntu2.1 [1143 kB] Get:29 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libx264-164 amd64 2:0.164.3108+git31e19f9-1 [604 kB] Get:30 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libx265-199 amd64 3.5-2build1 [1226 kB] Get:31 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libxvidcore4 amd64 2:1.3.7-1build1 [219 kB] Get:32 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzvbi-common all 0.2.42-2 [42.4 kB] Get:33 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzvbi0t64 amd64 0.2.42-2 [261 kB] Get:34 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavcodec60 amd64 7:6.1.1-3ubuntu5 [5851 kB] Get:35 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libraw1394-11 amd64 2.1.2-2build3 [26.2 kB] Get:36 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libavc1394-0 amd64 0.5.4-5build3 [15.4 kB] Get:37 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libunibreak5 amd64 5.1-2build1 [25.0 kB] Get:38 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libass9 amd64 1:0.17.1-2build1 [104 kB] Get:39 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libudfread0 amd64 1.1.2-1build1 [19.0 kB] Get:40 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbluray2 amd64 1:1.3.4-1build1 [159 kB] Get:41 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libchromaprint1 amd64 1.5.1-5 [30.5 kB] Get:42 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgme0 amd64 0.6.3-7build1 [134 kB] Get:43 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libmpg123-0t64 amd64 1.32.5-1ubuntu1.1 [169 kB] Get:44 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenmpt0t64 amd64 0.7.3-1.1build3 [647 kB] Get:45 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcjson1 amd64 1.7.17-1 [24.8 kB] Get:46 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libmbedcrypto7t64 amd64 2.28.8-1 [209 kB] Get:47 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librist4 amd64 0.2.10+dfsg-2 [74.9 kB] Get:48 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsrt1.5-gnutls amd64 1.5.3-1build2 [316 kB] Get:49 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libssh-gcrypt-4 amd64 0.10.6-2build2 [223 kB] Get:50 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavformat60 amd64 7:6.1.1-3ubuntu5 [1153 kB] Get:51 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbs2b0 amd64 3.1.0+dfsg-7build1 [10.6 kB] Get:52 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libflite1 amd64 2.2-6build3 [13.6 MB] Get:53 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libserd-0-0 amd64 0.32.2-1 [43.6 kB] Get:54 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzix-0-0 amd64 0.4.2-2build1 [23.6 kB] Get:55 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsord-0-0 amd64 0.16.16-2build1 [15.8 kB] Get:56 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsratom-0-0 amd64 0.6.16-1build1 [17.3 kB] Get:57 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 liblilv-0-0 amd64 0.24.22-1build1 [41.0 kB] Get:58 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libmysofa1 amd64 1.3.2+dfsg-2ubuntu2 [1158 kB] Get:59 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libplacebo338 amd64 6.338.2-2build1 [2654 kB] Get:60 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libblas3 amd64 3.12.0-3build1.1 [238 kB] Get:61 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liblapack3 amd64 3.12.0-3build1.1 [2646 kB] Get:62 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libasyncns0 amd64 0.8-6build4 [11.3 kB] Get:63 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libflac12t64 amd64 1.4.3+ds-2.1ubuntu2 [197 kB] Get:64 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsndfile1 amd64 1.2.2-1ubuntu5 [208 kB] Get:65 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpulse0 amd64 1:16.1+dfsg1-2ubuntu10.1 [292 kB] Get:66 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsphinxbase3t64 amd64 0.8+5prealpha+1-17build2 [126 kB] Get:67 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-15ubuntu5 [133 kB] Get:68 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpostproc57 amd64 7:6.1.1-3ubuntu5 [49.9 kB] Get:69 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsamplerate0 amd64 0.2.2-4build1 [1344 kB] Get:70 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librubberband2 amd64 3.3.0+dfsg-2build1 [130 kB] Get:71 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libswscale7 amd64 7:6.1.1-3ubuntu5 [193 kB] Get:72 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libvidstab1.1 amd64 1.1.0-2build1 [38.5 kB] Get:73 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libzimg2 amd64 3.0.5+ds1-1build1 [254 kB] Get:74 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavfilter9 amd64 7:6.1.1-3ubuntu5 [4235 kB] Get:75 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcaca0 amd64 0.99.beta20-4build2 [208 kB] Get:76 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcdio19t64 amd64 2.1.0-4.1ubuntu1.2 [62.4 kB] Get:77 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdio-cdda2t64 amd64 10.2+2.0.1-1.1build2 [16.5 kB] Get:78 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdio-paranoia2t64 amd64 10.2+2.0.1-1.1build2 [16.6 kB] Get:79 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdc1394-25 amd64 2.2.6-4build1 [90.1 kB] Get:80 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libiec61883-0 amd64 1.2.0-6build1 [24.5 kB] Get:81 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjack-jackd2-0 amd64 1.9.21~dfsg-3ubuntu3 [289 kB] Get:82 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenal-data all 1:1.23.1-4build1 [161 kB] Get:83 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsndio7.0 amd64 1.9.0-0.3build3 [29.6 kB] Get:84 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenal1 amd64 1:1.23.1-4build1 [540 kB] Get:85 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libdecor-0-0 amd64 0.2.2-1build2 [16.5 kB] Get:86 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libsdl2-2.0-0 amd64 2.30.0+dfsg-1build3 [685 kB] Get:87 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-shape0 amd64 1.15-1ubuntu2 [6100 B] Get:88 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxv1 amd64 2:1.0.11-1.1build1 [10.7 kB] Get:89 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libavdevice60 amd64 7:6.1.1-3ubuntu5 [82.3 kB] Get:90 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-thread1.83.0 amd64 1.83.0-2.1ubuntu3.1 [276 kB] Get:91 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-locale1.83.0 amd64 1.83.0-2.1ubuntu3.1 [413 kB] Get:92 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbbmalloc2 amd64 2021.11.0-2ubuntu2 [60.5 kB] Get:93 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwloc15 amd64 2.10.0-1build1 [172 kB] Get:94 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbbbind-2-5 amd64 2021.11.0-2ubuntu2 [16.4 kB] Get:95 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libtbb12 amd64 2021.11.0-2ubuntu2 [106 kB] Get:96 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libembree4-4 amd64 4.3.0+dfsg-2 [9265 kB] Get:97 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libfftw3-single3 amd64 3.3.10-1ubuntu3 [868 kB] Get:98 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libimath-3-1-29t64 amd64 3.1.9-3.1ubuntu2 [72.2 kB] Get:99 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libjemalloc2 amd64 5.3.0-2build1 [256 kB] Get:100 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpystring0 amd64 1.1.4-1build1 [28.4 kB] Get:101 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libyaml-cpp0.8 amd64 0.8.0+dfsg-6build1 [115 kB] Get:102 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencolorio2.1t64 amd64 2.1.3+dfsg-1.1build3 [1470 kB] Get:103 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenexr-3-1-30 amd64 3.1.5-5.1build3 [1004 kB] Get:104 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libdcmtk17t64 amd64 3.6.7-9.1build4 [5329 kB] Get:105 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgif7 amd64 5.2.2-1ubuntu1 [35.2 kB] Get:106 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-core406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [1202 kB] Get:107 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-imgproc406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [1460 kB] Get:108 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libexif12 amd64 0.6.24-1build2 [87.9 kB] Get:109 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-port12t64 amd64 2.5.31-2.1build2 [58.6 kB] Get:110 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-6t64 amd64 2.5.31-2.1build2 [735 kB] Get:111 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liborc-0.4-0t64 amd64 1:0.4.38-1ubuntu0.1 [207 kB] Get:112 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgstreamer-plugins-base1.0-0 amd64 1.24.2-1ubuntu0.2 [862 kB] Get:113 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 gdal-data all 3.8.4+dfsg-3ubuntu3 [261 kB] Get:114 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 gdal-plugins amd64 3.8.4+dfsg-3ubuntu3 [24.8 kB] Get:115 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libaec0 amd64 1.1.2-1build1 [22.9 kB] Get:116 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libarpack2t64 amd64 3.9.1-1.1build2 [106 kB] Get:117 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsuperlu6 amd64 6.0.1+dfsg1-1build1 [180 kB] Get:118 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libarmadillo12 amd64 1:12.6.7+dfsg-1build2 [106 kB] Get:119 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libblosc1 amd64 1.21.5+ds-1build1 [36.2 kB] Get:120 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcfitsio10t64 amd64 4.3.1-1.1build2 [528 kB] Get:121 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 libminizip1t64 amd64 1:1.3.dfsg-3.1ubuntu2.1 [22.2 kB] Get:122 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libfreexl1 amd64 2.0.0-1build2 [41.7 kB] Get:123 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libfyba0t64 amd64 4.1.1-11build1 [119 kB] Get:124 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeos3.12.1t64 amd64 3.12.1-3build1 [849 kB] Get:125 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeos-c1t64 amd64 3.12.1-3build1 [94.5 kB] Get:126 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 proj-data all 9.4.0-1build2 [7885 kB] Get:127 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libproj25 amd64 9.4.0-1build2 [1396 kB] Get:128 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgeotiff5 amd64 1.7.1-5build1 [62.9 kB] Get:129 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf4-0-alt amd64 4.2.16-4build1 [282 kB] Get:130 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsz2 amd64 1.1.2-1build1 [5476 B] Get:131 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf5-103-1t64 amd64 1.10.10+repack-3.1ubuntu4 [1270 kB] Get:132 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 liburiparser1 amd64 0.9.7+dfsg-2build1 [35.8 kB] Get:133 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmlbase1t64 amd64 1.3.0-12build1 [49.9 kB] Get:134 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmldom1t64 amd64 1.3.0-12build1 [156 kB] Get:135 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libkmlengine1t64 amd64 1.3.0-12build1 [71.4 kB] Get:136 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhdf5-hl-100t64 amd64 1.10.10+repack-3.1ubuntu4 [56.0 kB] Get:137 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libnetcdf19t64 amd64 1:4.9.2-5ubuntu4 [473 kB] Get:138 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 unixodbc-common all 2.3.12-1ubuntu0.24.04.1 [8806 B] Get:139 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libodbcinst2 amd64 2.3.12-1ubuntu0.24.04.1 [30.7 kB] Get:140 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libogdi4.1 amd64 4.1.1+ds-3build1 [226 kB] Get:141 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpoppler134 amd64 24.02.0-1ubuntu9.1 [1113 kB] Get:142 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libqhull-r8.0 amd64 2020.2-6build1 [193 kB] Get:143 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 librttopo1 amd64 1.1.0-3build2 [191 kB] Get:144 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libspatialite8t64 amd64 5.1.0-3build1 [1919 kB] Get:145 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libxerces-c3.2t64 amd64 3.2.4+debian-1.2ubuntu2 [919 kB] Get:146 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgdal34t64 amd64 3.8.4+dfsg-3ubuntu3 [8346 kB] Get:147 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libcharls2 amd64 2.4.2-2build2 [90.4 kB] Get:148 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libsocket++1 amd64 1.12.13+git20131030.5d039ba-1build1 [83.1 kB] Get:149 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libgdcm3.0t64 amd64 3.0.22-2.1ubuntu1 [2160 kB] Get:150 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-imgcodecs406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [128 kB] Get:151 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopencv-videoio406t64 amd64 4.6.0+dfsg-13.1ubuntu1 [199 kB] Get:152 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libboost-iostreams1.83.0 amd64 1.83.0-2.1ubuntu3.1 [259 kB] Get:153 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 liblog4cplus-2.0.5t64 amd64 2.0.8-1.1ubuntu3 [188 kB] Get:154 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenvdb10.0t64 amd64 10.0.1-2.1build5 [4138 kB] Get:155 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libopenimageio2.4t64 amd64 2.4.17.0+dfsg-1.1build4 [2751 kB] Get:156 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libosdcpu3.5.0t64 amd64 3.5.0-2.1build1 [373 kB] Get:157 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libosdgpu3.5.0t64 amd64 3.5.0-2.1build1 [149 kB] Get:158 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpotrace0 amd64 1.16-2build1 [17.7 kB] Get:159 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libpugixml1v5 amd64 1.14-0.1build1 [91.9 kB] Get:160 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libspnav0 amd64 1.1-2 [15.0 kB] Get:161 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 blender amd64 4.0.2+dfsg-1ubuntu8 [25.6 MB] Get:162 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libcdparanoia0 amd64 3.10.2+debian-14build3 [48.5 kB] Get:163 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libvisual-0.4-0 amd64 0.4.2-2build1 [115 kB] Get:164 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 gstreamer1.0-plugins-base amd64 1.24.2-1ubuntu0.2 [721 kB] Get:165 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libigdgmm12 amd64 22.3.17+ds1-1 [145 kB] Get:166 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 intel-media-va-driver amd64 24.1.0+dfsg1-1 [4022 kB] Get:167 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libaacs0 amd64 0.11.1-2build1 [62.9 kB] Get:168 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libbdplus0 amd64 0.2.0-3build1 [52.2 kB] Get:169 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libdecor-0-plugin-1-gtk amd64 0.2.2-1build2 [22.2 kB] Get:170 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libgphoto2-l10n all 2.5.31-2.1build2 [15.0 kB] Get:171 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 librsvg2-common amd64 2.58.0+dfsg-1build1 [11.8 kB] Get:172 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libxnvctrl0 amd64 510.47.03-0ubuntu4 [12.6 kB] Get:173 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 mesa-va-drivers amd64 24.0.9-0ubuntu0.3 [4246 kB] Get:174 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 mesa-vdpau-drivers amd64 24.0.9-0ubuntu0.3 [3904 kB] Get:175 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1build2 [332 kB] Get:176 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 va-driver-all amd64 2.20.0-2build1 [4844 B] Get:177 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 vdpau-driver-all amd64 1.5-2build1 [4414 B] Get:178 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 libhwloc-plugins amd64 2.10.0-1build1 [15.7 kB] Get:179 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-15ubuntu5 [27.4 MB] Get:180 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 proj-bin amd64 9.4.0-1build2 [164 kB] Fetched 228 MB in 12s (19.1 MB/s) Selecting previously unselected package poppler-data. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 219807 files and directories currently installed.) Preparing to unpack .../000-poppler-data_0.4.12-1_all.deb ... Unpacking poppler-data (0.4.12-1) ... Selecting previously unselected package blender-data. Preparing to unpack .../001-blender-data_4.0.2+dfsg-1ubuntu8_all.deb ... Unpacking blender-data (4.0.2+dfsg-1ubuntu8) ... Selecting previously unselected package libva2:amd64. Preparing to unpack .../002-libva2_2.20.0-2build1_amd64.deb ... Unpacking libva2:amd64 (2.20.0-2build1) ... Selecting previously unselected package libva-drm2:amd64. Preparing to unpack .../003-libva-drm2_2.20.0-2build1_amd64.deb ... Unpacking libva-drm2:amd64 (2.20.0-2build1) ... Selecting previously unselected package libva-x11-2:amd64. Preparing to unpack .../004-libva-x11-2_2.20.0-2build1_amd64.deb ... Unpacking libva-x11-2:amd64 (2.20.0-2build1) ... Selecting previously unselected package libvdpau1:amd64. Preparing to unpack .../005-libvdpau1_1.5-2build1_amd64.deb ... Unpacking libvdpau1:amd64 (1.5-2build1) ... Selecting previously unselected package libvpl2. Preparing to unpack .../006-libvpl2_2023.3.0-1build1_amd64.deb ... Unpacking libvpl2 (2023.3.0-1build1) ... Selecting previously unselected package ocl-icd-libopencl1:amd64. Preparing to unpack .../007-ocl-icd-libopencl1_2.3.2-1build1_amd64.deb ... Unpacking ocl-icd-libopencl1:amd64 (2.3.2-1build1) ... Selecting previously unselected package libavutil58:amd64. Preparing to unpack .../008-libavutil58_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libavutil58:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libcodec2-1.2:amd64. Preparing to unpack .../009-libcodec2-1.2_1.2.0-2build1_amd64.deb ... Unpacking libcodec2-1.2:amd64 (1.2.0-2build1) ... Selecting previously unselected package libdav1d7:amd64. Preparing to unpack .../010-libdav1d7_1.4.1-1build1_amd64.deb ... Unpacking libdav1d7:amd64 (1.4.1-1build1) ... Selecting previously unselected package libgsm1:amd64. Preparing to unpack .../011-libgsm1_1.0.22-1build1_amd64.deb ... Unpacking libgsm1:amd64 (1.0.22-1build1) ... Selecting previously unselected package libhwy1t64:amd64. Preparing to unpack .../012-libhwy1t64_1.0.7-8.1build1_amd64.deb ... Unpacking libhwy1t64:amd64 (1.0.7-8.1build1) ... Selecting previously unselected package libjxl0.7:amd64. Preparing to unpack .../013-libjxl0.7_0.7.0-10.2ubuntu6_amd64.deb ... Unpacking libjxl0.7:amd64 (0.7.0-10.2ubuntu6) ... Selecting previously unselected package libmp3lame0:amd64. Preparing to unpack .../014-libmp3lame0_3.100-6build1_amd64.deb ... Unpacking libmp3lame0:amd64 (3.100-6build1) ... Selecting previously unselected package libopus0:amd64. Preparing to unpack .../015-libopus0_1.4-1build1_amd64.deb ... Unpacking libopus0:amd64 (1.4-1build1) ... Selecting previously unselected package librav1e0:amd64. Preparing to unpack .../016-librav1e0_0.7.1-2_amd64.deb ... Unpacking librav1e0:amd64 (0.7.1-2) ... Selecting previously unselected package librsvg2-2:amd64. Preparing to unpack .../017-librsvg2-2_2.58.0+dfsg-1build1_amd64.deb ... Unpacking librsvg2-2:amd64 (2.58.0+dfsg-1build1) ... Selecting previously unselected package libshine3:amd64. Preparing to unpack .../018-libshine3_3.1.1-2build1_amd64.deb ... Unpacking libshine3:amd64 (3.1.1-2build1) ... Selecting previously unselected package libspeex1:amd64. Preparing to unpack .../019-libspeex1_1.2.1-2ubuntu2.24.04.1_amd64.deb ... Unpacking libspeex1:amd64 (1.2.1-2ubuntu2.24.04.1) ... Selecting previously unselected package libsvtav1enc1d1:amd64. Preparing to unpack .../020-libsvtav1enc1d1_1.7.0+dfsg-2build1_amd64.deb ... Unpacking libsvtav1enc1d1:amd64 (1.7.0+dfsg-2build1) ... Selecting previously unselected package libsoxr0:amd64. Preparing to unpack .../021-libsoxr0_0.1.3-4build3_amd64.deb ... Unpacking libsoxr0:amd64 (0.1.3-4build3) ... Selecting previously unselected package libswresample4:amd64. Preparing to unpack .../022-libswresample4_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libswresample4:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libtheora0:amd64. Preparing to unpack .../023-libtheora0_1.1.1+dfsg.1-16.1build3_amd64.deb ... Unpacking libtheora0:amd64 (1.1.1+dfsg.1-16.1build3) ... Selecting previously unselected package libtwolame0:amd64. Preparing to unpack .../024-libtwolame0_0.4.0-2build3_amd64.deb ... Unpacking libtwolame0:amd64 (0.4.0-2build3) ... Selecting previously unselected package libvorbisenc2:amd64. Preparing to unpack .../025-libvorbisenc2_1.3.7-1build3_amd64.deb ... Unpacking libvorbisenc2:amd64 (1.3.7-1build3) ... Selecting previously unselected package libvpx9:amd64. Preparing to unpack .../026-libvpx9_1.14.0-1ubuntu2.1_amd64.deb ... Unpacking libvpx9:amd64 (1.14.0-1ubuntu2.1) ... Selecting previously unselected package libx264-164:amd64. Preparing to unpack .../027-libx264-164_2%3a0.164.3108+git31e19f9-1_amd64.deb ... Unpacking libx264-164:amd64 (2:0.164.3108+git31e19f9-1) ... Selecting previously unselected package libx265-199:amd64. Preparing to unpack .../028-libx265-199_3.5-2build1_amd64.deb ... Unpacking libx265-199:amd64 (3.5-2build1) ... Selecting previously unselected package libxvidcore4:amd64. Preparing to unpack .../029-libxvidcore4_2%3a1.3.7-1build1_amd64.deb ... Unpacking libxvidcore4:amd64 (2:1.3.7-1build1) ... Selecting previously unselected package libzvbi-common. Preparing to unpack .../030-libzvbi-common_0.2.42-2_all.deb ... Unpacking libzvbi-common (0.2.42-2) ... Selecting previously unselected package libzvbi0t64:amd64. Preparing to unpack .../031-libzvbi0t64_0.2.42-2_amd64.deb ... Unpacking libzvbi0t64:amd64 (0.2.42-2) ... Selecting previously unselected package libavcodec60:amd64. Preparing to unpack .../032-libavcodec60_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libavcodec60:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libraw1394-11:amd64. Preparing to unpack .../033-libraw1394-11_2.1.2-2build3_amd64.deb ... Unpacking libraw1394-11:amd64 (2.1.2-2build3) ... Selecting previously unselected package libavc1394-0:amd64. Preparing to unpack .../034-libavc1394-0_0.5.4-5build3_amd64.deb ... Unpacking libavc1394-0:amd64 (0.5.4-5build3) ... Selecting previously unselected package libunibreak5:amd64. Preparing to unpack .../035-libunibreak5_5.1-2build1_amd64.deb ... Unpacking libunibreak5:amd64 (5.1-2build1) ... Selecting previously unselected package libass9:amd64. Preparing to unpack .../036-libass9_1%3a0.17.1-2build1_amd64.deb ... Unpacking libass9:amd64 (1:0.17.1-2build1) ... Selecting previously unselected package libudfread0:amd64. Preparing to unpack .../037-libudfread0_1.1.2-1build1_amd64.deb ... Unpacking libudfread0:amd64 (1.1.2-1build1) ... Selecting previously unselected package libbluray2:amd64. Preparing to unpack .../038-libbluray2_1%3a1.3.4-1build1_amd64.deb ... Unpacking libbluray2:amd64 (1:1.3.4-1build1) ... Selecting previously unselected package libchromaprint1:amd64. Preparing to unpack .../039-libchromaprint1_1.5.1-5_amd64.deb ... Unpacking libchromaprint1:amd64 (1.5.1-5) ... Selecting previously unselected package libgme0:amd64. Preparing to unpack .../040-libgme0_0.6.3-7build1_amd64.deb ... Unpacking libgme0:amd64 (0.6.3-7build1) ... Selecting previously unselected package libmpg123-0t64:amd64. Preparing to unpack .../041-libmpg123-0t64_1.32.5-1ubuntu1.1_amd64.deb ... Unpacking libmpg123-0t64:amd64 (1.32.5-1ubuntu1.1) ... Selecting previously unselected package libopenmpt0t64:amd64. Preparing to unpack .../042-libopenmpt0t64_0.7.3-1.1build3_amd64.deb ... Unpacking libopenmpt0t64:amd64 (0.7.3-1.1build3) ... Selecting previously unselected package libcjson1:amd64. Preparing to unpack .../043-libcjson1_1.7.17-1_amd64.deb ... Unpacking libcjson1:amd64 (1.7.17-1) ... Selecting previously unselected package libmbedcrypto7t64:amd64. Preparing to unpack .../044-libmbedcrypto7t64_2.28.8-1_amd64.deb ... Unpacking libmbedcrypto7t64:amd64 (2.28.8-1) ... Selecting previously unselected package librist4:amd64. Preparing to unpack .../045-librist4_0.2.10+dfsg-2_amd64.deb ... Unpacking librist4:amd64 (0.2.10+dfsg-2) ... Selecting previously unselected package libsrt1.5-gnutls:amd64. Preparing to unpack .../046-libsrt1.5-gnutls_1.5.3-1build2_amd64.deb ... Unpacking libsrt1.5-gnutls:amd64 (1.5.3-1build2) ... Selecting previously unselected package libssh-gcrypt-4:amd64. Preparing to unpack .../047-libssh-gcrypt-4_0.10.6-2build2_amd64.deb ... Unpacking libssh-gcrypt-4:amd64 (0.10.6-2build2) ... Selecting previously unselected package libavformat60:amd64. Preparing to unpack .../048-libavformat60_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libavformat60:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libbs2b0:amd64. Preparing to unpack .../049-libbs2b0_3.1.0+dfsg-7build1_amd64.deb ... Unpacking libbs2b0:amd64 (3.1.0+dfsg-7build1) ... Selecting previously unselected package libflite1:amd64. Preparing to unpack .../050-libflite1_2.2-6build3_amd64.deb ... Unpacking libflite1:amd64 (2.2-6build3) ... Selecting previously unselected package libserd-0-0:amd64. Preparing to unpack .../051-libserd-0-0_0.32.2-1_amd64.deb ... Unpacking libserd-0-0:amd64 (0.32.2-1) ... Selecting previously unselected package libzix-0-0:amd64. Preparing to unpack .../052-libzix-0-0_0.4.2-2build1_amd64.deb ... Unpacking libzix-0-0:amd64 (0.4.2-2build1) ... Selecting previously unselected package libsord-0-0:amd64. Preparing to unpack .../053-libsord-0-0_0.16.16-2build1_amd64.deb ... Unpacking libsord-0-0:amd64 (0.16.16-2build1) ... Selecting previously unselected package libsratom-0-0:amd64. Preparing to unpack .../054-libsratom-0-0_0.6.16-1build1_amd64.deb ... Unpacking libsratom-0-0:amd64 (0.6.16-1build1) ... Selecting previously unselected package liblilv-0-0:amd64. Preparing to unpack .../055-liblilv-0-0_0.24.22-1build1_amd64.deb ... Unpacking liblilv-0-0:amd64 (0.24.22-1build1) ... Selecting previously unselected package libmysofa1:amd64. Preparing to unpack .../056-libmysofa1_1.3.2+dfsg-2ubuntu2_amd64.deb ... Unpacking libmysofa1:amd64 (1.3.2+dfsg-2ubuntu2) ... Selecting previously unselected package libplacebo338:amd64. Preparing to unpack .../057-libplacebo338_6.338.2-2build1_amd64.deb ... Unpacking libplacebo338:amd64 (6.338.2-2build1) ... Selecting previously unselected package libblas3:amd64. Preparing to unpack .../058-libblas3_3.12.0-3build1.1_amd64.deb ... Unpacking libblas3:amd64 (3.12.0-3build1.1) ... Selecting previously unselected package liblapack3:amd64. Preparing to unpack .../059-liblapack3_3.12.0-3build1.1_amd64.deb ... Unpacking liblapack3:amd64 (3.12.0-3build1.1) ... Selecting previously unselected package libasyncns0:amd64. Preparing to unpack .../060-libasyncns0_0.8-6build4_amd64.deb ... Unpacking libasyncns0:amd64 (0.8-6build4) ... Selecting previously unselected package libflac12t64:amd64. Preparing to unpack .../061-libflac12t64_1.4.3+ds-2.1ubuntu2_amd64.deb ... Unpacking libflac12t64:amd64 (1.4.3+ds-2.1ubuntu2) ... Selecting previously unselected package libsndfile1:amd64. Preparing to unpack .../062-libsndfile1_1.2.2-1ubuntu5_amd64.deb ... Unpacking libsndfile1:amd64 (1.2.2-1ubuntu5) ... Selecting previously unselected package libpulse0:amd64. Preparing to unpack .../063-libpulse0_1%3a16.1+dfsg1-2ubuntu10.1_amd64.deb ... Unpacking libpulse0:amd64 (1:16.1+dfsg1-2ubuntu10.1) ... Selecting previously unselected package libsphinxbase3t64:amd64. Preparing to unpack .../064-libsphinxbase3t64_0.8+5prealpha+1-17build2_amd64.deb ... Unpacking libsphinxbase3t64:amd64 (0.8+5prealpha+1-17build2) ... Selecting previously unselected package libpocketsphinx3:amd64. Preparing to unpack .../065-libpocketsphinx3_0.8.0+real5prealpha+1-15ubuntu5_amd64.deb ... Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-15ubuntu5) ... Selecting previously unselected package libpostproc57:amd64. Preparing to unpack .../066-libpostproc57_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libpostproc57:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libsamplerate0:amd64. Preparing to unpack .../067-libsamplerate0_0.2.2-4build1_amd64.deb ... Unpacking libsamplerate0:amd64 (0.2.2-4build1) ... Selecting previously unselected package librubberband2:amd64. Preparing to unpack .../068-librubberband2_3.3.0+dfsg-2build1_amd64.deb ... Unpacking librubberband2:amd64 (3.3.0+dfsg-2build1) ... Selecting previously unselected package libswscale7:amd64. Preparing to unpack .../069-libswscale7_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libswscale7:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libvidstab1.1:amd64. Preparing to unpack .../070-libvidstab1.1_1.1.0-2build1_amd64.deb ... Unpacking libvidstab1.1:amd64 (1.1.0-2build1) ... Selecting previously unselected package libzimg2:amd64. Preparing to unpack .../071-libzimg2_3.0.5+ds1-1build1_amd64.deb ... Unpacking libzimg2:amd64 (3.0.5+ds1-1build1) ... Selecting previously unselected package libavfilter9:amd64. Preparing to unpack .../072-libavfilter9_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libavfilter9:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libcaca0:amd64. Preparing to unpack .../073-libcaca0_0.99.beta20-4build2_amd64.deb ... Unpacking libcaca0:amd64 (0.99.beta20-4build2) ... Selecting previously unselected package libcdio19t64:amd64. Preparing to unpack .../074-libcdio19t64_2.1.0-4.1ubuntu1.2_amd64.deb ... Unpacking libcdio19t64:amd64 (2.1.0-4.1ubuntu1.2) ... Selecting previously unselected package libcdio-cdda2t64:amd64. Preparing to unpack .../075-libcdio-cdda2t64_10.2+2.0.1-1.1build2_amd64.deb ... Unpacking libcdio-cdda2t64:amd64 (10.2+2.0.1-1.1build2) ... Selecting previously unselected package libcdio-paranoia2t64:amd64. Preparing to unpack .../076-libcdio-paranoia2t64_10.2+2.0.1-1.1build2_amd64.deb ... Unpacking libcdio-paranoia2t64:amd64 (10.2+2.0.1-1.1build2) ... Selecting previously unselected package libdc1394-25:amd64. Preparing to unpack .../077-libdc1394-25_2.2.6-4build1_amd64.deb ... Unpacking libdc1394-25:amd64 (2.2.6-4build1) ... Selecting previously unselected package libiec61883-0:amd64. Preparing to unpack .../078-libiec61883-0_1.2.0-6build1_amd64.deb ... Unpacking libiec61883-0:amd64 (1.2.0-6build1) ... Selecting previously unselected package libjack-jackd2-0:amd64. Preparing to unpack .../079-libjack-jackd2-0_1.9.21~dfsg-3ubuntu3_amd64.deb ... Unpacking libjack-jackd2-0:amd64 (1.9.21~dfsg-3ubuntu3) ... Selecting previously unselected package libopenal-data. Preparing to unpack .../080-libopenal-data_1%3a1.23.1-4build1_all.deb ... Unpacking libopenal-data (1:1.23.1-4build1) ... Selecting previously unselected package libsndio7.0:amd64. Preparing to unpack .../081-libsndio7.0_1.9.0-0.3build3_amd64.deb ... Unpacking libsndio7.0:amd64 (1.9.0-0.3build3) ... Selecting previously unselected package libopenal1:amd64. Preparing to unpack .../082-libopenal1_1%3a1.23.1-4build1_amd64.deb ... Unpacking libopenal1:amd64 (1:1.23.1-4build1) ... Selecting previously unselected package libdecor-0-0:amd64. Preparing to unpack .../083-libdecor-0-0_0.2.2-1build2_amd64.deb ... Unpacking libdecor-0-0:amd64 (0.2.2-1build2) ... Selecting previously unselected package libsdl2-2.0-0:amd64. Preparing to unpack .../084-libsdl2-2.0-0_2.30.0+dfsg-1build3_amd64.deb ... Unpacking libsdl2-2.0-0:amd64 (2.30.0+dfsg-1build3) ... Selecting previously unselected package libxcb-shape0:amd64. Preparing to unpack .../085-libxcb-shape0_1.15-1ubuntu2_amd64.deb ... Unpacking libxcb-shape0:amd64 (1.15-1ubuntu2) ... Selecting previously unselected package libxv1:amd64. Preparing to unpack .../086-libxv1_2%3a1.0.11-1.1build1_amd64.deb ... Unpacking libxv1:amd64 (2:1.0.11-1.1build1) ... Selecting previously unselected package libavdevice60:amd64. Preparing to unpack .../087-libavdevice60_7%3a6.1.1-3ubuntu5_amd64.deb ... Unpacking libavdevice60:amd64 (7:6.1.1-3ubuntu5) ... Selecting previously unselected package libboost-thread1.83.0:amd64. Preparing to unpack .../088-libboost-thread1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ... Unpacking libboost-thread1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Selecting previously unselected package libboost-locale1.83.0:amd64. Preparing to unpack .../089-libboost-locale1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ... Unpacking libboost-locale1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Selecting previously unselected package libtbbmalloc2:amd64. Preparing to unpack .../090-libtbbmalloc2_2021.11.0-2ubuntu2_amd64.deb ... Unpacking libtbbmalloc2:amd64 (2021.11.0-2ubuntu2) ... Selecting previously unselected package libhwloc15:amd64. Preparing to unpack .../091-libhwloc15_2.10.0-1build1_amd64.deb ... Unpacking libhwloc15:amd64 (2.10.0-1build1) ... Selecting previously unselected package libtbbbind-2-5:amd64. Preparing to unpack .../092-libtbbbind-2-5_2021.11.0-2ubuntu2_amd64.deb ... Unpacking libtbbbind-2-5:amd64 (2021.11.0-2ubuntu2) ... Selecting previously unselected package libtbb12:amd64. Preparing to unpack .../093-libtbb12_2021.11.0-2ubuntu2_amd64.deb ... Unpacking libtbb12:amd64 (2021.11.0-2ubuntu2) ... Selecting previously unselected package libembree4-4:amd64. Preparing to unpack .../094-libembree4-4_4.3.0+dfsg-2_amd64.deb ... Unpacking libembree4-4:amd64 (4.3.0+dfsg-2) ... Selecting previously unselected package libfftw3-single3:amd64. Preparing to unpack .../095-libfftw3-single3_3.3.10-1ubuntu3_amd64.deb ... Unpacking libfftw3-single3:amd64 (3.3.10-1ubuntu3) ... Selecting previously unselected package libimath-3-1-29t64:amd64. Preparing to unpack .../096-libimath-3-1-29t64_3.1.9-3.1ubuntu2_amd64.deb ... Unpacking libimath-3-1-29t64:amd64 (3.1.9-3.1ubuntu2) ... Selecting previously unselected package libjemalloc2:amd64. Preparing to unpack .../097-libjemalloc2_5.3.0-2build1_amd64.deb ... Unpacking libjemalloc2:amd64 (5.3.0-2build1) ... Selecting previously unselected package libpystring0:amd64. Preparing to unpack .../098-libpystring0_1.1.4-1build1_amd64.deb ... Unpacking libpystring0:amd64 (1.1.4-1build1) ... Selecting previously unselected package libyaml-cpp0.8:amd64. Preparing to unpack .../099-libyaml-cpp0.8_0.8.0+dfsg-6build1_amd64.deb ... Unpacking libyaml-cpp0.8:amd64 (0.8.0+dfsg-6build1) ... Selecting previously unselected package libopencolorio2.1t64:amd64. Preparing to unpack .../100-libopencolorio2.1t64_2.1.3+dfsg-1.1build3_amd64.deb ... Unpacking libopencolorio2.1t64:amd64 (2.1.3+dfsg-1.1build3) ... Selecting previously unselected package libopenexr-3-1-30:amd64. Preparing to unpack .../101-libopenexr-3-1-30_3.1.5-5.1build3_amd64.deb ... Unpacking libopenexr-3-1-30:amd64 (3.1.5-5.1build3) ... Selecting previously unselected package libdcmtk17t64:amd64. Preparing to unpack .../102-libdcmtk17t64_3.6.7-9.1build4_amd64.deb ... Unpacking libdcmtk17t64:amd64 (3.6.7-9.1build4) ... Selecting previously unselected package libgif7:amd64. Preparing to unpack .../103-libgif7_5.2.2-1ubuntu1_amd64.deb ... Unpacking libgif7:amd64 (5.2.2-1ubuntu1) ... Selecting previously unselected package libopencv-core406t64:amd64. Preparing to unpack .../104-libopencv-core406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ... Unpacking libopencv-core406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Selecting previously unselected package libopencv-imgproc406t64:amd64. Preparing to unpack .../105-libopencv-imgproc406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ... Unpacking libopencv-imgproc406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Selecting previously unselected package libexif12:amd64. Preparing to unpack .../106-libexif12_0.6.24-1build2_amd64.deb ... Unpacking libexif12:amd64 (0.6.24-1build2) ... Selecting previously unselected package libgphoto2-port12t64:amd64. Preparing to unpack .../107-libgphoto2-port12t64_2.5.31-2.1build2_amd64.deb ... Unpacking libgphoto2-port12t64:amd64 (2.5.31-2.1build2) ... Selecting previously unselected package libgphoto2-6t64:amd64. Preparing to unpack .../108-libgphoto2-6t64_2.5.31-2.1build2_amd64.deb ... Unpacking libgphoto2-6t64:amd64 (2.5.31-2.1build2) ... Selecting previously unselected package liborc-0.4-0t64:amd64. Preparing to unpack .../109-liborc-0.4-0t64_1%3a0.4.38-1ubuntu0.1_amd64.deb ... Unpacking liborc-0.4-0t64:amd64 (1:0.4.38-1ubuntu0.1) ... Selecting previously unselected package libgstreamer-plugins-base1.0-0:amd64. Preparing to unpack .../110-libgstreamer-plugins-base1.0-0_1.24.2-1ubuntu0.2_amd64.deb ... Unpacking libgstreamer-plugins-base1.0-0:amd64 (1.24.2-1ubuntu0.2) ... Selecting previously unselected package gdal-data. Preparing to unpack .../111-gdal-data_3.8.4+dfsg-3ubuntu3_all.deb ... Unpacking gdal-data (3.8.4+dfsg-3ubuntu3) ... Selecting previously unselected package gdal-plugins:amd64. Preparing to unpack .../112-gdal-plugins_3.8.4+dfsg-3ubuntu3_amd64.deb ... Unpacking gdal-plugins:amd64 (3.8.4+dfsg-3ubuntu3) ... Selecting previously unselected package libaec0:amd64. Preparing to unpack .../113-libaec0_1.1.2-1build1_amd64.deb ... Unpacking libaec0:amd64 (1.1.2-1build1) ... Selecting previously unselected package libarpack2t64:amd64. Preparing to unpack .../114-libarpack2t64_3.9.1-1.1build2_amd64.deb ... Unpacking libarpack2t64:amd64 (3.9.1-1.1build2) ... Selecting previously unselected package libsuperlu6:amd64. Preparing to unpack .../115-libsuperlu6_6.0.1+dfsg1-1build1_amd64.deb ... Unpacking libsuperlu6:amd64 (6.0.1+dfsg1-1build1) ... Selecting previously unselected package libarmadillo12. Preparing to unpack .../116-libarmadillo12_1%3a12.6.7+dfsg-1build2_amd64.deb ... Unpacking libarmadillo12 (1:12.6.7+dfsg-1build2) ... Selecting previously unselected package libblosc1:amd64. Preparing to unpack .../117-libblosc1_1.21.5+ds-1build1_amd64.deb ... Unpacking libblosc1:amd64 (1.21.5+ds-1build1) ... Selecting previously unselected package libcfitsio10t64:amd64. Preparing to unpack .../118-libcfitsio10t64_4.3.1-1.1build2_amd64.deb ... Unpacking libcfitsio10t64:amd64 (4.3.1-1.1build2) ... Selecting previously unselected package libminizip1t64:amd64. Preparing to unpack .../119-libminizip1t64_1%3a1.3.dfsg-3.1ubuntu2.1_amd64.deb ... Unpacking libminizip1t64:amd64 (1:1.3.dfsg-3.1ubuntu2.1) ... Selecting previously unselected package libfreexl1:amd64. Preparing to unpack .../120-libfreexl1_2.0.0-1build2_amd64.deb ... Unpacking libfreexl1:amd64 (2.0.0-1build2) ... Selecting previously unselected package libfyba0t64:amd64. Preparing to unpack .../121-libfyba0t64_4.1.1-11build1_amd64.deb ... Unpacking libfyba0t64:amd64 (4.1.1-11build1) ... Selecting previously unselected package libgeos3.12.1t64:amd64. Preparing to unpack .../122-libgeos3.12.1t64_3.12.1-3build1_amd64.deb ... Unpacking libgeos3.12.1t64:amd64 (3.12.1-3build1) ... Selecting previously unselected package libgeos-c1t64:amd64. Preparing to unpack .../123-libgeos-c1t64_3.12.1-3build1_amd64.deb ... Unpacking libgeos-c1t64:amd64 (3.12.1-3build1) ... Selecting previously unselected package proj-data. Preparing to unpack .../124-proj-data_9.4.0-1build2_all.deb ... Unpacking proj-data (9.4.0-1build2) ... Selecting previously unselected package libproj25:amd64. Preparing to unpack .../125-libproj25_9.4.0-1build2_amd64.deb ... Unpacking libproj25:amd64 (9.4.0-1build2) ... Selecting previously unselected package libgeotiff5:amd64. Preparing to unpack .../126-libgeotiff5_1.7.1-5build1_amd64.deb ... Unpacking libgeotiff5:amd64 (1.7.1-5build1) ... Selecting previously unselected package libhdf4-0-alt:amd64. Preparing to unpack .../127-libhdf4-0-alt_4.2.16-4build1_amd64.deb ... Unpacking libhdf4-0-alt:amd64 (4.2.16-4build1) ... Selecting previously unselected package libsz2:amd64. Preparing to unpack .../128-libsz2_1.1.2-1build1_amd64.deb ... Unpacking libsz2:amd64 (1.1.2-1build1) ... Selecting previously unselected package libhdf5-103-1t64:amd64. Preparing to unpack .../129-libhdf5-103-1t64_1.10.10+repack-3.1ubuntu4_amd64.deb ... Unpacking libhdf5-103-1t64:amd64 (1.10.10+repack-3.1ubuntu4) ... Selecting previously unselected package liburiparser1:amd64. Preparing to unpack .../130-liburiparser1_0.9.7+dfsg-2build1_amd64.deb ... Unpacking liburiparser1:amd64 (0.9.7+dfsg-2build1) ... Selecting previously unselected package libkmlbase1t64:amd64. Preparing to unpack .../131-libkmlbase1t64_1.3.0-12build1_amd64.deb ... Unpacking libkmlbase1t64:amd64 (1.3.0-12build1) ... Selecting previously unselected package libkmldom1t64:amd64. Preparing to unpack .../132-libkmldom1t64_1.3.0-12build1_amd64.deb ... Unpacking libkmldom1t64:amd64 (1.3.0-12build1) ... Selecting previously unselected package libkmlengine1t64:amd64. Preparing to unpack .../133-libkmlengine1t64_1.3.0-12build1_amd64.deb ... Unpacking libkmlengine1t64:amd64 (1.3.0-12build1) ... Selecting previously unselected package libhdf5-hl-100t64:amd64. Preparing to unpack .../134-libhdf5-hl-100t64_1.10.10+repack-3.1ubuntu4_amd64.deb ... Unpacking libhdf5-hl-100t64:amd64 (1.10.10+repack-3.1ubuntu4) ... Selecting previously unselected package libnetcdf19t64:amd64. Preparing to unpack .../135-libnetcdf19t64_1%3a4.9.2-5ubuntu4_amd64.deb ... Unpacking libnetcdf19t64:amd64 (1:4.9.2-5ubuntu4) ... Selecting previously unselected package unixodbc-common. Preparing to unpack .../136-unixodbc-common_2.3.12-1ubuntu0.24.04.1_all.deb ... Unpacking unixodbc-common (2.3.12-1ubuntu0.24.04.1) ... Selecting previously unselected package libodbcinst2:amd64. Preparing to unpack .../137-libodbcinst2_2.3.12-1ubuntu0.24.04.1_amd64.deb ... Unpacking libodbcinst2:amd64 (2.3.12-1ubuntu0.24.04.1) ... Selecting previously unselected package libogdi4.1:amd64. Preparing to unpack .../138-libogdi4.1_4.1.1+ds-3build1_amd64.deb ... Unpacking libogdi4.1:amd64 (4.1.1+ds-3build1) ... Selecting previously unselected package libpoppler134:amd64. Preparing to unpack .../139-libpoppler134_24.02.0-1ubuntu9.1_amd64.deb ... Unpacking libpoppler134:amd64 (24.02.0-1ubuntu9.1) ... Selecting previously unselected package libqhull-r8.0:amd64. Preparing to unpack .../140-libqhull-r8.0_2020.2-6build1_amd64.deb ... Unpacking libqhull-r8.0:amd64 (2020.2-6build1) ... Selecting previously unselected package librttopo1:amd64. Preparing to unpack .../141-librttopo1_1.1.0-3build2_amd64.deb ... Unpacking librttopo1:amd64 (1.1.0-3build2) ... Selecting previously unselected package libspatialite8t64:amd64. Preparing to unpack .../142-libspatialite8t64_5.1.0-3build1_amd64.deb ... Unpacking libspatialite8t64:amd64 (5.1.0-3build1) ... Selecting previously unselected package libxerces-c3.2t64:amd64. Preparing to unpack .../143-libxerces-c3.2t64_3.2.4+debian-1.2ubuntu2_amd64.deb ... Unpacking libxerces-c3.2t64:amd64 (3.2.4+debian-1.2ubuntu2) ... Selecting previously unselected package libgdal34t64:amd64. Preparing to unpack .../144-libgdal34t64_3.8.4+dfsg-3ubuntu3_amd64.deb ... Unpacking libgdal34t64:amd64 (3.8.4+dfsg-3ubuntu3) ... Selecting previously unselected package libcharls2:amd64. Preparing to unpack .../145-libcharls2_2.4.2-2build2_amd64.deb ... Unpacking libcharls2:amd64 (2.4.2-2build2) ... Selecting previously unselected package libsocket++1:amd64. Preparing to unpack .../146-libsocket++1_1.12.13+git20131030.5d039ba-1build1_amd64.deb ... Unpacking libsocket++1:amd64 (1.12.13+git20131030.5d039ba-1build1) ... Selecting previously unselected package libgdcm3.0t64:amd64. Preparing to unpack .../147-libgdcm3.0t64_3.0.22-2.1ubuntu1_amd64.deb ... Unpacking libgdcm3.0t64:amd64 (3.0.22-2.1ubuntu1) ... Selecting previously unselected package libopencv-imgcodecs406t64:amd64. Preparing to unpack .../148-libopencv-imgcodecs406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ... Unpacking libopencv-imgcodecs406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Selecting previously unselected package libopencv-videoio406t64:amd64. Preparing to unpack .../149-libopencv-videoio406t64_4.6.0+dfsg-13.1ubuntu1_amd64.deb ... Unpacking libopencv-videoio406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Selecting previously unselected package libboost-iostreams1.83.0:amd64. Preparing to unpack .../150-libboost-iostreams1.83.0_1.83.0-2.1ubuntu3.1_amd64.deb ... Unpacking libboost-iostreams1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Selecting previously unselected package liblog4cplus-2.0.5t64:amd64. Preparing to unpack .../151-liblog4cplus-2.0.5t64_2.0.8-1.1ubuntu3_amd64.deb ... Unpacking liblog4cplus-2.0.5t64:amd64 (2.0.8-1.1ubuntu3) ... Selecting previously unselected package libopenvdb10.0t64:amd64. Preparing to unpack .../152-libopenvdb10.0t64_10.0.1-2.1build5_amd64.deb ... Unpacking libopenvdb10.0t64:amd64 (10.0.1-2.1build5) ... Selecting previously unselected package libopenimageio2.4t64:amd64. Preparing to unpack .../153-libopenimageio2.4t64_2.4.17.0+dfsg-1.1build4_amd64.deb ... Unpacking libopenimageio2.4t64:amd64 (2.4.17.0+dfsg-1.1build4) ... Selecting previously unselected package libosdcpu3.5.0t64:amd64. Preparing to unpack .../154-libosdcpu3.5.0t64_3.5.0-2.1build1_amd64.deb ... Unpacking libosdcpu3.5.0t64:amd64 (3.5.0-2.1build1) ... Selecting previously unselected package libosdgpu3.5.0t64:amd64. Preparing to unpack .../155-libosdgpu3.5.0t64_3.5.0-2.1build1_amd64.deb ... Unpacking libosdgpu3.5.0t64:amd64 (3.5.0-2.1build1) ... Selecting previously unselected package libpotrace0:amd64. Preparing to unpack .../156-libpotrace0_1.16-2build1_amd64.deb ... Unpacking libpotrace0:amd64 (1.16-2build1) ... Selecting previously unselected package libpugixml1v5:amd64. Preparing to unpack .../157-libpugixml1v5_1.14-0.1build1_amd64.deb ... Unpacking libpugixml1v5:amd64 (1.14-0.1build1) ... Selecting previously unselected package libspnav0. Preparing to unpack .../158-libspnav0_1.1-2_amd64.deb ... Unpacking libspnav0 (1.1-2) ... Selecting previously unselected package blender. Preparing to unpack .../159-blender_4.0.2+dfsg-1ubuntu8_amd64.deb ... Unpacking blender (4.0.2+dfsg-1ubuntu8) ... Selecting previously unselected package libcdparanoia0:amd64. Preparing to unpack .../160-libcdparanoia0_3.10.2+debian-14build3_amd64.deb ... Unpacking libcdparanoia0:amd64 (3.10.2+debian-14build3) ... Selecting previously unselected package libvisual-0.4-0:amd64. Preparing to unpack .../161-libvisual-0.4-0_0.4.2-2build1_amd64.deb ... Unpacking libvisual-0.4-0:amd64 (0.4.2-2build1) ... Selecting previously unselected package gstreamer1.0-plugins-base:amd64. Preparing to unpack .../162-gstreamer1.0-plugins-base_1.24.2-1ubuntu0.2_amd64.deb ... Unpacking gstreamer1.0-plugins-base:amd64 (1.24.2-1ubuntu0.2) ... Selecting previously unselected package libigdgmm12:amd64. Preparing to unpack .../163-libigdgmm12_22.3.17+ds1-1_amd64.deb ... Unpacking libigdgmm12:amd64 (22.3.17+ds1-1) ... Selecting previously unselected package intel-media-va-driver:amd64. Preparing to unpack .../164-intel-media-va-driver_24.1.0+dfsg1-1_amd64.deb ... Unpacking intel-media-va-driver:amd64 (24.1.0+dfsg1-1) ... Selecting previously unselected package libaacs0:amd64. Preparing to unpack .../165-libaacs0_0.11.1-2build1_amd64.deb ... Unpacking libaacs0:amd64 (0.11.1-2build1) ... Selecting previously unselected package libbdplus0:amd64. Preparing to unpack .../166-libbdplus0_0.2.0-3build1_amd64.deb ... Unpacking libbdplus0:amd64 (0.2.0-3build1) ... Selecting previously unselected package libdecor-0-plugin-1-gtk:amd64. Preparing to unpack .../167-libdecor-0-plugin-1-gtk_0.2.2-1build2_amd64.deb ... Unpacking libdecor-0-plugin-1-gtk:amd64 (0.2.2-1build2) ... Selecting previously unselected package libgphoto2-l10n. Preparing to unpack .../168-libgphoto2-l10n_2.5.31-2.1build2_all.deb ... Unpacking libgphoto2-l10n (2.5.31-2.1build2) ... Selecting previously unselected package librsvg2-common:amd64. Preparing to unpack .../169-librsvg2-common_2.58.0+dfsg-1build1_amd64.deb ... Unpacking librsvg2-common:amd64 (2.58.0+dfsg-1build1) ... Selecting previously unselected package libxnvctrl0:amd64. Preparing to unpack .../170-libxnvctrl0_510.47.03-0ubuntu4_amd64.deb ... Unpacking libxnvctrl0:amd64 (510.47.03-0ubuntu4) ... Selecting previously unselected package mesa-va-drivers:amd64. Preparing to unpack .../171-mesa-va-drivers_24.0.9-0ubuntu0.3_amd64.deb ... Unpacking mesa-va-drivers:amd64 (24.0.9-0ubuntu0.3) ... Selecting previously unselected package mesa-vdpau-drivers:amd64. Preparing to unpack .../172-mesa-vdpau-drivers_24.0.9-0ubuntu0.3_amd64.deb ... Unpacking mesa-vdpau-drivers:amd64 (24.0.9-0ubuntu0.3) ... Selecting previously unselected package i965-va-driver:amd64. Preparing to unpack .../173-i965-va-driver_2.4.1+dfsg1-1build2_amd64.deb ... Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1build2) ... Selecting previously unselected package va-driver-all:amd64. Preparing to unpack .../174-va-driver-all_2.20.0-2build1_amd64.deb ... Unpacking va-driver-all:amd64 (2.20.0-2build1) ... Selecting previously unselected package vdpau-driver-all:amd64. Preparing to unpack .../175-vdpau-driver-all_1.5-2build1_amd64.deb ... Unpacking vdpau-driver-all:amd64 (1.5-2build1) ... Selecting previously unselected package libhwloc-plugins:amd64. Preparing to unpack .../176-libhwloc-plugins_2.10.0-1build1_amd64.deb ... Unpacking libhwloc-plugins:amd64 (2.10.0-1build1) ... Selecting previously unselected package pocketsphinx-en-us. Preparing to unpack .../177-pocketsphinx-en-us_0.8.0+real5prealpha+1-15ubuntu5_all.deb ... Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-15ubuntu5) ... Selecting previously unselected package proj-bin. Preparing to unpack .../178-proj-bin_9.4.0-1build2_amd64.deb ... Unpacking proj-bin (9.4.0-1build2) ... Setting up libgme0:amd64 (0.6.3-7build1) ... Setting up libchromaprint1:amd64 (1.5.1-5) ... Setting up libssh-gcrypt-4:amd64 (0.10.6-2build2) ... Setting up libhwy1t64:amd64 (1.0.7-8.1build1) ... Setting up libtbbmalloc2:amd64 (2021.11.0-2ubuntu2) ... Setting up libudfread0:amd64 (1.1.2-1build1) ... Setting up libcdparanoia0:amd64 (3.10.2+debian-14build3) ... Setting up liblog4cplus-2.0.5t64:amd64 (2.0.8-1.1ubuntu3) ... Setting up libraw1394-11:amd64 (2.1.2-2build3) ... Setting up libfftw3-single3:amd64 (3.3.10-1ubuntu3) ... Setting up libspeex1:amd64 (1.2.1-2ubuntu2.24.04.1) ... Setting up proj-data (9.4.0-1build2) ... Setting up libshine3:amd64 (3.1.1-2build1) ... Setting up libcaca0:amd64 (0.99.beta20-4build2) ... Setting up libvpl2 (2023.3.0-1build1) ... Setting up libx264-164:amd64 (2:0.164.3108+git31e19f9-1) ... Setting up libtwolame0:amd64 (0.4.0-2build3) ... Setting up libmbedcrypto7t64:amd64 (2.28.8-1) ... Setting up libproj25:amd64 (9.4.0-1build2) ... Setting up libogdi4.1:amd64 (4.1.1+ds-3build1) ... Setting up libpoppler134:amd64 (24.02.0-1ubuntu9.1) ... Setting up libgsm1:amd64 (1.0.22-1build1) ... Setting up libcharls2:amd64 (2.4.2-2build2) ... Setting up libvisual-0.4-0:amd64 (0.4.2-2build1) ... Setting up libgeos3.12.1t64:amd64 (3.12.1-3build1) ... Setting up libsoxr0:amd64 (0.1.3-4build3) ... Setting up libzix-0-0:amd64 (0.4.2-2build1) ... Setting up libdcmtk17t64:amd64 (3.6.7-9.1build4) ... Setting up libcodec2-1.2:amd64 (1.2.0-2build1) ... Setting up libgeos-c1t64:amd64 (3.12.1-3build1) ... Setting up libyaml-cpp0.8:amd64 (0.8.0+dfsg-6build1) ... Setting up libmysofa1:amd64 (1.3.2+dfsg-2ubuntu2) ... Setting up libxcb-shape0:amd64 (1.15-1ubuntu2) ... Setting up libcdio19t64:amd64 (2.1.0-4.1ubuntu1.2) ... Setting up libboost-thread1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Setting up proj-bin (9.4.0-1build2) ... Setting up libqhull-r8.0:amd64 (2020.2-6build1) ... Setting up libsvtav1enc1d1:amd64 (1.7.0+dfsg-2build1) ... Setting up libigdgmm12:amd64 (22.3.17+ds1-1) ... Setting up libjemalloc2:amd64 (5.3.0-2build1) ... Setting up libmpg123-0t64:amd64 (1.32.5-1ubuntu1.1) ... Setting up libxerces-c3.2t64:amd64 (3.2.4+debian-1.2ubuntu2) ... Setting up libcjson1:amd64 (1.7.17-1) ... Setting up libxvidcore4:amd64 (2:1.3.7-1build1) ... Setting up libgphoto2-l10n (2.5.31-2.1build2) ... Setting up librav1e0:amd64 (0.7.1-2) ... Setting up libaec0:amd64 (1.1.2-1build1) ... Setting up gdal-data (3.8.4+dfsg-3ubuntu3) ... Setting up libpugixml1v5:amd64 (1.14-0.1build1) ... Setting up libgeotiff5:amd64 (1.7.1-5build1) ... Setting up poppler-data (0.4.12-1) ... Setting up liborc-0.4-0t64:amd64 (1:0.4.38-1ubuntu0.1) ... Setting up libcdio-cdda2t64:amd64 (10.2+2.0.1-1.1build2) ... Setting up libxnvctrl0:amd64 (510.47.03-0ubuntu4) ... Setting up librist4:amd64 (0.2.10+dfsg-2) ... Setting up librsvg2-2:amd64 (2.58.0+dfsg-1build1) ... Setting up libblas3:amd64 (3.12.0-3build1.1) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode Setting up libplacebo338:amd64 (6.338.2-2build1) ... Setting up libcfitsio10t64:amd64 (4.3.1-1.1build2) ... Setting up libva2:amd64 (2.20.0-2build1) ... Setting up libboost-iostreams1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Setting up libopus0:amd64 (1.4-1build1) ... Setting up libexif12:amd64 (0.6.24-1build2) ... Setting up libcdio-paranoia2t64:amd64 (10.2+2.0.1-1.1build2) ... Setting up libdc1394-25:amd64 (2.2.6-4build1) ... Setting up intel-media-va-driver:amd64 (24.1.0+dfsg1-1) ... Setting up libxv1:amd64 (2:1.0.11-1.1build1) ... Setting up libhwloc15:amd64 (2.10.0-1build1) ... Setting up libimath-3-1-29t64:amd64 (3.1.9-3.1ubuntu2) ... Setting up libunibreak5:amd64 (5.1-2build1) ... Setting up unixodbc-common (2.3.12-1ubuntu0.24.04.1) ... Setting up libsocket++1:amd64 (1.12.13+git20131030.5d039ba-1build1) ... Setting up libaacs0:amd64 (0.11.1-2build1) ... Setting up libjxl0.7:amd64 (0.7.0-10.2ubuntu6) ... Setting up librsvg2-common:amd64 (2.58.0+dfsg-1build1) ... Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-15ubuntu5) ... Setting up libhdf4-0-alt:amd64 (4.2.16-4build1) ... Setting up libx265-199:amd64 (3.5-2build1) ... Setting up libosdcpu3.5.0t64:amd64 (3.5.0-2.1build1) ... Setting up libsndio7.0:amd64 (1.9.0-0.3build3) ... Setting up libgif7:amd64 (5.2.2-1ubuntu1) ... Setting up liburiparser1:amd64 (0.9.7+dfsg-2build1) ... Setting up libbdplus0:amd64 (0.2.0-3build1) ... Setting up libvidstab1.1:amd64 (1.1.0-2build1) ... Setting up libfyba0t64:amd64 (4.1.1-11build1) ... Setting up libvpx9:amd64 (1.14.0-1ubuntu2.1) ... Setting up librttopo1:amd64 (1.1.0-3build2) ... Setting up libsrt1.5-gnutls:amd64 (1.5.3-1build2) ... Setting up libflite1:amd64 (2.2-6build3) ... Setting up libdav1d7:amd64 (1.4.1-1build1) ... Setting up libva-drm2:amd64 (2.20.0-2build1) ... Setting up blender-data (4.0.2+dfsg-1ubuntu8) ... Setting up libminizip1t64:amd64 (1:1.3.dfsg-3.1ubuntu2.1) ... Setting up ocl-icd-libopencl1:amd64 (2.3.2-1build1) ... Setting up libasyncns0:amd64 (0.8-6build4) ... Setting up libvdpau1:amd64 (1.5-2build1) ... Setting up libbs2b0:amd64 (3.1.0+dfsg-7build1) ... Setting up libtheora0:amd64 (1.1.1+dfsg.1-16.1build3) ... Setting up libblosc1:amd64 (1.21.5+ds-1build1) ... Setting up libdecor-0-0:amd64 (0.2.2-1build2) ... Setting up libzimg2:amd64 (3.0.5+ds1-1build1) ... Setting up libopenal-data (1:1.23.1-4build1) ... Setting up libpystring0:amd64 (1.1.4-1build1) ... Setting up libgphoto2-port12t64:amd64 (2.5.31-2.1build2) ... Setting up libflac12t64:amd64 (1.4.3+ds-2.1ubuntu2) ... Setting up mesa-va-drivers:amd64 (24.0.9-0ubuntu0.3) ... Setting up libbluray2:amd64 (1:1.3.4-1build1) ... Setting up libkmlbase1t64:amd64 (1.3.0-12build1) ... Setting up libsamplerate0:amd64 (0.2.2-4build1) ... Setting up libva-x11-2:amd64 (2.20.0-2build1) ... Setting up libdecor-0-plugin-1-gtk:amd64 (0.2.2-1build2) ... Setting up libopenmpt0t64:amd64 (0.7.3-1.1build3) ... Setting up libzvbi-common (0.2.42-2) ... Setting up libmp3lame0:amd64 (3.100-6build1) ... Setting up libsz2:amd64 (1.1.2-1build1) ... Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1build2) ... Setting up libvorbisenc2:amd64 (1.3.7-1build3) ... Setting up libspnav0 (1.1-2) ... Setting up libiec61883-0:amd64 (1.2.0-6build1) ... Setting up gdal-plugins:amd64 (3.8.4+dfsg-3ubuntu3) ... Setting up libserd-0-0:amd64 (0.32.2-1) ... Setting up libpotrace0:amd64 (1.16-2build1) ... Setting up libavc1394-0:amd64 (0.5.4-5build3) ... Setting up libgdcm3.0t64:amd64 (3.0.22-2.1ubuntu1) ... Setting up mesa-vdpau-drivers:amd64 (24.0.9-0ubuntu0.3) ... Setting up libosdgpu3.5.0t64:amd64 (3.5.0-2.1build1) ... Setting up libodbcinst2:amd64 (2.3.12-1ubuntu0.24.04.1) ... Setting up liblapack3:amd64 (3.12.0-3build1.1) ... update-alternatives: using /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/x86_64-linux-gnu/liblapack.so.3 (liblapack.so.3-x86_64-linux-gnu) in auto mode Setting up libarpack2t64:amd64 (3.9.1-1.1build2) ... Setting up libzvbi0t64:amd64 (0.2.42-2) ... Setting up libboost-locale1.83.0:amd64 (1.83.0-2.1ubuntu3.1) ... Setting up libgstreamer-plugins-base1.0-0:amd64 (1.24.2-1ubuntu0.2) ... Setting up libavutil58:amd64 (7:6.1.1-3ubuntu5) ... Setting up libopenal1:amd64 (1:1.23.1-4build1) ... Setting up libsuperlu6:amd64 (6.0.1+dfsg1-1build1) ... Setting up libhwloc-plugins:amd64 (2.10.0-1build1) ... Setting up libtbbbind-2-5:amd64 (2021.11.0-2ubuntu2) ... Setting up libkmldom1t64:amd64 (1.3.0-12build1) ... Setting up gstreamer1.0-plugins-base:amd64 (1.24.2-1ubuntu0.2) ... Setting up libass9:amd64 (1:0.17.1-2build1) ... Setting up libswresample4:amd64 (7:6.1.1-3ubuntu5) ... Setting up va-driver-all:amd64 (2.20.0-2build1) ... Setting up libgphoto2-6t64:amd64 (2.5.31-2.1build2) ... No diversion 'diversion of /lib/udev/hwdb.d/20-libgphoto2-6.hwdb to /lib/udev/hwdb.d/20-libgphoto2-6.hwdb.usr-is-merged by usr-is-merged', none removed. No diversion 'diversion of /lib/udev/rules.d/60-libgphoto2-6.rules to /lib/udev/rules.d/60-libgphoto2-6.rules.usr-is-merged by usr-is-merged', none removed. Setting up libopencolorio2.1t64:amd64 (2.1.3+dfsg-1.1build3) ... Setting up libopenexr-3-1-30:amd64 (3.1.5-5.1build3) ... Setting up libavcodec60:amd64 (7:6.1.1-3ubuntu5) ... Setting up librubberband2:amd64 (3.3.0+dfsg-2build1) ... Setting up libjack-jackd2-0:amd64 (1.9.21~dfsg-3ubuntu3) ... Setting up vdpau-driver-all:amd64 (1.5-2build1) ... Setting up libfreexl1:amd64 (2.0.0-1build2) ... Setting up libsord-0-0:amd64 (0.16.16-2build1) ... Setting up libpostproc57:amd64 (7:6.1.1-3ubuntu5) ... Setting up libsratom-0-0:amd64 (0.6.16-1build1) ... Setting up libsndfile1:amd64 (1.2.2-1ubuntu5) ... Setting up libhdf5-103-1t64:amd64 (1.10.10+repack-3.1ubuntu4) ... Setting up liblilv-0-0:amd64 (0.24.22-1build1) ... Setting up libarmadillo12 (1:12.6.7+dfsg-1build2) ... Setting up libswscale7:amd64 (7:6.1.1-3ubuntu5) ... Setting up libspatialite8t64:amd64 (5.1.0-3build1) ... Setting up libhdf5-hl-100t64:amd64 (1.10.10+repack-3.1ubuntu4) ... Setting up libnetcdf19t64:amd64 (1:4.9.2-5ubuntu4) ... Setting up libpulse0:amd64 (1:16.1+dfsg1-2ubuntu10.1) ... Setting up libtbb12:amd64 (2021.11.0-2ubuntu2) ... Setting up libavformat60:amd64 (7:6.1.1-3ubuntu5) ... Setting up libkmlengine1t64:amd64 (1.3.0-12build1) ... Setting up libsphinxbase3t64:amd64 (0.8+5prealpha+1-17build2) ... Setting up libgdal34t64:amd64 (3.8.4+dfsg-3ubuntu3) ... Setting up libembree4-4:amd64 (4.3.0+dfsg-2) ... Setting up libsdl2-2.0-0:amd64 (2.30.0+dfsg-1build3) ... Setting up libopencv-core406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Setting up libopenvdb10.0t64:amd64 (10.0.1-2.1build5) ... Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-15ubuntu5) ... Setting up libopencv-imgproc406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Setting up libopencv-imgcodecs406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Setting up libavfilter9:amd64 (7:6.1.1-3ubuntu5) ... Setting up libopencv-videoio406t64:amd64 (4.6.0+dfsg-13.1ubuntu1) ... Setting up libavdevice60:amd64 (7:6.1.1-3ubuntu5) ... Setting up libopenimageio2.4t64:amd64 (2.4.17.0+dfsg-1.1build4) ... Setting up blender (4.0.2+dfsg-1ubuntu8) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for libc-bin (2.39-0ubuntu8.3) ... Processing triggers for man-db (2.12.0-4build2) ... Processing triggers for udev (255.4-1ubuntu8.4) ... Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.10+dfsg-3ubuntu3.1) ... Processing triggers for fontconfig (2.15.0-1.1ubuntu2) ... Running kernel seems to be up-to-date. Restarting services... Service restarts being deferred: systemctl restart runner-provisioner.service No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host. Blender 4.0.2 OSError: Python file "/home/runner/work/polyglot/polyglot/build.py" could not be opened: No such file or directory Blender quit
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.1.43 (76800b04) + @types/node@20.12.11 + @types/vscode@1.89.0 + @vscode/vsce@2.26.1 + npm-check-updates@17.0.0-5 + typescript@5.5.0-dev.20240514 + vscode@1.1.37 190 packages installed [878.00ms] core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / End: core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot/apps/spiral / End: vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps/spiral / End: vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot/apps / End: spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps / End: spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot / End: apps/spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot / End: apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot / End: polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot / End: polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work / End: polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner/work / End: polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner / End: work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner / End: work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent: / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.GetFullPath / Path: ./LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode core.GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE core.EnsureSymbolicLink / Parent: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / End: core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot/apps/spiral / End: vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps/spiral / End: vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot/apps / End: spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/apps / End: spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot / End: apps/spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot/polyglot / End: apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot / End: polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner/work/polyglot / End: polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work / End: polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner/work / End: polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home/runner / End: work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home/runner / End: work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent_target: / path_target: / parent: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.ResolveLink / parent: / Path: /home / End: runner/work/polyglot/polyglot/apps/spiral/vscode core.GetFullPath / Path: ../../../LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode core.GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/LICENSE core.ResolveLink / Path: /home/runner/work/polyglot/polyglot/LICENSE / End: core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot/polyglot / End: LICENSE core.ResolveLink / Path: /home/runner/work/polyglot/polyglot / End: LICENSE core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work/polyglot / End: polyglot/LICENSE core.ResolveLink / Path: /home/runner/work/polyglot / End: polyglot/LICENSE core.ResolveLink / parent_target: / path_target: / parent: /home/runner/work / End: polyglot/polyglot/LICENSE core.ResolveLink / Path: /home/runner/work / End: polyglot/polyglot/LICENSE core.ResolveLink / parent_target: / path_target: / parent: /home/runner / End: work/polyglot/polyglot/LICENSE core.ResolveLink / Path: /home/runner / End: work/polyglot/polyglot/LICENSE core.ResolveLink / parent_target: / path_target: / parent: /home / End: runner/work/polyglot/polyglot/LICENSE core.ResolveLink / Path: /home / End: runner/work/polyglot/polyglot/LICENSE core.ResolveLink / parent: / Path: /home / End: runner/work/polyglot/polyglot/LICENSE core.GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE / Target: /home/runner/work/polyglot/polyglot/LICENSE / ResolvedTarget: /home/runner/work/polyglot/polyglot/LICENSE core.EnsureSymbolicLink / Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE out/src/extension.js 2.4kb out/media/cellOutputScrollButtons.js 1.9kb ⚡ Done in 4ms Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 43.42KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.1.43 (76800b04) + @types/node@20.12.2 + npm-check-updates@17.0.0-5 + typescript@5.5.0-dev.20240401 + nft.storage@7.1.1 219 packages installed [571.00ms] Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0
Resolving dependency graph...
Outdated packages found:
Group: Main
* Argu 6.2.4 -> 6.2.5
* Expecto 11.0.0-alpha2 -> 11.0.0-alpha4
* Expecto.FsCheck 11.0.0-alpha2 -> 11.0.0-alpha4-fscheck2
* FsCheck 3.0.0-rc3 -> 2.16.6
* Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 9.0.0
* Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 9.0.0
* Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Client 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Common 7.0 -> 9.0.0
* Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 9.0.0
* Microsoft.Extensions.Features 7.0 -> 9.0.0
* System.Management 7.0 -> 9.0.0
Total time taken: 3 seconds
CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml
chat_contract_tests
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 Removed Removed Normal ---
android-tzdata 0.1.1 Removed --- Normal cfg(target_os = "android")
android_system_properties 0.1.5 Removed --- Normal cfg(target_os = "android")
autocfg 1.4.0 Removed --- Build ---
autocfg 1.4.0 Removed Removed Build ---
bumpalo 3.16.0 Removed --- Normal ---
bumpalo 3.16.0 Removed Removed Normal ---
cc 1.2.4 Removed --- Build ---
cfg-if 1.0.0 Removed --- Normal ---
cfg-if 1.0.0 Removed Removed Normal ---
chrono 0.4.39 Removed --- Normal ---
core-foundation-sys 0.8.7 Removed --- Normal cfg(any(target_os = "macos", target_os = "ios"))
getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.15.2 0.15.2 Normal ---
iana-time-zone 0.1.61 Removed --- Normal cfg(unix)
iana-time-zone-haiku 0.1.2 Removed --- Normal cfg(target_os = "haiku")
indexmap 1.9.3 2.7.0 2.7.0 Normal ---
jobserver 0.1.32 Removed --- Normal ---
js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys 0.3.76 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.168 Removed --- Normal ---
libc 0.2.168 Removed --- Normal cfg(unix)
libc 0.2.168 Removed Removed Normal cfg(unix)
libm 0.2.11 Removed --- Normal ---
log 0.4.22 Removed --- Normal ---
log 0.4.22 Removed Removed Normal ---
near-sandbox-utils 0.8.0 0.9.0 --- Build ---
near-sandbox-utils 0.9.0 --- 0.8.0 Normal ---
num-traits 0.2.19 Removed --- Normal ---
once_cell 1.20.2 Removed --- Normal ---
once_cell 1.20.2 Removed Removed Normal ---
once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2 1.0.92 Removed --- Normal ---
proc-macro2 1.0.92 Removed Removed Normal ---
quote 1.0.37 Removed --- Normal ---
quote 1.0.37 Removed Removed Normal ---
serde 1.0.216 Removed --- Normal ---
serde_derive 1.0.216 Removed --- Normal ---
shlex 1.3.0 Removed --- Normal ---
syn 2.0.90 Removed --- Normal ---
syn 2.0.90 Removed Removed Normal ---
unicode-ident 1.0.14 Removed --- Normal ---
unicode-ident 1.0.14 Removed Removed Normal ---
version_check 0.9.5 Removed Removed Build ---
wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.99 Removed --- Normal ---
wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen 0.2.99 Removed Removed Normal ---
wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.99 Removed --- Normal ---
wasm-bindgen-backend 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro 0.2.99 Removed --- Normal ---
wasm-bindgen-macro 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support 0.2.99 Removed --- Normal ---
wasm-bindgen-macro-support 0.2.99 Removed Removed Normal ---
wasm-bindgen-shared 0.2.99 Removed --- Normal ---
wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
windows-core 0.52.0 Removed --- Normal cfg(target_os = "windows")
windows-targets 0.52.6 Removed --- Normal ---
windows-targets 0.52.6 Removed --- Normal cfg(windows)
windows_aarch64_gnullvm 0.52.6 Removed --- Normal aarch64-pc-windows-gnullvm
windows_aarch64_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm 0.52.6 Removed --- Normal i686-pc-windows-gnullvm
windows_i686_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm 0.52.6 Removed --- Normal x86_64-pc-windows-gnullvm
windows_x86_64_msvc 0.52.6 Removed --- Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
spiral_wasm
================
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
ahash 0.7.8 Removed Removed Normal ---
android-tzdata 0.1.1 Removed --- Normal cfg(target_os = "android")
android_system_properties 0.1.5 Removed --- Normal cfg(target_os = "android")
autocfg 1.4.0 Removed --- Build ---
autocfg 1.4.0 Removed Removed Build ---
bumpalo 3.16.0 Removed --- Normal ---
bumpalo 3.16.0 Removed Removed Normal ---
cc 1.2.4 Removed --- Build ---
cfg-if 1.0.0 Removed --- Normal ---
cfg-if 1.0.0 Removed Removed Normal ---
chrono 0.4.39 Removed --- Normal ---
core-foundation-sys 0.8.7 Removed --- Normal cfg(any(target_os = "macos", target_os = "ios"))
getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
hashbrown 0.12.3 0.15.2 0.15.2 Normal ---
iana-time-zone 0.1.61 Removed --- Normal cfg(unix)
iana-time-zone-haiku 0.1.2 Removed --- Normal cfg(target_os = "haiku")
indexmap 1.9.3 2.7.0 2.7.0 Normal ---
jobserver 0.1.32 Removed --- Normal ---
js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
js-sys 0.3.76 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
libc 0.2.168 Removed --- Normal ---
libc 0.2.168 Removed --- Normal cfg(unix)
libc 0.2.168 Removed Removed Normal cfg(unix)
libm 0.2.11 Removed --- Normal ---
log 0.4.22 Removed --- Normal ---
log 0.4.22 Removed Removed Normal ---
near-sandbox-utils 0.8.0 0.9.0 --- Build ---
near-sandbox-utils 0.9.0 --- 0.8.0 Normal ---
num-traits 0.2.19 Removed --- Normal ---
once_cell 1.20.2 Removed --- Normal ---
once_cell 1.20.2 Removed Removed Normal ---
once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none")))
proc-macro2 1.0.92 Removed --- Normal ---
proc-macro2 1.0.92 Removed Removed Normal ---
quote 1.0.37 Removed --- Normal ---
quote 1.0.37 Removed Removed Normal ---
serde 1.0.216 Removed --- Normal ---
serde_derive 1.0.216 Removed --- Normal ---
shlex 1.3.0 Removed --- Normal ---
syn 2.0.90 Removed --- Normal ---
syn 2.0.90 Removed Removed Normal ---
unicode-ident 1.0.14 Removed --- Normal ---
unicode-ident 1.0.14 Removed Removed Normal ---
version_check 0.9.5 Removed Removed Build ---
wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi")
wasm-bindgen 0.2.99 Removed --- Normal ---
wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
wasm-bindgen 0.2.99 Removed Removed Normal ---
wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
wasm-bindgen-backend 0.2.99 Removed --- Normal ---
wasm-bindgen-backend 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro 0.2.99 Removed --- Normal ---
wasm-bindgen-macro 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support 0.2.99 Removed --- Normal ---
wasm-bindgen-macro-support 0.2.99 Removed Removed Normal ---
wasm-bindgen-shared 0.2.99 Removed --- Normal ---
wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
windows-core 0.52.0 Removed --- Normal cfg(target_os = "windows")
windows-targets 0.52.6 Removed --- Normal ---
windows-targets 0.52.6 Removed --- Normal cfg(windows)
windows_aarch64_gnullvm 0.52.6 Removed --- Normal aarch64-pc-windows-gnullvm
windows_aarch64_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows_i686_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_i686_gnullvm 0.52.6 Removed --- Normal i686-pc-windows-gnullvm
windows_i686_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows_x86_64_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows_x86_64_gnullvm 0.52.6 Removed --- Normal x86_64-pc-windows-gnullvm
windows_x86_64_msvc 0.52.6 Removed --- Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
borsh-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
borsh-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
bs58->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
darling_core->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_core->syn 2.0.90 2.0.95 2.0.95 Normal ---
darling_macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
futures-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
iana-time-zone-haiku->cc 1.2.4 1.2.7 1.2.7 Build ---
indexmap->serde 1.0.216 1.0.217 1.0.217 Normal ---
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
near-account-id->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-gas->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->near-sdk-macros 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-sdk-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-sdk-macros->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk-macros->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-sdk-macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
near-token->serde 1.0.216 1.0.217 1.0.217 Normal ---
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_spanned->serde 1.0.216 1.0.217 1.0.217 Normal ---
strum_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
strum_macros->rustversion 1.0.18 1.0.19 1.0.19 Normal ---
strum_macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
toml_datetime->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->winnow 0.6.20 0.6.22 0.6.22 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.95 2.0.95 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.95 2.0.95 Normal ---
wee_alloc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(unix, not(target_arch = "wasm32")))
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
actix->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
actix->tokio 1.42.0 1.43.0 1.43.0 Normal ---
actix-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
actix-macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
actix-rt->tokio 1.42.0 1.43.0 1.43.0 Normal ---
actix_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
actix_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
ahash->getrandom 0.2.15 --- Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi"))
ahash->once_cell 1.20.2 --- Removed Normal cfg(not(all(target_arch = "arm", target_os = "none")))
ahash->version_check 0.9.5 --- Removed Build ---
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
android_system_properties->libc 0.2.168 Removed Removed Normal ---
anyhow 1.0.94 1.0.95 1.0.95 Normal ---
async-channel->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
async-io->rustix 0.37.27 0.37.28 0.37.28 Normal ---
async-io->rustix 0.38.42 0.38.43 0.38.43 Normal ---
async-lock->event-listener 5.3.1 5.4.0 5.4.0 Normal ---
async-lock->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
async-process->rustix 0.38.42 0.38.43 0.38.43 Normal cfg(unix)
async-recursion->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-recursion->syn 2.0.90 2.0.95 2.0.95 Normal ---
async-signal->rustix 0.38.42 0.38.43 0.38.43 Normal cfg(unix)
async-stream->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
async-stream-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-stream-impl->syn 2.0.90 2.0.95 2.0.95 Normal ---
async-trait->quote 1.0.37 1.0.38 1.0.38 Normal ---
async-trait->syn 2.0.90 2.0.95 2.0.95 Normal ---
atty->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
axum->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
axum->hyper 0.14.31 0.14.32 0.14.32 Normal ---
axum->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
axum->rustversion 1.0.18 1.0.19 1.0.19 Development ---
axum->serde 1.0.216 1.0.217 1.0.217 Normal ---
axum-core->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
axum-core->rustversion 1.0.18 1.0.19 1.0.19 Build ---
backtrace->cc 1.2.4 1.2.7 1.2.7 Build ---
backtrace->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(all(windows, target_env = "msvc", not(target_vendor = "uwp"))))
binary-install->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
bip39->serde 1.0.216 1.0.217 1.0.217 Normal ---
borsh-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
borsh-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
bs58->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
bytecheck_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
bytesize->serde 1.0.216 1.0.217 1.0.217 Normal ---
bzip2->libc 0.2.168 0.2.169 0.2.169 Normal ---
bzip2-sys->cc 1.2.4 1.2.7 1.2.7 Build ---
bzip2-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
camino->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo-near->clap 4.5.23 4.5.24 4.5.24 Normal ---
cargo-near->env_logger 0.11.5 0.11.6 0.11.6 Normal ---
cargo-near->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
cargo-platform->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo-util->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
cargo-util->libc 0.2.168 0.2.169 0.2.169 Normal ---
cargo-util->tempfile 3.14.0 3.15.0 3.15.0 Normal ---
cargo_metadata->serde 1.0.216 1.0.217 1.0.217 Normal ---
cargo_metadata->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
cc->jobserver 0.1.32 Removed Removed Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
cc->libc 0.2.168 Removed Removed Normal cfg(unix)
cc->shlex 1.3.0 Removed Removed Normal ---
chrono->android-tzdata 0.1.1 Removed Removed Normal cfg(target_os = "android")
chrono->iana-time-zone 0.1.61 Removed Removed Normal cfg(unix)
chrono->js-sys 0.3.76 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->num-traits 0.2.19 Removed Removed Normal ---
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
chrono->serde 1.0.216 Removed Removed Normal ---
chrono->wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi"))))
chrono->windows-targets 0.52.6 Removed Removed Normal cfg(windows)
clap->clap_builder 4.5.23 4.5.24 4.5.24 Normal ---
clap->clap_derive 4.5.18 4.5.24 4.5.24 Normal ---
clap_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
clap_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
commoncrypto-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
console->encode_unicode 0.3.6 1.0.0 1.0.0 Normal cfg(windows)
console->lazy_static 1.5.0 Removed Removed Normal ---
console->libc 0.2.168 0.2.169 0.2.169 Normal ---
console->unicode-width 0.1.14 0.2.0 0.2.0 Normal ---
console->windows-sys 0.52.0 0.59.0 0.59.0 Normal cfg(windows)
core-foundation->libc 0.2.168 0.2.169 0.2.169 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
crossterm->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
csv->serde 1.0.216 1.0.217 1.0.217 Normal ---
curve25519-dalek-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
curve25519-dalek-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
darling_core->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_core->syn 2.0.90 2.0.95 2.0.95 Normal ---
darling_macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
darling_macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
deranged->serde 1.0.216 1.0.217 1.0.217 Normal ---
derivative->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_arbitrary->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_arbitrary->syn 2.0.90 2.0.95 2.0.95 Normal ---
derive_more->quote 1.0.37 1.0.38 1.0.38 Normal ---
derive_more->syn 2.0.90 2.0.95 2.0.95 Normal ---
dirs-sys->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
dirs-sys-next->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
displaydoc->quote 1.0.37 1.0.38 1.0.38 Normal ---
displaydoc->syn 2.0.90 2.0.95 2.0.95 Normal ---
elementtree->xml-rs 0.8.24 0.8.25 0.8.25 Normal ---
enum-map-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
enum-map-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
enumflags2->serde 1.0.216 1.0.217 1.0.217 Normal ---
enumflags2_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
enumflags2_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
env_logger->env_filter 0.1.2 0.1.3 0.1.3 Normal ---
errno->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "hermit")
event-listener->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
event-listener-strategy->event-listener 5.3.1 5.4.0 5.4.0 Normal ---
event-listener-strategy->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
filetime->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
flate2->miniz_oxide 0.8.0 0.8.2 0.8.2 Normal ---
fs2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
futures-lite->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
futures-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
getrandom->cfg-if 1.0.0 --- Removed Normal ---
getrandom->js-sys 0.3.76 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
getrandom->libc 0.2.168 0.2.169 Removed Normal cfg(unix)
getrandom->wasi 0.11.0+wasi-snapshot-preview1 --- Removed Normal cfg(target_os = "wasi")
getrandom->wasm-bindgen 0.2.99 --- Removed Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown"))
h2->tokio 1.42.0 1.43.0 1.43.0 Normal ---
hashbrown->ahash 0.7.8 --- Removed Normal ---
hashbrown->serde 1.0.216 1.0.217 1.0.217 Normal ---
hermit-abi->libc 0.2.168 0.2.169 0.2.169 Normal ---
hex->serde 1.0.216 1.0.217 1.0.217 Normal ---
home->windows-sys 0.52.0 0.59.0 0.59.0 Normal cfg(windows)
http-body->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
http-body-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
hyper->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
hyper->tokio 1.42.0 1.43.0 1.43.0 Normal ---
hyper-rustls->hyper 1.5.1 1.5.2 1.5.2 Normal ---
hyper-rustls->tokio 1.42.0 1.43.0 1.43.0 Normal ---
hyper-timeout->hyper 0.14.31 0.14.32 0.14.32 Normal ---
hyper-timeout->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
hyper-timeout->tokio 1.42.0 1.43.0 1.43.0 Normal ---
hyper-tls->hyper 1.5.1 1.5.2 1.5.2 Normal ---
hyper-tls->tokio 1.42.0 1.43.0 1.43.0 Normal ---
hyper-util->hyper 1.5.1 1.5.2 1.5.2 Normal ---
hyper-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
hyper-util->tokio 1.42.0 1.43.0 1.43.0 Normal ---
iana-time-zone->android_system_properties 0.1.5 Removed Removed Normal cfg(target_os = "android")
iana-time-zone->core-foundation-sys 0.8.7 Removed Removed Normal cfg(any(target_os = "macos", target_os = "ios"))
iana-time-zone->iana-time-zone-haiku 0.1.2 Removed Removed Normal cfg(target_os = "haiku")
iana-time-zone->js-sys 0.3.76 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown"))
iana-time-zone->windows-core 0.52.0 Removed Removed Normal cfg(target_os = "windows")
iana-time-zone-haiku->cc 1.2.4 1.2.7 1.2.7 Build ---
iana-time-zone-haiku->cc 1.2.4 Removed Removed Build ---
icu_provider_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
icu_provider_macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
indexmap->autocfg 1.4.0 --- Removed Build ---
indexmap->equivalent 1.0.1 Removed --- Normal ---
indexmap->hashbrown 0.12.3 --- 0.15.2 Normal ---
indexmap->hashbrown 0.15.2 0.12.3 --- Normal ---
indexmap->serde 1.0.216 1.0.217 1.0.217 Normal ---
indicatif->console 0.15.8 0.15.10 0.15.10 Normal ---
interactive-clap-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
io-lifetimes->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
is-terminal->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(unix, target_os = "wasi"))
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
jobserver->libc 0.2.168 Removed Removed Normal cfg(unix)
js-sys->once_cell 1.20.2 --- Removed Normal ---
js-sys->once_cell 1.20.2 Removed Removed Normal ---
js-sys->wasm-bindgen 0.2.99 --- Removed Normal ---
js-sys->wasm-bindgen 0.2.99 Removed Removed Normal ---
json-patch->serde 1.0.216 1.0.217 1.0.217 Normal ---
json-patch->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
jsonptr->serde 1.0.216 1.0.217 1.0.217 Normal ---
jsonptr->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
libredox->libc 0.2.168 0.2.169 0.2.169 Normal ---
linked-hash-map->serde 1.0.216 1.0.217 1.0.217 Normal ---
linux-keyutils->libc 0.2.168 0.2.169 0.2.169 Normal ---
memmap2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
mio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "hermit")
mio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_os = "wasi")
native-tls->libc 0.2.168 0.2.169 0.2.169 Normal cfg(target_vendor = "apple")
native-tls->security-framework-sys 2.12.1 2.14.0 2.14.0 Normal cfg(target_vendor = "apple")
native-tls->tempfile 3.14.0 3.15.0 3.15.0 Development ---
near-abi->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-abi-client->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-abi-client->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-abi-client-impl->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-abi-client-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-abi-client-impl->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-account-id->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-async->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-async->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-async->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-async-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-async-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
near-chain-configs->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-chain-configs->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-chain-configs->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-cli-rs->clap 4.5.23 4.5.24 4.5.24 Normal ---
near-cli-rs->open 5.3.1 5.3.2 5.3.2 Normal ---
near-cli-rs->reqwest 0.12.9 0.12.12 0.12.12 Normal ---
near-cli-rs->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-cli-rs->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-cli-rs->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-config-utils->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-crypto->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-crypto->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-gas->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-client->reqwest 0.12.9 0.12.12 0.12.12 Normal ---
near-jsonrpc-client->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-client->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-jsonrpc-primitives->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-jsonrpc-primitives->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-o11y->clap 4.5.23 4.5.24 4.5.24 Normal ---
near-o11y->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-o11y->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-o11y->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-parameters->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-performance-metrics->libc 0.2.168 0.2.169 0.2.169 Normal ---
near-performance-metrics->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-primitives->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-primitives->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-primitives->serde_with 3.11.0 3.12.0 3.12.0 Normal ---
near-primitives-core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-core->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-rpc-error-core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-core->syn 2.0.90 2.0.95 2.0.95 Normal ---
near-rpc-error-macro->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-rpc-error-macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
near-sandbox-utils 0.12.0 0.13.0 0.13.0 Normal ---
near-sandbox-utils->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
near-sandbox-utils->chrono 0.4.39 Removed Removed Normal ---
near-sandbox-utils->home 0.5.9 0.5.11 0.5.11 Normal ---
near-sandbox-utils->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-sdk 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->near-sdk-macros 5.6.0 5.7.0 5.7.0 Normal ---
near-sdk->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-sdk-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
near-sdk-macros->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-sdk-macros->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-sdk-macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
near-socialdb-client->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-socialdb-client->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-time->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-time->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near-token->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-workspaces->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
near-workspaces->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
near-workspaces->near-sandbox-utils 0.8.0 0.9.0 0.9.0 Build ---
near-workspaces->reqwest 0.12.9 0.12.12 0.12.12 Normal ---
near-workspaces->serde 1.0.216 1.0.217 1.0.217 Normal ---
near-workspaces->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near-workspaces->tempfile 3.14.0 3.15.0 3.15.0 Normal ---
near-workspaces->tokio 1.42.0 1.43.0 1.43.0 Normal ---
near_schemafy_core->serde 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_core->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
near_schemafy_lib->quote 1.0.37 1.0.38 1.0.38 Normal ---
near_schemafy_lib->serde 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_lib->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
near_schemafy_lib->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
nix->libc 0.2.168 0.2.169 0.2.169 Normal ---
num-rational->serde 1.0.216 1.0.217 1.0.217 Normal ---
num-traits->autocfg 1.4.0 Removed Removed Build ---
num-traits->libm 0.2.11 Removed Removed Normal ---
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
open->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
openssl->libc 0.2.168 0.2.169 0.2.169 Normal ---
openssl-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
openssl-macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
openssl-src->cc 1.2.4 1.2.7 1.2.7 Normal ---
openssl-sys->cc 1.2.4 1.2.7 1.2.7 Build ---
openssl-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
opentelemetry->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
opentelemetry-otlp->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
opentelemetry-otlp->tokio 1.42.0 1.43.0 1.43.0 Normal ---
opentelemetry_sdk->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
opentelemetry_sdk->glob 0.3.1 0.3.2 0.3.2 Normal ---
opentelemetry_sdk->ordered-float 4.5.0 4.6.0 4.6.0 Normal ---
opentelemetry_sdk->tokio 1.42.0 1.43.0 1.43.0 Normal ---
ordered-stream->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
parking_lot_core->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
pin-project->pin-project-internal 1.1.7 1.1.8 1.1.8 Normal ---
pin-project-internal->quote 1.0.37 1.0.38 1.0.38 Normal ---
pin-project-internal->syn 2.0.90 2.0.95 2.0.95 Normal ---
polling->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
polling->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal cfg(windows)
polling->rustix 0.38.42 0.38.43 0.38.43 Normal cfg(any(unix, target_os = "fuchsia", target_os = "vxworks"))
proc-macro-error->quote 1.0.37 1.0.38 1.0.38 Normal ---
proc-macro-error-attr->quote 1.0.37 1.0.38 1.0.38 Normal ---
proc-macro2->unicode-ident 1.0.14 --- Removed Normal ---
proc-macro2->unicode-ident 1.0.14 Removed Removed Normal ---
prost-derive->anyhow 1.0.94 1.0.95 1.0.95 Normal ---
prost-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
prost-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
ptr_meta_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
quote->proc-macro2 1.0.92 --- Removed Normal ---
quote->proc-macro2 1.0.92 Removed Removed Normal ---
rand->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
reqwest->hyper 1.5.1 1.5.2 1.5.2 Normal cfg(not(target_arch = "wasm32"))
reqwest->hyper-rustls 0.27.3 0.27.5 0.27.5 Normal cfg(not(target_arch = "wasm32"))
reqwest->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal cfg(not(target_arch = "wasm32"))
reqwest->serde 1.0.216 1.0.217 1.0.217 Normal ---
reqwest->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
reqwest->tokio 1.42.0 1.43.0 1.43.0 Normal cfg(not(target_arch = "wasm32"))
ring->cc 1.2.4 1.2.7 1.2.7 Build ---
ring->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(any(target_os = "android", target_os = "linux"), any(target_arch = "aarch64", target_arch = "arm")))
rkyv->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
rkyv_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
rust_decimal->serde 1.0.216 1.0.217 1.0.217 Normal ---
rust_decimal->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
rustix->libc 0.2.168 0.2.169 0.2.169 Development ---
rustix->linux-raw-sys 0.4.14 0.4.15 0.4.15 Normal cfg(all(any(target_os = "android", target_os = "linux"), any(rustix_use_libc, miri, not(all(target_os = "linux", any(target_endian = "little", target_arch = "s390x"), any(target_arch = "arm", all(target_arch = "aarch64", target_pointer_width = "64"), target_arch = "riscv64", all(rustix_use_experimental_asm, target_arch = "powerpc64"), all(rustix_use_experimental_asm, target_arch = "s390x"), all(rustix_use_experimental_asm, target_arch = "mips"), all(rustix_use_experimental_asm, target_arch = "mips32r6"), all(rustix_use_experimental_asm, target_arch = "mips64"), all(rustix_use_experimental_asm, target_arch = "mips64r6"), target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64")))))))
schemars->serde 1.0.216 1.0.217 1.0.217 Normal ---
schemars->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
schemars_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
schemars_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
scroll_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
scroll_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
secp256k1-sys->cc 1.2.4 1.2.7 1.2.7 Build ---
secret-service->serde 1.0.216 1.0.217 1.0.217 Normal ---
security-framework->libc 0.2.168 0.2.169 0.2.169 Normal ---
security-framework->security-framework-sys 2.12.1 2.14.0 2.14.0 Normal ---
security-framework-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
semver->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde->serde_derive 1.0.216 Removed Removed Normal ---
serde_derive->proc-macro2 1.0.92 Removed Removed Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->quote 1.0.37 Removed Removed Normal ---
serde_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_derive->syn 2.0.90 Removed Removed Normal ---
serde_derive_internals->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive_internals->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_json 1.0.133 1.0.135 1.0.135 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_repr->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_repr->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_spanned->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_urlencoded->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->indexmap 1.9.3 --- 2.7.0 Normal ---
serde_with->indexmap 2.7.0 1.9.3 --- Normal ---
serde_with->serde 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_with->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
serde_with->serde_with_macros 3.11.0 3.12.0 3.12.0 Normal ---
serde_with_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_with_macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_yaml->serde 1.0.216 1.0.217 1.0.217 Normal ---
signal-hook->libc 0.2.168 0.2.169 0.2.169 Normal ---
signal-hook-mio->libc 0.2.168 0.2.169 0.2.169 Normal ---
signal-hook-registry->libc 0.2.168 0.2.169 0.2.169 Normal ---
smart-default->quote 1.0.37 1.0.38 1.0.38 Normal ---
smart-default->syn 2.0.90 2.0.95 2.0.95 Normal ---
socket2->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
string_cache->serde 1.0.216 1.0.217 1.0.217 Normal ---
strum_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
strum_macros->rustversion 1.0.18 1.0.19 1.0.19 Normal ---
strum_macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
symbolic-debuginfo->serde 1.0.216 1.0.217 1.0.217 Normal ---
symbolic-debuginfo->serde_json 1.0.133 1.0.135 1.0.135 Normal ---
syn->proc-macro2 1.0.92 --- Removed Normal ---
syn->proc-macro2 1.0.92 Removed Removed Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
syn->quote 1.0.37 1.0.38 Removed Normal ---
syn->quote 1.0.37 Removed Removed Normal ---
syn->unicode-ident 1.0.14 --- Removed Normal ---
syn->unicode-ident 1.0.14 Removed Removed Normal ---
synstructure->quote 1.0.37 1.0.38 1.0.38 Normal ---
synstructure->syn 2.0.90 2.0.95 2.0.95 Normal ---
system-configuration-sys->libc 0.2.168 0.2.169 0.2.169 Normal ---
tar->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
tar->xattr 1.3.1 1.4.0 1.4.0 Normal cfg(unix)
tempfile->rustix 0.38.42 0.38.43 0.38.43 Normal cfg(any(unix, target_os = "wasi"))
term->rustversion 1.0.18 1.0.19 1.0.19 Normal cfg(windows)
thiserror-impl->quote 1.0.37 1.0.38 1.0.38 Normal ---
thiserror-impl->syn 2.0.90 2.0.95 2.0.95 Normal ---
time->serde 1.0.216 1.0.217 1.0.217 Normal ---
tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
tokio->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tokio->tokio-macros 2.4.0 2.5.0 2.5.0 Normal ---
tokio-io-timeout->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tokio-io-timeout->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio-macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
tokio-macros->syn 2.0.90 2.0.95 2.0.95 Normal ---
tokio-native-tls->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio-retry->pin-project 1.1.7 1.1.8 1.1.8 Normal ---
tokio-retry->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio-rustls->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio-stream->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tokio-stream->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tokio-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tokio-util->tokio 1.42.0 1.43.0 1.43.0 Normal ---
toml->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_datetime->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->serde 1.0.216 1.0.217 1.0.217 Normal ---
toml_edit->winnow 0.6.20 0.6.22 0.6.22 Normal ---
tonic->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
tonic->hyper 0.14.31 0.14.32 0.14.32 Normal ---
tonic->pin-project 1.1.7 1.1.8 1.1.8 Normal ---
tonic->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tower->pin-project 1.1.7 1.1.8 1.1.8 Normal ---
tower->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tower->tokio 1.42.0 1.43.0 1.43.0 Normal ---
tracing->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
tracing-attributes->quote 1.0.37 1.0.38 1.0.38 Normal ---
tracing-attributes->syn 2.0.90 2.0.95 2.0.95 Normal ---
uds_windows->tempfile 3.14.0 3.15.0 3.15.0 Normal cfg(windows)
unicode-normalization->tinyvec 1.8.0 1.8.1 1.8.1 Normal ---
url->serde 1.0.216 1.0.217 1.0.217 Normal ---
vte_generate_state_changes->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen->cfg-if 1.0.0 --- Removed Normal ---
wasm-bindgen->cfg-if 1.0.0 Removed Removed Normal ---
wasm-bindgen->once_cell 1.20.2 --- Removed Normal ---
wasm-bindgen->once_cell 1.20.2 Removed Removed Normal ---
wasm-bindgen->wasm-bindgen-macro 0.2.99 --- Removed Normal ---
wasm-bindgen->wasm-bindgen-macro 0.2.99 Removed Removed Normal ---
wasm-bindgen-backend->bumpalo 3.16.0 --- Removed Normal ---
wasm-bindgen-backend->bumpalo 3.16.0 Removed Removed Normal ---
wasm-bindgen-backend->log 0.4.22 --- Removed Normal ---
wasm-bindgen-backend->log 0.4.22 Removed Removed Normal ---
wasm-bindgen-backend->proc-macro2 1.0.92 --- Removed Normal ---
wasm-bindgen-backend->proc-macro2 1.0.92 Removed Removed Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-backend->quote 1.0.37 Removed Removed Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.95 2.0.95 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.95 Removed Normal ---
wasm-bindgen-backend->syn 2.0.90 Removed Removed Normal ---
wasm-bindgen-backend->wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasm-bindgen-backend->wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-macro->quote 1.0.37 Removed Removed Normal ---
wasm-bindgen-macro->wasm-bindgen-macro-support 0.2.99 --- Removed Normal ---
wasm-bindgen-macro->wasm-bindgen-macro-support 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support->proc-macro2 1.0.92 --- Removed Normal ---
wasm-bindgen-macro-support->proc-macro2 1.0.92 Removed Removed Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 Removed Normal ---
wasm-bindgen-macro-support->quote 1.0.37 Removed Removed Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.95 2.0.95 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.95 Removed Normal ---
wasm-bindgen-macro-support->syn 2.0.90 Removed Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-backend 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-backend 0.2.99 Removed Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-shared 0.2.99 --- Removed Normal ---
wasm-bindgen-macro-support->wasm-bindgen-shared 0.2.99 Removed Removed Normal ---
wasmparser->serde 1.0.216 1.0.217 1.0.217 Normal ---
wee_alloc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(all(unix, not(target_arch = "wasm32")))
windows-core->windows-targets 0.52.6 Removed Removed Normal ---
windows-targets->windows_aarch64_gnullvm 0.52.6 Removed Removed Normal aarch64-pc-windows-gnullvm
windows-targets->windows_aarch64_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_i686_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_i686_gnullvm 0.52.6 Removed Removed Normal i686-pc-windows-gnullvm
windows-targets->windows_i686_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib)))
windows-targets->windows_x86_64_gnullvm 0.52.6 Removed Removed Normal x86_64-pc-windows-gnullvm
windows-targets->windows_x86_64_msvc 0.52.6 Removed Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib)))
xattr->libc 0.2.168 0.2.169 0.2.169 Normal cfg(any(target_os = "freebsd", target_os = "netbsd"))
xattr->linux-raw-sys 0.4.14 0.4.15 0.4.15 Normal cfg(target_os = "linux")
xattr->rustix 0.38.42 0.38.43 0.38.43 Normal ---
xdg-home->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
yoke->serde 1.0.216 1.0.217 1.0.217 Normal ---
yoke-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
yoke-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
zbus->async-trait 0.1.83 0.1.85 0.1.85 Normal ---
zbus->serde 1.0.216 1.0.217 1.0.217 Normal ---
zbus_macros->quote 1.0.37 1.0.38 1.0.38 Normal ---
zbus_names->serde 1.0.216 1.0.217 1.0.217 Normal ---
zerocopy-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerocopy-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
zerofrom-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerofrom-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
zerovec-derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zerovec-derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
zstd-safe->libc 0.2.168 0.2.169 0.2.169 Normal ---
zstd-sys->cc 1.2.4 1.2.7 1.2.7 Build ---
zvariant->libc 0.2.168 0.2.169 0.2.169 Normal ---
zvariant->serde 1.0.216 1.0.217 1.0.217 Normal ---
zvariant_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
zvariant_utils->quote 1.0.37 1.0.38 1.0.38 Normal ---
CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml
Name Project Compat Latest Kind Platform
---- ------- ------ ------ ---- --------
android_system_properties->libc 0.2.168 0.2.169 0.2.169 Normal ---
cc->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
chrono->serde 1.0.216 1.0.217 1.0.217 Normal ---
cpufeatures->libc 0.2.168 0.2.169 0.2.169 Normal aarch64-linux-android
futures-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
futures-macro->syn 2.0.90 2.0.95 2.0.95 Normal ---
futures-util->pin-project-lite 0.2.15 0.2.16 0.2.16 Normal ---
getrandom->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
iana-time-zone-haiku->cc 1.2.4 1.2.7 1.2.7 Build ---
jobserver->libc 0.2.168 0.2.169 0.2.169 Normal cfg(unix)
num_cpus->libc 0.2.168 0.2.169 0.2.169 Normal cfg(not(windows))
serde->serde_derive 1.0.216 1.0.217 1.0.217 Normal ---
serde_derive->quote 1.0.37 1.0.38 1.0.38 Normal ---
serde_derive->syn 2.0.90 2.0.95 2.0.95 Normal ---
serde_json 1.0.133 1.0.135 1.0.135 Normal ---
serde_json->serde 1.0.216 1.0.217 1.0.217 Normal ---
syn->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-backend->syn 2.0.90 2.0.95 2.0.95 Normal ---
wasm-bindgen-macro->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->quote 1.0.37 1.0.38 1.0.38 Normal ---
wasm-bindgen-macro-support->syn 2.0.90 2.0.95 2.0.95 Normal ---
CheckJson / json: /home/runner/work/polyglot/polyglot
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/package.json
@types/node ~20.12 → ~22.10
npm-check-updates ~17.0.0-5 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json
@types/node ~20.12 → ~22.10
nft.storage ~7.1 → ~7.2
npm-check-updates ~17.0.0-5 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json
@playwright/test 1.44.0 → 1.50.0-beta-1731498714000
@types/chrome ~0.0.268 → ~0.0.291
npm-check-updates ~17.0.0-5 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode
$ npm-check-updates --target greatest
Using bun
Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json
@types/node ~20.12 → ~22.10
@types/vscode ~1.89 → ~1.96
@vscode/vsce ~2.26 → ~3.2-5
npm-check-updates ~17.0.0-5 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json
CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin
$ npm-check-updates --target greatest
Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json
@microsoft/signalr ^8.0.0 → ^8.0.7
@types/vscode ~1.95 → ~1.96
npm-check-updates ~17.1.11 → ~17.1.13
Run ncu --target greatest -u to upgrade package.json